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

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

6 min read Серверы Обновлено 27 Nov 2025
LLMP на CentOS 8: Lighttpd + MariaDB + PHP-FPM
LLMP на CentOS 8: Lighttpd + MariaDB + PHP-FPM

Обложка: логотип Lighttpd или скриншот установки

Важно: эта инструкция рассчитана на систему с правами 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.

  1. Добавьте репозиторий EPEL и обновите кэш:
sudo dnf install epel-release
  1. Проверьте список репозиториев:
dnf repolist

Убедитесь, что в выводе присутствует epel.

  1. Установите lighttpd:
sudo dnf install lighttpd -y
  1. Запустите и включите сервис при старте:
systemctl start lighttpd
systemctl enable lighttpd
  1. Проверьте статус:
systemctl status lighttpd

Результат должен показать, что служба активна (active (running)).

Статус: Lighttpd запущен

  1. Разрешите HTTP в firewalld:
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
  1. Откройте в браузере IP сервера (пример):

http://192.168.1.50/

Вы должны увидеть стандартную страницу index.html Lighttpd.

Lighttpd: стартовая страница index.html

Совет: если сервер недоступен, проверьте firewall, SELinux и сетевые настройки виртуалки/провайдера.

Шаг 2 — Установка MariaDB

MariaDB — форк MySQL, совместимая реляционная СУБД.

  1. Установите сервер базы данных:
sudo dnf install mariadb-server -y
  1. Запустите и включите сервис:
systemctl start mariadb
systemctl enable mariadb
  1. Проверьте статус:
systemctl status mariadb

MariaDB: служба запущена

  1. Безопасная первоначальная настройка:
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
  1. Проверьте существующие пользователи (войдите в консоль):
mysql -u root -p
select User,Host from mysql.user;
exit

После этого MariaDB готова к использованию.

Шаг 3 — Установка и настройка PHP-FPM

PHP‑FPM (FastCGI Process Manager) — предпочтительный способ запуска PHP‑приложений с внешними веб‑серверами (как Lighttpd).

  1. Установите PHP и необходимые модули:
sudo dnf install php php-fpm lighttpd-fastcgi php-mysqlnd php-pdo php-gd php-mbstring -y
  1. Отредактируйте пул 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
  1. Отредактируйте /etc/php.ini, включив поддержку CGI‑путей:
vim /etc/php.ini

Найдите и раскомментируйте:

cgi.fix_pathinfo=1
  1. Запустите и включите php-fpm:
systemctl start php-fpm
systemctl enable php-fpm

PHP-FPM: служба запущена

Проверьте сокеты / прослушивание:

ss -plnt
systemctl status php-fpm

PHP-FPM: проверка процесса

PHP‑FPM должен слушать 127.0.0.1:9000 (если указан TCP) или unix‑сокет, если вы настроили его так.

Шаг 4 — Настройка Lighttpd для работы с PHP

Lighttpd поддерживает обработку PHP через FastCGI. Есть два основных подхода:

  1. Через внешний PHP‑FPM (рекомендуется)
  2. Через 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 через выбранный метод.

Lighttpd с поддержкой PHP-FPM

Шаг 5 — Тестирование

  1. Создайте phpinfo в корне документа по умолчанию:
cd /var/www/lighttpd/
vim info.php

Вставьте:

  1. Откройте в браузере:

http://192.168.1.50/info.php

Вы должны увидеть страницу phpinfo с информацией о PHP, его настройках и подключённых модулях.

phpinfo

Если phpinfo отображается — связка Lighttpd + PHP‑FPM работает.

Шаг 6 — Дополнительно: проверка процессов PHP и обходные варианты

Если используется self‑spawned php-cgi, вы можете посмотреть процессы и сокеты:

ss -pl | grep php
systemctl status php-fpm

Self-spawned PHP под Lighttpd

Даже если служба 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 и количество дочерних процессов, если есть ресурсы.

Траблшутинг — частые проблемы и решения

  1. Lighttpd возвращает 502 Bad Gateway:

    • Проверьте, запущен ли php-fpm и слушает ли он указанный адрес/порт или сокет.
    • Посмотрите логи: /var/log/lighttpd/error.log и /var/log/php-fpm/error.log.
  2. Права доступа к unix‑сокету:

    • Убедитесь, что пользователь lighttpd имеет доступ к сокету (chown/chmod).
  3. SELinux блокирует связи:

    • Временное решение: setenforce 0 (не рекомендуется в production).
    • Лучше: настроить соответствующие политики SELinux или метки для сокетов.
  4. Неправильный документный корень:

    • Проверьте /etc/lighttpd/lighttpd.conf — параметр server.document-root.
  5. Отсутствие модулей 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)

  1. Подготовить сервер (обновления, репозитории).
  2. Установить Lighttpd и убедиться, что доступен HTTP.
  3. Установить MariaDB и выполнить mysql_secure_installation.
  4. Установить PHP и PHP‑FPM.
  5. Настроить Lighttpd ↔ PHP‑FPM через FastCGI.
  6. Создать тестовый info.php и проверить.
  7. Настроить безопасность и мониторинг.

Команды-читшит — быстрый набор

# Установка
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).


Проверка: создание файла phpinfo для теста

Self-spawned PHP: процессы и сокеты

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро