Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
PHP-FPM<br />
Netzwerk<br />
Abbildung 4: Wie in Listing 1 vorgegeben, laufen hier<br />
17 PHP-Interpreter-Prozesse.<br />
legt man diese in der Konfigurationsdatei<br />
des Pools (wie in Listing 1) ab, allerdings<br />
in einer etwas gewöhnungsbedürftigen<br />
Notation. So muss der Name der PHP-<br />
Einstellung zwischen den eckigen Klammern<br />
von »php_admin_value[]« stehen:<br />
php_admin_value[memory_li<strong>mit</strong>] = 32M<br />
Diese Zeile setzt das »memory_li<strong>mit</strong>« auf<br />
32 MByte. Boolesche Werte (also Einstellungen,<br />
die etwas an- <strong>und</strong> ausschalten)<br />
lassen sich analog <strong>mit</strong> »php_admin_<br />
flag[]« überschreiben, hier ein Beispiel<br />
<strong>mit</strong> »log_errors«:<br />
php_admin_flag[log_errors] = on<br />
Nachdem die Konfiguration steht, startet<br />
der folgende Aufruf PHP-FPM:<br />
/etc/init.d/php5‐fpm start<br />
Abbildung 5: »phpinfo()« verrät, dass PHP-FPM die<br />
Anfrage beantwortet hat.<br />
Die Interpreter-Prozesse laufen jetzt im<br />
Hintergr<strong>und</strong> <strong>und</strong> warten dort auf Anfragen.<br />
Prüfen kann man das etwa <strong>mit</strong><br />
»netstat ‐tapn«. In der Ausgabe sollte wie<br />
in Abbildung 3 PHP-FPM auftauchen.<br />
»ps ‐A« sollte zudem die angegebene Anzahl<br />
PHP-Interpreter-Prozesse <strong>mit</strong> dem<br />
Namen »php‐fpm« anzeigen (Abbildung<br />
4). Als Nächstes gilt es, den Webserver<br />
auf PHP-FPM aufmerksam zu machen.<br />
Indianerhäuptling<br />
Apache muss die eingehende Anfrage an<br />
PHP-FPM weiterreichen. Dies übernimmt<br />
das Apache-Modul »mod_fastcgi«. Windows-Administratoren<br />
bekommen es als<br />
fertige DLL-Datei auf der FastCGI-Seite<br />
[4]. Unter Linux hilft ein Blick in den<br />
Paketmanager: Bei Debian 6 steckt das<br />
Modul im Paket »libapache2‐mod‐fastcgi«<br />
(aus dem »non‐free«-Repository). Dabei<br />
sollte man darauf achten, nicht das fast<br />
gleichlautende Modul »mod_fcgid« zu<br />
erwischen. Dieses rüstet FastCGI unter<br />
Apache 2 nach, bringt aber seinen eigenen<br />
Prozess-Manager <strong>mit</strong> <strong>und</strong> kann eingehende<br />
Anfragen nicht an einen schon<br />
laufenden Interpreter wie PHP-FPM weiterreichen.<br />
Folglich ist es in diesem Fall<br />
nutzlos.<br />
Wer Debian 6 verwendet <strong>und</strong> noch keinen<br />
Apache 2 installiert hat, spielt <strong>mit</strong><br />
folgendem Kommandozeilenbefehl die<br />
notwendigen Pakete ein:<br />
apt‐get install apache2‐mpm‐worker U<br />
libapache2‐mod‐fastcgi<br />
Nginx<br />
In der Praxis kombinieren viele Administratoren<br />
PHP-FPM <strong>mit</strong> dem schlanken <strong>und</strong> schnellen<br />
Webserver Nginx. Da<strong>mit</strong> die beiden zusammenarbeiten,<br />
muss die Ngnix-Konfiguration<br />
die Zeilen<br />
location ~ \.php$ {<br />
fastcgi_pass 127.0.0.1:9000;<br />
include<br />
fastcgi_params;<br />
# ...<br />
}<br />
enthalten. Wenn Sockets zum Einsatz kommen,<br />
ersetzt man die Zeile »fastcgi_pass« gegen:<br />
fastcgi_pass unix:/tmp/php5‐fpm.socket<br />
»/tmp/php5‐fpm.socket« ist dabei der Name<br />
des Sockets.<br />
Als Nächstes aktiviert der Befehl »a2enmod<br />
fastcgi« das Modul. Das Modul<br />
»mod_php5« lässt sich so deaktivieren:<br />
»a2dismod php5«.<br />
Jetzt muss man nur noch in der Apache-<br />
Konfigurationsdatei »httpd.conf« die Zeilen<br />
aus Listing 2 ergänzen. Unter Debian<br />
6 empfiehlt es sich, die Anweisungen in<br />
einer eigenen Datei, etwa <strong>mit</strong> dem Namen<br />
»php5‐fcgi.conf«, im Verzeichnis »/etc/<br />
apache2/conf.d« abzulegen. Entscheidend<br />
ist die Zeile »FastCgiExternalServer«,<br />
die Apache anweist, die Anfragen<br />
an den TCP-Port 9000 weiterzureichen.<br />
Sofern zuvor »mod_php« aktiv war, muss<br />
man dessen Konfiguration noch löschen<br />
beziehungsweise auskommentieren.<br />
Anschließend startet »/etc/init.d/apache2<br />
restart« den Webserver neu. Zur Probe<br />
sollte man jetzt eine simple PHP-Datei<br />
»info.php« <strong>mit</strong> dem Inhalt:<br />
<br />
im Document-Root ablegen, bei Debian 6<br />
im Verzeichnis »/var/www«. Steuert man<br />
jetzt diese Datei im Browser an, sollte<br />
sich PHP-FPM wie in Abbildung 5 als<br />
Interpreter zu erkennen geben.<br />
Sockel<br />
In Listing 1 übergibt der Webserver die<br />
eingehenden Anfragen über den TCP-Port<br />
9000 an PHP-FPM. Wenn Webserver <strong>und</strong><br />
PHP-FPM auf der gleichen Maschine<br />
laufen, bietet sich auch die Verwendung<br />
von Unix-Sockets an. Da<strong>mit</strong> verringert<br />
sich der TCP-Overhead. Um PHP-FPM<br />
am Unix-Socket »/tmp/php5‐fpm.socket«<br />
lauschen zu lassen, muss in der Pool-<br />
Konfigurationsdatei aus Listing 1 die<br />
Zeile »listen« durch<br />
listen = /tmp/php5‐fpm.socket<br />
ausgetauscht werden. Als Nächstes<br />
ersetzt man die Zeile »listen.allowed_<br />
clients« <strong>mit</strong> der Dreierbande:<br />
Listing 2: Apache-2-Konfiguration für PHP-FPM<br />
01 <br />
02 AddHandler php5‐fcgi .php<br />
03 Action php5‐fcgi /php5‐fcgi<br />
04 Alias /php5‐fcgi /usr/lib/cgi‐bin/php5‐fcgi<br />
05 FastCgiExternalServer /usr/lib/cgi‐bin/<br />
php5‐fcgi ‐host 127.0.0.1:9000 ‐pass‐header<br />
Authorization<br />
06 <br />
www.admin-magazin.de<br />
Admin<br />
Ausgabe 06-2012<br />
31