Cette section contient des informations spécifiques sur l'installation de PHP avec Lighttpd 1.4 sur les systèmes Unix.
Reportez-vous à » Lighttpd pour une installation correcte de Lighttpd avant de continuer.
FastCGI est le SAPI préféré pour connecter PHP et Lighttpd. FastCGI active automatiquement php-cgi.
Pour configurer Lighttpd afin qu'il se connecte à PHP et appelle le processus FastCGI, vous devez éditez le fichier lighttpd.conf. Une connexion par sockets est la solution préférée pour les systèmes locaux.
Exemple #1 Portion du fichier 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 )) )
La directive bin-path permet à lighttpd d'appeler le processus FastCGI
dynamiquement. PHP appellera les fils suivant la variable d'environnement
PHP_FCGI_CHILDREN. La directive bin-environment
définit l'environnement
pour les processus appelés. PHP terminera un processus fils lorsque le
nombre de requêtes spécifié par PHP_FCGI_MAX_REQUESTS a été atteint.
Les directives min-procs
et max-procs
peuvent généralement être ignorées
avec PHP. PHP gère ces propres fils et caches opcode comme APC qui partage
uniquement les fils gérés par PHP. Si min-procs
est défini à quelque chose
de supérieur à 1, le nombre total de réponses PHP sera multiplié par
PHP_FCGI_CHILDREN (2 min-procs * 16 fils, donne 32 réponses).
Lighttpd fournit un programme appelé spawn-fcgi afin de rendre plus facile les appels des processus FastCGI.
Il est possible d'appeler des processus sans spawn-fcgi, avec un minimum de configuration. La variable d'environnement PHP_FCGI_CHILDREN contrôle le nombre de fils que PHP appelle pour gérer les demandes. La variable d'environnement PHP_FCGI_MAX_REQUESTS détermine la durée de vie, en nombre de requêtes, de chaque fils. Voici un script bash simple qui permet d'aider les appels aux répondeurs PHP.
Exemple #2 Appel des répondeurs FastCGI
#!/bin/sh # Localisation du binaire php-cgi PHP=/usr/local/bin/php-cgi # Localisation du fichier PID PHP_PID=/tmp/php.pid # Liaison à une adresse #FCGI_BIND_ADDRESS=10.0.1.1:10000 # Liaison à un socket du domaine 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"
Les instances FastCGI peuvent être appelées sur plusieurs machines distantes afin de répartir les applications.
Exemple #3 Connexion à des instances distantes de php-fastcgi
fastcgi.server = ( ".php" => (( "host" => "10.0.0.2", "port" => 1030 ), ( "host" => "10.0.0.3", "port" => 1030 )) )