Установка LLMP (Lighttpd, MariaDB, PHP-FPM) на CentOS 8

Важно: эта инструкция рассчитана на систему с правами root или sudo и базовыми навыками работы с CentOS.
О чём эта статья
Цель: установить и настроить Lighttpd + MariaDB + PHP‑FPM (LLMP) на CentOS 8, чтобы хостить PHP‑приложения с минимальным потреблением памяти и хорошей производительностью.
Варианты использования:
- Малые и средние сайты, где важна низкая нагрузка на память.
- Контейнеры и виртуальные машины с ограниченными ресурсами.
Похожие варианты формулировки поиска (для SEO): установка LLMP на CentOS 8, Lighttpd MariaDB PHP-FPM настройка, как настроить Lighttpd с PHP-FPM, LLMP стек CentOS.
Предпосылки
- Сервер с CentOS 8.
- Доступ под root или через sudo.
- Базовые знания работы с командной строкой и vim/nano.
Что мы сделаем:
- Установим Lighttpd.
- Установим MariaDB и зададим root‑пароль.
- Установим PHP и PHP‑FPM.
- Настроим связку Lighttpd ↔ PHP‑FPM (FastCGI) или self‑spawn PHP‑CGI.
- Проверим работоспособность через phpinfo.
Шаг 1 — Установка Lighttpd
Lighttpd — лёгкий HTTP‑сервер, оптимизированный для низкого использования памяти и высокой производительности. На CentOS 8 пакет доступен в репозитории EPEL.
- Добавьте репозиторий EPEL и обновите кэш:
sudo dnf install epel-release- Проверьте список репозиториев:
dnf repolistУбедитесь, что в выводе присутствует epel.
- Установите lighttpd:
sudo dnf install lighttpd -y- Запустите и включите сервис при старте:
systemctl start lighttpd
systemctl enable lighttpd- Проверьте статус:
systemctl status lighttpdРезультат должен показать, что служба активна (active (running)).

- Разрешите HTTP в firewalld:
firewall-cmd --add-service=http --permanent
firewall-cmd --reload- Откройте в браузере IP сервера (пример):
Вы должны увидеть стандартную страницу index.html Lighttpd.

Совет: если сервер недоступен, проверьте firewall, SELinux и сетевые настройки виртуалки/провайдера.
Шаг 2 — Установка MariaDB
MariaDB — форк MySQL, совместимая реляционная СУБД.
- Установите сервер базы данных:
sudo dnf install mariadb-server -y- Запустите и включите сервис:
systemctl start mariadb
systemctl enable mariadb- Проверьте статус:
systemctl status mariadb
- Безопасная первоначальная настройка:
mysql_secure_installationСледуйте подсказкам. Рекомендуется ответить Y на все вопросы (установить root‑пароль, удалить анонимных пользователей, запретить удалённый вход root, удалить тестовую БД и перезагрузить таблицы привилегий).
Пример взаимодействия:
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Set a root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y- Проверьте существующие пользователи (войдите в консоль):
mysql -u root -p
select User,Host from mysql.user;
exitПосле этого MariaDB готова к использованию.
Шаг 3 — Установка и настройка PHP-FPM
PHP‑FPM (FastCGI Process Manager) — предпочтительный способ запуска PHP‑приложений с внешними веб‑серверами (как Lighttpd).
- Установите PHP и необходимые модули:
sudo dnf install php php-fpm lighttpd-fastcgi php-mysqlnd php-pdo php-gd php-mbstring -y- Отредактируйте пул PHP‑FPM: /etc/php-fpm.d/www.conf
vim /etc/php-fpm.d/www.confИзмените пользователя и группу на lighttpd:
user = lighttpd
group = lighttpdТакже используем слушатель по локальному TCP:
listen = 127.0.0.1:9000- Отредактируйте /etc/php.ini, включив поддержку CGI‑путей:
vim /etc/php.iniНайдите и раскомментируйте:
cgi.fix_pathinfo=1- Запустите и включите php-fpm:
systemctl start php-fpm
systemctl enable php-fpm
Проверьте сокеты / прослушивание:
ss -plnt
systemctl status php-fpm
PHP‑FPM должен слушать 127.0.0.1:9000 (если указан TCP) или unix‑сокет, если вы настроили его так.
Шаг 4 — Настройка Lighttpd для работы с PHP
Lighttpd поддерживает обработку PHP через FastCGI. Есть два основных подхода:
- Через внешний PHP‑FPM (рекомендуется)
- Через self‑spawning php-cgi (встроенный запуск процессов PHP под Lighttpd)
Включение модуля FastCGI
Перейдите в /etc/lighttpd/ и откройте modules.conf:
cd /etc/lighttpd/
vim modules.confРазкомментируйте подключение fastcgi:
##
## FastCGI (mod_fastcgi)
##
include "conf.d/fastcgi.conf"Сохраните.
Конфигурация FastCGI для PHP-FPM (TCP)
Откройте conf.d/fastcgi.conf и добавьте конфигурацию для PHP‑FPM:
vim conf.d/fastcgi.confВставьте:
fastcgi.server += ( ".php" =>
((
"host" => "127.0.0.1",
"port" => "9000",
"broken-scriptfilename" => "enable"
))
)Сохраните.
Конфигурация для self‑spawning php-cgi
Если вы предпочитаете, чтобы Lighttpd сам поднимал процессы php-cgi, используйте конфигурацию ниже в conf.d/fastcgi.conf:
fastcgi.server = ( ".php" =>
((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",
"max-procs" => 4,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "",
"PHP_FCGI_MAX_REQUESTS" => "500"
),
"broken-scriptfilename" => "enable"
))
)Создайте директорию для сокета и поменяйте владельца:
mkdir -p /var/run/lighttpd
sudo chown -R lighttpd:lighttpd /var/run/lighttpdПерезапустите Lighttpd:
systemctl restart lighttpdЕсли ошибок нет, Lighttpd должен успешно запускаться и обрабатывать PHP через выбранный метод.

