PHP Conference Nagoya 2025

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

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

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

FastCGI - предпочитаемый интерфейс для связи PHP и Lighttpd. FastCGI доступен по умолчанию в php-cgi.

Управление процессами 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 позволяет lighttpd динамически запускать процессы FastCGI. 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 для облегчения управления дочерними процессами FastCGI.

Управление процессами с помощью 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 ))
)
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top