Apache muss die eingehende Anfrage an PHP-FPM weiterreichen. Dies übernimmt das Apache-Modul
»mod_fastcgi
«
. Windows-Administratoren bekommen es als fertige DLL-Datei auf der FastCGI-Seite
[4]
. Unter Linux hilft ein Blick in den Paketmanager: Bei Debian 6 steckt das Modul im Paket
»libapache2-mod-fastcgi
«
(aus dem
»non-free
«
-Repository). Dabei sollte man darauf achten, nicht das fast gleichlautende Modul
»mod_fcgid
«
zu erwischen. Dieses rüstet FastCGI unter Apache 2 nach, bringt aber seinen eigenen Prozess-Manager mit und kann eingehende Anfragen nicht an einen schon laufenden Interpreter wie PHP-FPM weiterreichen. Folglich ist es in diesem Fall nutzlos.
Wer Debian 6 verwendet und noch keinen Apache 2 installiert hat, spielt mit folgendem Kommandozeilenbefehl die notwendigen Pakete ein:
apt-get install apache2-mpm-worker libapache2-mod-fastcgi
Als Nächstes aktiviert der Befehl
»a2enmod fastcgi
«
das Modul. Das Modul
»mod_php5
«
lässt sich so deaktivieren:
»a2dismod php5
«
.
Jetzt muss man nur noch in der Apache-Konfigurationsdatei
»httpd.conf
«
die Zeilen aus
Listing 2
ergänzen. Unter Debian 6 empfiehlt es sich, die Anweisungen in einer eigenen Datei, etwa mit dem Namen
»php5-fcgi.conf
«
, im Verzeichnis
»/etc/apache2/conf.d
«
abzulegen. Entscheidend ist die Zeile
»FastCgiExternalServer
«
, die Apache anweist, die Anfragen an den TCP-Port 9000 weiterzureichen. Sofern zuvor
»mod_php
«
aktiv war, muss man dessen Konfiguration noch löschen beziehungsweise auskommentieren.
Listing 2
Apache-2-Konfiguration für PHP-FPM
Anschließend startet
»/etc/init.d/apache2 restart
«
den Webserver neu. Zur Probe sollte man jetzt eine simple PHP-Datei
»info.php
«
mit dem Inhalt:
<?php phpinfo(); ?>
im Document-Root ablegen, bei Debian 6 im Verzeichnis
»/var/www
«
. Steuert man jetzt diese Datei im Browser an, sollte sich PHP-FPM wie in
Abbildung 5
als Interpreter zu erkennen geben.
In
Listing 1
übergibt der Webserver die eingehenden Anfragen über den TCP-Port 9000 an PHP-FPM. Wenn Webserver und PHP-FPM auf der gleichen Maschine laufen, bietet sich auch die Verwendung von Unix-Sockets an. Damit verringert sich der TCP-Overhead. Um PHP-FPM am Unix-Socket
»/tmp/php5-fpm.socket
«
lauschen zu lassen, muss in der Pool-Konfigurationsdatei aus
Listing 1
die Zeile
»listen
«
durch
listen = /tmp/php5-fpm.socket
ausgetauscht werden. Als Nächstes ersetzt man die Zeile
»listen.allowed_clients
«
mit der Dreierbande:
listen.owner = www-data listen.group = www-data listen.mode = 0660
Sie gibt den Besitzer (
»listen.owner
«
), die Gruppe (
»listen.group
«
) und die Zugriffsrechte (
»listen.mode
«
) des Sockets vor. Anschließend startet dieser Befehl PHP-FPM neu:
/etc/init.d/php5-fpm restart
Damit sollte jetzt die Datei
»/tmp/php5-fpm.sock
«
existieren, dem Benutzer
»www-data
«
gehören und die Rechte
»0660
«
besitzen.
In der Konfiguration von Apache 2 ist die mit
»FastCgiExternalServer
«
beginnende Zeile durch
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /tmp/php5-fpm.sock -pass-headerAuthorization
auszutauschen. Anschließend startet man auch den Apache-Server nochmal neu.