Настройка Lighttpd и PHP с поддержкой MySQL
TL;DR
Чтобы включить PHP в Lighttpd: включите cgi.fix_pathinfo в /etc/php.ini, подключите mod_fastcgi и настройте fastcgi.server в /etc/lighttpd/conf.d/fastcgi.conf. Для MySQL установите модуль php-mysql и перезагрузите php-fpm. Для оптимизации — используйте Unix-сокет вместо TCP и установите opcode-кешер (APC или аналог).
Важно: после каждого изменения конфигурации перезагружайте соответствующий сервис (php-fpm или lighttpd).
5 Настройка Lighttpd и PHP
Ниже описаны конкретные изменения файлов, которые включают поддержку PHP в Lighttpd. Все команды выполняйте от имени пользователя с правами root или через sudo.
Откройте файл /etc/php.ini и раскомментируйте строку cgi.fix_pathinfo=1. Эта опция заставляет PHP корректно обрабатывать PATH_INFO/PATH_TRANSLATED для CGI и FPM.
nano /etc/php.iniПример фрагмента файла (покажем раскомментированную строку):
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]Далее откройте /etc/lighttpd/modules.conf и подключите конфигурацию FastCGI, раскомментировав соответствующую строку:
nano /etc/lighttpd/modules.confФрагмент:
[...]
##
## FastCGI (mod_fastcgi)
##
include "conf.d/fastcgi.conf"
[...]Теперь откройте сам файл конфигурации FastCGI:
nano /etc/lighttpd/conf.d/fastcgi.confДобавьте (или замените) stanza fastcgi.server, чтобы перенаправлять запросы .php на PHP-FPM. Пример для TCP (по умолчанию):
[...]
fastcgi.server += ( ".php" =>
((
"host" => "127.0.0.1",
"port" => "9000",
"broken-scriptfilename" => "enable"
))
)
#fastcgi.server = ( ".php" =>
# ( "php-local" =>
# (
# "socket" => socket_dir + "/php-fastcgi-1.socket",
# "bin-path" => server_root + "/cgi-bin/php5",
# "max-procs" => 1,
# "broken-scriptfilename" => "enable",
# )
# ),
[...]После внесения изменений перезапустите Lighttpd:
systemctl restart lighttpd.service6 Тестирование PHP и получение информации о сборке
Корневая директория веб-сайта по умолчанию — /var/www/htdocs/. Создайте небольшой PHP-файл info.php для проверки:
nano /var/www/htdocs/info.phpСодержимое файла:
Откройте в браузере http://

Если вы видите страницу phpinfo(), PHP работает через FPM/FastCGI — это видно в строке Server API. На этой странице перечислены установленные модули. Если MySQL не отображается, значит модуль php-mysql не установлен.
7 Подключение MySQL к PHP
Для поддержки MySQL установите пакет php-mysql. Часто полезно установить и другие PHP-модули, которые требуется вашим приложениям.
Поиск доступных модулей:
yum search phpУстановка популярных модулей (пример):
yum -y install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpcOpcode-кеширование ускоряет выполнение PHP-кода. APC — один из вариантов (или современные аналоги, если доступно). Установка APC через пакетный менеджер:
yum -y install php-pecl-apcПосле установки модулей перезагрузите PHP-FPM, чтобы новые расширения загрузились:
systemctl reload php-fpm.serviceСнова обновите страницу info.php в браузере и найдите раздел модулей — теперь должен появиться модуль MySQL.

