LEMP – стек серверного программного обеспечения, который используется для размещения и работы веб-сайтов и веб-приложений на Linux-серверах. Аббревиатура LEMP расшифровывается как Linux, Nginx, MySQL или MariaDB и PHP. В основе стека лежит операционная система Linux, которая обеспечивает стабильную и безопасную платформу для работы всех компонентов. Веб-сервер Nginx отвечает за приём HTTP- и HTTPS-запросов от клиентов, обрабатывает статический контент и часто используется как обратный прокси. В качестве системы управления базами данных применяется MySQL, либо его совместимая альтернатива MariaDB. СУБД хранит и обрабатывает данные сайтов и приложений. Серверная логика реализуется на языке PHP, который выполняется через PHP-FPM и взаимодействует с Nginx, позволяя генерировать динамические страницы.
Все компоненты LEMP тесно интегрированы между собой и каждый из них выполняет свою чёткую роль. Это делает стек гибким и масштабируемым. Благодаря высокой производительности Nginx и открытости всех компонентов LEMP широко используется для WordPress, Bitrix, Laravel и других популярных CMS и фреймворков. Стек подходит как для небольших сайтов, так и для крупных веб-проектов с большим количеством одновременных пользователей.
В статье разберём, как установить LEMP на виртуальный выделенный сервер, работающий под управлением Rocky Linux 9.
Как установить LEMP на Rocky Linux 9
Базовым компонентом стека является Linux, то есть одна из операционных систем этого семейства. В данном мануале мы разбираем установку LEMP на Rocky Linux 9, инсталляция которого производится автоматически после заказа и оплаты виртуального сервера. Чтобы инициировать установку Rocky Linux 9, при заказе VPS оставьте предложенный по умолчанию шаблон сервера и выберите соответствующий пункт в разделе Операционная система.

Установка операционной системы будет запущена сразу после оплаты, и через несколько минут виртуальный сервер готов к работе. Перед продолжением установки LEMP рекомендуется произвести работы по настройке первоначального уровня безопасности сервера. Это важно, поскольку в чистом виде система содержит базовые настройки, которые могут быть небезопасны для запуска VPS в эксплуатацию.
Установка Nginx
Веб-сервер Nginx обладает высокой производительностью и низким потреблением ресурсов. Он изначально создавался для обработки большого количества одновременных запросов и ориентирован на стабильную и эффективную работу в условиях высокой нагрузки.
Установка и настройка Nginx подробно описана в статье нашего справочника, посвящённой именно этому.
Установка MySQL и MariaDB
В качестве системы управления базами данных в стеке LEMP используются либо MySQL, либо MariaDB. Об установке и предварительной настройке безопасности MySQL и MariaDB в нашем справочника также сказано в соответствующих статьях. Проверку корректности установки любой из систем можно произвести командой:
$ mysqladmin -u root -p version
Данная команда выводит информацию о версии установленного сервера MySQL или MariaDB и его текущем состоянии. Утилита mysqladmin подключается к СУБД от имени пользователя root, при этом ключ -p указывает на необходимость ввода пароля перед подключением. После успешной аутентификации команда выводит данные о версии сервера, дате сборки, пути к сокету или порту подключения и т.п. Например, на скриншоте ниже – вывод команды для MySQL.

А таким образом выглядит пример вывода информации о версии установленного сервера MariaDB.

Установка PHP
Следующий этап – установка PHP, который будет отвечать за обработку динамического контента. Минимальный набор для работы LEMP включает PHP-FPM и популярные модули для работы с базами данных, строками и JSON. Установка набора производится с использованием пакетного менеджера DNF:
$ sudo dnf install php php-mysqlnd php-fpm php-opcache php-gd php-xml php-json
PHP-FPM (FastCGI Process Manager) представляет собой менеджер процессов PHP, предназначенный для эффективной и безопасной обработки PHP-скриптов при работе с веб-серверами, в частности, Nginx. В отличие от классического модуля PHP для Apache, PHP-FPM работает как отдельная служба и принимает запросы от веб-сервера по протоколу FastCGI, что позволяет управлять выполнением PHP-кода. Изначально служба PHP-FPM находится в неактивном состоянии, поэтому после завершения инсталляции выполните команду, которая устанавливает службу в автозагрузку с одновременным её стартом:
$ sudo systemctl enable --now php-fpm
Чтобы проверить корректность функционирования службы, выведите её текущее состояние:
$ systemctl status php-fpm
Если запуск службы произведён штатно, вывод команды не будет содержать сообщений о каких-либо ошибках.

Кроме того, в качестве проверки можно вывести информацию о версии PHP:
$ php -v

Настройка PHP
Чтобы согласовать работу PHP-FPM с веб-сервером и обеспечить корректный доступ к файлам сайта и сокетам, необходимо определить, от имени какого пользователя и группы будут запускаться рабочие процессы PHP-FPM. Поскольку в LEMP веб-сервером является Nginx, то использоваться будут пользователь и группа nginx и nginx соответственно. Чтобы произвести данную настройку, откройте для редактирования основной конфигурационный файл пула PHP-FPM:
$ sudo vi /etc/php-fpm.d/www.conf
Там найдите параметры, определяющие имя учётной записи и группу – user и group, и приведите их к следующему виду:
user = nginx
group = nginx
После чего закройте файл, сохранив внесённые изменения.
Чтобы убедиться в корректности установки и работы PHP в связке с веб-сервером Nginx, создайте файл info.php в каталоге /usr/share/nginx/html/:
$ sudo vi /usr/share/nginx/html/info.php
Затем вставьте в файл следующий код:
<?php phpinfo() ?>
При обращении к этому файлу через браузер Nginx передаст его на обработку PHP-FPM, а функция phpinfo() выведет подробную информацию о текущей конфигурации PHP, загруженных модулях, версии интерпретатора, параметрах ini-файлов и переменных окружения. Закройте файл с сохранением и перезапустите службы Nginx и PHP-FPM:
$ sudo systemctl restart nginx php-fpm
После чего запустите браузер и перейдите по ссылке вида http://X.X.X.X/info.php, где вместо X.X.X.X укажите IP-адрес своего сервера. В результате браузер должен вывести страницу с информацией о PHP.

Поскольку вывод функции phpinfo() содержит технические сведения о системе, которые не стоит оставлять в открытом доступе, после того, как вы убедились в результатах проверки, удалите файл info.php:
$ sudo rm /usr/share/nginx/html/info.php
