26.02.2014 Aufrufe

ADMIN Magazin Gestapelt - Schneller und sicherer mit RAID (Vorschau)

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!