Шаг 5 — Тестирование
- Создайте phpinfo в корне документа по умолчанию:
cd /var/www/lighttpd/
vim info.phpВставьте:
- Откройте в браузере:
Вы должны увидеть страницу phpinfo с информацией о PHP, его настройках и подключённых модулях.

Если phpinfo отображается — связка Lighttpd + PHP‑FPM работает.
Шаг 6 — Дополнительно: проверка процессов PHP и обходные варианты
Если используется self‑spawned php-cgi, вы можете посмотреть процессы и сокеты:
ss -pl | grep php
systemctl status php-fpm
Даже если служба php-fpm остановлена, самозапускающиеся процессы php-cgi могут продолжать обрабатывать запросы, пока запущен Lighttpd.
Рекомендации по безопасности и производительности
Important: перед развёртыванием в production выполните следующие шаги:
- Отключите display_errors и установите log_errors в php.ini для production.
- Настройте резервное копирование конфигураций и баз данных.
- Запретите удалённый вход root в MariaDB (mysql_secure_installation это делает).
- Используйте TLS (HTTPS) — настройте сертификат (Let’s Encrypt или коммерческий CA).
- Ограничьте доступ к административным интерфейсам (firewall, iptables, fail2ban).
- Мониторьте использование памяти и число процессов php-fpm (pm.max_children для пулов в php-fpm — если используете unix-сокеты).
Производительность:
- Для высоких нагрузок рекомендуется использовать PHP‑FPM с unix‑сокетом и настроенным pm (dynamic/static) в /etc/php-fpm.d/www.conf.
- Увеличьте max‑request и количество дочерних процессов, если есть ресурсы.
Траблшутинг — частые проблемы и решения
Lighttpd возвращает 502 Bad Gateway:
- Проверьте, запущен ли php-fpm и слушает ли он указанный адрес/порт или сокет.
- Посмотрите логи: /var/log/lighttpd/error.log и /var/log/php-fpm/error.log.
Права доступа к unix‑сокету:
- Убедитесь, что пользователь lighttpd имеет доступ к сокету (chown/chmod).
SELinux блокирует связи:
- Временное решение: setenforce 0 (не рекомендуется в production).
- Лучше: настроить соответствующие политики SELinux или метки для сокетов.
Неправильный документный корень:
- Проверьте /etc/lighttpd/lighttpd.conf — параметр server.document-root.
Отсутствие модулей PHP:
- Установите требуемые расширения (php-mysqlnd, php-gd и т. п.) и перезапустите php-fpm.
Критерии приёмки
- Lighttpd отвечает на HTTP-запрос и возвращает index.html.
- MariaDB запущен и доступен для локальных подключений; root‑пароль установлен.
- PHP‑FPM запущен и слушает на 127.0.0.1:9000 или unix‑сокете.
- phpinfo() отображает информацию о PHP (через Lighttpd).
- Логи ошибок пусты или не содержат критичных ошибок при запуске.
Чек‑листы по ролям
Администратор сервера:
- Установить epel-release
- Установить и включить lighttpd
- Настроить firewall и SELinux
- Настроить резервное копирование конфигураций
Разработчик / Dev:
- Проверить phpinfo и необходимые расширения
- Настроить рабочую среду и права на файлы
- Протестировать приложение в staging перед production
Краткая методология развертывания (mini SOP)
- Подготовить сервер (обновления, репозитории).
- Установить Lighttpd и убедиться, что доступен HTTP.
- Установить MariaDB и выполнить mysql_secure_installation.
- Установить PHP и PHP‑FPM.
- Настроить Lighttpd ↔ PHP‑FPM через FastCGI.
- Создать тестовый info.php и проверить.
- Настроить безопасность и мониторинг.
Команды-читшит — быстрый набор
# Установка
sudo dnf install epel-release
sudo dnf install lighttpd mariadb-server php php-fpm php-mysqlnd -y
# Службы
systemctl start lighttpd; systemctl enable lighttpd
systemctl start mariadb; systemctl enable mariadb
systemctl start php-fpm; systemctl enable php-fpm
# Firewall
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
# Проверки
systemctl status lighttpd
systemctl status mariadb
systemctl status php-fpm
ss -plnt
# Безопасность MariaDB
mysql_secure_installation
# Логи
tail -n 200 /var/log/lighttpd/error.log
journalctl -u php-fpm -n 200Когда LLMP не подходит (контрпример)
- Если вы планируете обслуживать очень высокую нагрузку с большим количеством одновременных соединений и требуются тонкие настройки — рассмотрите nginx + php-fpm или Apache MPM + php-fpm, с системой балансировки нагрузки.
- Для приложений, тесно интегрированных с экосистемой Apache (модули .htaccess, mod_rewrite сложных правил) миграция потребует дополнительной адаптации.
Резюме
LLMP (Lighttpd + MariaDB + PHP‑FPM) на CentOS 8 — хорошее решение для лёгких и средних PHP‑приложений, где важна экономия памяти и простая конфигурация. В руководстве показаны все шаги: установка, настройка FastCGI, тестирование и рекомендации по безопасности.
Ключевые пункты:
- Используйте PHP‑FPM через TCP или unix‑сокет по необходимости.
- Выполните mysql_secure_installation для безопасности MariaDB.
- Настройте права доступа к сокетам и проверьте SELinux, если он включён.
Дополнительно: диаграмма решения (Mermaid)
flowchart TD
A[Начало] --> B{Вы хотите обрабатывать PHP?}
B -- Нет --> C[Lighttpd как статический сервер]
B -- Да --> D{Вы хотите внешние процессы PHP?}
D -- Да --> E[Использовать PHP-FPM 'рекомендуется']
D -- Нет --> F[Использовать self-spawn php-cgi]
E --> G[Настроить fastcgi -> 127.0.0.1:9000]
F --> H[Настроить php-cgi с unix-сокетом]
G --> I[Тест: info.php]
H --> I
I --> J[Готово]Часто задаваемые вопросы
Q: Можно ли использовать unix‑сокет вместо TCP?
A: Да. unix‑сокеты обычно быстрее на одном хосте и проще в управлении правами, но требуют корректных прав доступа.
Q: Нужно ли отключать SELinux?
A: Нет. Не безопасно отключать SELinux в production. Лучше настроить правильные политики или метки для сокетов/файлов.
Q: Как мониторить PHP‑FPM?
A: Используйте systemctl, journalctl, а также инструменты мониторинга (Prometheus + exporters, netdata, top/htop).


Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента