PHP 5.6.0 released

Lighttpd 1.4 sur les systèmes Unix

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 depuis PHP 5.3.0, mais pour les versions antérieures, vous devez configurer PHP avec l'option de compilation --enable-fastcgi. Pour vous assurez de l'activation de fastcgi, le résultat de la commande php -v doit contenir PHP 5.2.5 (cgi-fcgi). Avant PHP 5.2.3, fastcgi était activé dans le binaire PHP (php-cgi n'existait pas).

Appel de PHP par Lighttpd

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).

Appel avec spawn-fcgi

Lighttpd fournit un programme appelé spawn-fcgi afin de rendre plus facile les appels des processus fastcgi.

Appel de php-cgi

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"

Connexion à des instances FCGI distantes

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 ))
)
add a note add a note

User Contributed Notes 3 notes

up
1
pittss at gmail dot com
3 years ago
You can custom php.ini just  add environment PHPRC in your virtualhost.

    fastcgi.server    = ( ".php" => ((
        "bin-path" => "/usr/bin/php-cgi",
        "socket" => "/tmp/php.socket",
        "bin-environment" => (
            "PHP_FCGI_CHILDREN" => "3",
            "PHP_FCGI_MAX_REQUESTS" => "1000",
            "PHPRC" => "/usr/www/vhost1/php.ini"
        ),
        "bin-copy-environment" => (
            "PATH", "SHELL", "USER"
        ),
        "broken-scriptfilename" => "enable"
    )))
up
0
Ant P.
4 years ago
If PHP_FCGI_MAX_REQUESTS isn't given, the default value is 500.
up
-1
askroot at gmail dot com
5 years ago
<-- Start -->
#!/bin/bash

/usr/bin/spawn-fcgi \
    -s /var/run/lighttpd/php-fastcgi-kr.php.net.socket \
    -f "/usr/bin/php-cgi -c /etc/php-kr.php.net.ini" \
    -u lighttpd \
    -g lighttpd \
    -C 4 \
    -P /var/run/spawn-fcgi-kr.php.net.pid \
    -F 12
<--  End -->

lighttpd 1.5 - Config
<-- Start -->
$HTTP["host"] =~ "^(www.)?kr.php.net" {
    server.document-root = "/home/kr.php.net"
    accesslog.filename = "/var/log/lighttpd/kr.php.net-access_log"
    index-file.names = ( "index.php", "index.html", "index.htm" )
    url.access-deny = ( "~", ".inc", ".htaccess" )
    server.error-handler-404 = "/error.php"
    alias.url = (
        "/FAQ.php" => "/home/kr.php.net/manual/kr/faq.php",
        "/stats" => "/home/kr.php.net-stats"
    )
    setenv.add-environment = (
        "MIRROR_LANGUAGE" => "kr",
        "MIRROR_STATS" => "1"
    )
    $HTTP["url"] =~ "\.php$" {
        proxy-core.balancer = "round-robin"
        proxy-core.allow-x-sendfile = "enable"
        proxy-core.protocol = "fastcgi"
        proxy-core.backends = ( "unix:/var/run/lighttpd/php-fastcgi-kr.php.net.socket" )
        proxy-core.max-pool-size = 16
    }
}
<-- End -->
To Top