Гид по технологиям

Настройка Lighttpd и PHP с поддержкой MySQL

4 min read Веб-серверы Обновлено 25 Nov 2025
Lighttpd + PHP + MySQL: настройка
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.service

6 Тестирование PHP и получение информации о сборке

Корневая директория веб-сайта по умолчанию — /var/www/htdocs/. Создайте небольшой PHP-файл info.php для проверки:

nano /var/www/htdocs/info.php

Содержимое файла:

Откройте в браузере http://вашегосервера>/info.php (например, http://192.168.1.100/info.php).

Экран phpinfo для Lighttpd.

Если вы видите страницу 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-xmlrpc

Opcode-кеширование ускоряет выполнение PHP-кода. APC — один из вариантов (или современные аналоги, если доступно). Установка APC через пакетный менеджер:

yum -y install php-pecl-apc

После установки модулей перезагрузите PHP-FPM, чтобы новые расширения загрузились:

systemctl reload php-fpm.service

Снова обновите страницу info.php в браузере и найдите раздел модулей — теперь должен появиться модуль MySQL.

PHP с MySQL на Lighttpd.

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

Короткая методика проверки после деплоя

  1. Перезапустить php-fpm.
  2. Перезапустить lighttpd.
  3. Открыть /info.php и убедиться в наличии MySQL-модуля.
  4. Проверить логи: /var/log/lighttpd/error.log и /var/log/php-fpm/*

9 Ссылки

Итог

Эти шаги включают PHP в Lighttpd и добавляют поддержку MySQL. Для оптимальной работы используйте Unix-сокеты на одном хосте, устанавливайте opcode-кешер и внимательно настраивайте права доступа к сокету. Не забывайте удалять диагностические файлы (info.php) и мониторить сервисы.

Важно: всегда тестируйте изменения на стенде, прежде чем применять в продакшене.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Knockout-эффект в Photoshop и Illustrator — руководство
Дизайн

Knockout-эффект в Photoshop и Illustrator — руководство

HashTab: проверка контрольных сумм в Windows
Безопасность

HashTab: проверка контрольных сумм в Windows

Экспорт и импорт списков отправителей в Outlook
Почта

Экспорт и импорт списков отправителей в Outlook

Как проверить трафик и выбрать маршрут в Google Maps
Навигация

Как проверить трафик и выбрать маршрут в Google Maps

Microsoft Cruel Solitaire на Windows 10 — как запустить
Игры

Microsoft Cruel Solitaire на Windows 10 — как запустить

Как задать рабочее время и место в Outlook
Инструкции

Как задать рабочее время и место в Outlook