How To Build mod_fastcgi For Apache2 On OpenSUSE 12.2

Version 1.0
Author: Falko Timme
Follow me on Twitter

mod_fastcgi is needed for Apache prior to 2.4 to work with PHP-FPM. There is an apache2-mod_fastcgi package for OpenSUSE, but unfortunately it is buggy: it does not allow you to use the FastCgiExternalServer directive inside a vhost, although the official mod_fastcgi documentation says that this is allowed. This guide explains how to build a new mod_fastcgi from the sources for Apache2 on an OpenSUSE 12.2 system to fix this problem.

I do not issue any guarantee that this will work for you!


Preliminary Note

mod_fastcgi can be used to make Apache2 work together with PHP-FPM (see Using PHP5-FPM With Apache2 On OpenSUSE 12.2). Unfortunately, if you decide to use the FastCgiExternalServer directive inside a vhost configuration, Apache will refuse to start, and

apache2ctl -t

gives you this error:

server1:/etc/apache2/sites-available # apache2ctl -t
Syntax error on line 57 of /etc/apache2/sites-enabled/
FastCgiExternalServer cannot occur within <VirtualHost> section
server1:/etc/apache2/sites-available #

The official mod_fastcgi documentation says that FastCgiExternalServer can be used in the global server configuration and also in vhost configurations, so this is a bug in OpenSUSE's apache2-mod_fastcgi package. We can build our own mod_fastcgi as follows:


Building mod_fastcgi

First make sure that apache2-devel is installed:

zypper install apache2-devel

Download the latest mod_fastcgi sources and build them as follows:

tar xvfz mod_fastcgi-2.4.6.tar.gz
cd mod_fastcgi-2.4.6/
cp Makefile.AP2 Makefile
ln -s /usr/include/apache2-worker/mpm.h /usr/include/apache2/
make top_dir=/usr/share/apache2
make top_dir=/usr/share/apache2 install

Make sure you have the line

LoadModule fastcgi_module modules/

in /etc/apache2/sysconfig.d/loadmodule.conf.

Finally restart Apache:

/etc/init.d/apache2 restart

That's it. You've just replaced OpenSUSE's mod_fastcgi module with your own one.


Share this page:

0 Comment(s)