Установка PHP на Lighttpd 1.4 на Unix системах


Этот раздел содержит информацию по установке PHP на Unix-системы с сервером Lighttpd 1.4.

Прочитайте, пожалуйста, инструкции по установке Lighttpd в » документации по Lighttpd перед установкой PHP.

Fastcgi - предпочитаемый интерфейс для связи PHP и Lighttpd. Fastcgi доступен по умолчанию в PHP начиная с версии 5.3. Для предыдущих версий необходимо конфигурировать PHP с флагом --enable-fastcgi. Чтобы убедиться, что PHP скомпилирован с поддержкой fastcgi, необходимо проверить наличие (cgi-fcgi) в выводе команды php -v. Для версии 5.2.5 это будет выглядеть так: PHP 5.2.5 (cgi-fcgi). До версии 5.2.3 не существовало отдельного файла php-cgi, fastcgi встривался в основной бинарный файл php.

Управление процессами php через Lighttpd

Для настройки Lighttpd на соединение с PHP и порождения процессов fastcgi необходимо отредактировать конфигурационный файл lighttpd.conf. Предпочтительнее подключаться к процессам fastcgi используя unix-сокеты.

Пример #1 Пример части файла 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   )) ) 

Директива bin-path задает путь к исполняемому файлу php. Lighttpd будет динамически создавать дочерние процессы php, согласно переменной окружения PHP_FCGI_CHILDREN. Директива bin-environment задает настройки для дочерних процессов. PHP_FCGI_MAX_REQUESTS определяет порог, при достижении которого PHP завершит дочерний процесс. Директив "min-procs" и "max-procs" обычно стоит избегать. PHP управляет только своими дочерними процессами, и инструменты кэширования в байткод (например, APC) будут использоваться только в этих дочерних процессах. Если значение "min-procs" установлено больше 1, общее количество процессов, обрабатывающих запросы, будет равно PHP_FCGI_CHILDREN * min-procs.

Управление процессами с помощью spawn-fcgi

Lighttpd предоставляет программу spawn-fcgi для облегчения управления дочерними процессами.

Управление процессами с помощью php-cgi

Управлять процессами можно и без spawn-fcgi, но это потребует некоторых доработок. Переменная окружения PHP_FCGI_CHILDREN указывает количество дочерних процессов, запускаемых PHP для обработки входящих запросов. Переменная PHP_FCGI_MAX_REQUESTS отвечает за количество запросов, которые обработает один процесс. Ниже приведен простой bash-скрипт, облегчающий создание дочерних процессов.

Пример #2 Создание FastCGI-обработчиков

 #!/bin/sh  # Местоположение бинарного файла php-cgi PHP=/usr/local/bin/php-cgi  # Местоположение PID-файла PHP_PID=/tmp/php.pid  # Привязка к адресу #FCGI_BIND_ADDRESS=10.0.1.1:10000 # Привязка к сокету 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"  

Подключение к удаленным процессам FCGI

Обработчики fastcgi могут находиться на нескольких отдельных машинах для маштабирования нагрузки.

Пример #3 Подключение к удаленным процессам fastcgi

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