Lighttpd 1.4 auf Unix-Systemen

Dieser Abschnitt enthält Notizen und Hinweise zur Installtion von Lighttpd 1.4 für PHP auf Unix-Systemen.

Vor der Installation von Lighttpd wird empfohlen, die Installationsanleitung der » Lighttpd-Dokumentation zu lesen.

FastCGI ist die bevorzugte SAPI, um PHP mit Lighttpd zu verbinden. FastCGI wird in php-cgi automagisch aktiviert.

Lighttpd einen php-Prozess starten lassen

Um Lighttpd so zu konfigurieren, dass es sich mit PHP verbindet und FastCGI-Prozesse startet, muss die Datei lighttpd.conf editiert werden. Auf einem lokalen System werden vorzugsweise Sockets für die Verbindung zu FastCGI-Prozessen verwendet.

Beispiel #1 Ein Teil der lighttpd.conf

 server.modules += ( "mod_fastcgi" ) fastcgi.server = ( ".php" => (( "socket" => "/tmp/php.socket", "bin-path" => "/usr/local/bin/php-cgi", "bin-environment" => ( "PHP_FCGI_CHILDREN" => "16", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "min-procs" => 1, "max-procs" => 1, "idle-timeout" => 20 )) ) 

Die Direktive bin-path erlaubt es Lighttpd, FastCGI-Prozesse dynamisch zu erzeugen. PHP erzeugt die Kindprozesse entsprechend der Umgebungsvariable PHP_FCGI_CHILDREN. Die Direktive bin-environment definiert die Umgebung für die erzeugten Prozesse. PHP beendet einen Kindprozess, nachdem die in PHP_FCGI_MAX_REQUESTS festgelegte Anzahl von Anfragen erreicht ist. Die Direktiven min-procs und max-procs sollten bei PHP generell vermieden werden. PHP verwaltet seine eigenen Kindprozesse und OpCode-Caches wie APC nutzen nur die von PHP verwalteten Kindprozesse. Wenn min-procs auf einen Wert größer 1 gesetzt ist, wird die Anzahl der PHP-Responder mit PHP_FCGI_CHILDREN multipliziert (2 min-procs * 16 Kindprozesse ergibt 32 Responder).

Prozesse mit spawn-fcgi erzeugen

Lighttpd stellt das Programm spawn-fcgi zur Verfügung, um das Erzeugen von FastCGI-Prozessen zu vereinfachen.

php-cgi starten

Es ist möglich, Prozesse ohne spawn-fcgi zu starten, jedoch ist dafür etwas Arbeit nötig. Die Umgebungsvariable PHP_FCGI_CHILDREN definiert, wieviele Kindprozesse PHP erzeugt, um eingehende Anfragen zu bearbeiten. PHP_FCGI_MAX_REQUESTS definiert, wie lange (in Anfragen) jeder Kindprozess existiert. Hier ist ein einfaches Bash-Skript, um das Erzeugen von PHP-Respondern zu vereinfachen.

Beispiel #2 FastCGI-Responder erzeugen

 #!/bin/sh # Ort des php-cgi-Programms PHP=/usr/local/bin/php-cgi # Ort der PID-Datei PHP_PID=/tmp/php.pid # Bindung an eine Adresse #FCGI_BIND_ADDRESS=10.0.1.1:10000 # Bindung an einen Domain-Socket FCGI_BIND_ADDRESS=/tmp/php.sock PHP_FCGI_CHILDREN=16 PHP_FCGI_MAX_REQUESTS=10000 env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \ PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \ $PHP -b $FCGI_BIND_ADDRESS & echo $! > "$PHP_PID" 

Mit entfernten FCGI-Instanzen verbinden

Um Anwendungen besser zu skalieren, können FastCGI-Instanzen auf mehreren entfernten Rechnern gestartet werden.

Beispiel #3 Mit entfernten FCGI-Instanzen verbinden

 fastcgi.server = ( ".php" => (( "host" => "10.0.0.2", "port" => 1030 ), ( "host" => "10.0.0.3", "port" => 1030 )) ) 
To Top