8 Переключение PHP-FPM на Unix-сокет
Использование Unix-сокета уменьшает накладные расходы TCP и может быть чуть быстрее при локальном взаимодействии веб-сервера и PHP-FPM.
Откройте конфигурацию пула PHP-FPM (пример для пула www):
nano /etc/php-fpm.d/www.confИзмените строку listen, чтобы указать путь к сокету:
[...]
;listen = 127.0.0.1:9000
listen = /tmp/php5-fpm.sock
[...]Перезагрузите PHP-FPM:
systemctl reload php-fpm.serviceЗатем откройте /etc/lighttpd/conf.d/fastcgi.conf и замените host/port на socket:
nano /etc/lighttpd/conf.d/fastcgi.conffastcgi.server += ( ".php" =>
((
"socket" => "/tmp/php5-fpm.sock",
"broken-scriptfilename" => "enable"
))
)Наконец, перезапустите Lighttpd:
systemctl restart lighttpd.serviceСоветы по отладке и типичные ошибки
- Если при обращении к php файл скачивается или показывается исходный PHP-код — значит FastCGI не обрабатывает .php. Проверьте fastcgi.server и включён ли модуль в modules.conf.
- Ошибка 502 Bad Gateway — проверьте, запущен ли php-fpm и слушает ли указанный порт/сокет. systemctl status php-fpm.service и netstat/ss помогут.
- При использовании Unix-сокета учитывайте права на файл сокета: веб-сервер должен иметь доступ к сокету. Проверьте user/group и права (chmod/chown).
- Если расширения не видны в phpinfo(), убедитесь, что вы перезагрузили php-fpm, а не только lighttpd.
Модели принятия решения: TCP или Unix-сокет
- Используйте TCP (127.0.0.1:9000), если PHP-FPM находится на другом хосте или планируется масштабирование на несколько серверов.
- Используйте Unix-сокет, если PHP-FPM и веб-сервер на одном хосте и требуется минимизировать накладные TCP-издержки.
flowchart TD
A[Нужна ли работа через сеть?] -->|Да| B[Использовать TCP:127.0.0.1:9000]
A -->|Нет| C[Использовать Unix-сокет]
B --> D[Обеспечить firewall и доступ]
C --> E[Проверить права на сокет и владельца]Контрольные списки по ролям
Администратор сервера:
- Убедиться в включении cgi.fix_pathinfo=1
- Включить conf.d/fastcgi.conf в modules.conf
- Перезапустить lighttpd и php-fpm после изменений
- Проверить права на сокет при использовании Unix-сокета
Разработчик:
- Поместить тестовый info.php в документ-рут
- Проверить модули через phpinfo()
- Тестировать подключение к MySQL через mysqli/pdo
QA/Тестировщик:
- Проверить обработку .php: появление страницы phpinfo()
- Проверить список модулей и версию PHP
- Проверить обработку ошибок 4xx/5xx при недоступном php-fpm
Безопасность и производительность
- Удаляйте или защищайте файл info.php после тестирования — он раскрывает информацию о конфигурации системы.
- Настройте доступ к сокету через соответствующего пользователя и группу (обычно “www-data” или “apache”) и задайте безопасные права.
- Используйте opcode-кешер (APC, OPcache или другой), чтобы снизить нагрузку на CPU и ускорить отклик страниц.
- Мониторьте метрики php-fpm (количество воркеров, время обработки) и выделяйте достаточный объём RAM.
Критерии приёмки
- Страница info.php корректно отображается и показывает Server API = FPM/FastCGI.
- В разделе модулей виден модуль MySQL (mysqli или pdo_mysql).
- При использовании Unix-сокета web-сервер успешно обрабатывает .php и логов о отказе нет.
Альтернативные подходы
- Можно использовать другие веб-серверы (nginx или Apache), если требуется другая экосистема или предпочтения команды.
- Для современных приложений предпочтителен OPcache вместо устаревшего APC (проверьте совместимость с вашей версией PHP).
Короткая методика проверки после деплоя
- Перезапустить php-fpm.
- Перезапустить lighttpd.
- Открыть /info.php и убедиться в наличии MySQL-модуля.
- Проверить логи: /var/log/lighttpd/error.log и /var/log/php-fpm/*
9 Ссылки
- Lighttpd: http://www.lighttpd.net/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- CentOS: http://www.centos.org/
Итог
Эти шаги включают PHP в Lighttpd и добавляют поддержку MySQL. Для оптимальной работы используйте Unix-сокеты на одном хосте, устанавливайте opcode-кешер и внимательно настраивайте права доступа к сокету. Не забывайте удалять диагностические файлы (info.php) и мониторить сервисы.
Важно: всегда тестируйте изменения на стенде, прежде чем применять в продакшене.
Похожие материалы
Knockout-эффект в Photoshop и Illustrator — руководство
HashTab: проверка контрольных сумм в Windows
Экспорт и импорт списков отправителей в Outlook
Как проверить трафик и выбрать маршрут в Google Maps
Microsoft Cruel Solitaire на Windows 10 — как запустить