LEMP-стек — это классическая связка для запуска сайтов на VPS: Linux, Nginx (читается «engine-x»), MySQL и PHP. На нём работают WordPress, Laravel, OpenCart, форумы и самописные проекты. В этой инструкции разберём установку LEMP на Ubuntu 24.04 LTS с нуля: поставим Nginx, MySQL 8 и PHP 8.3 с PHP-FPM, свяжем их между собой и проверим, что всё работает. Все команды рабочие — можно копировать построчно. На чистом сервере процесс занимает около 20 минут, а на VPS Cheap-Host с NVMe-дисками пакеты ставятся практически мгновенно.
Что такое LEMP и почему не LAMP
Отличие от старого доброго LAMP одно: вместо Apache используется Nginx. Для типичного VPS это осознанный выбор:
- Меньше памяти. Nginx обрабатывает тысячи соединений в нескольких worker-процессах, а не плодит процесс на каждый запрос.
- Быстрая статика. Картинки, CSS и JS Nginx отдаёт напрямую с диска — с NVMe это происходит за миллисекунды.
- PHP через FPM. PHP работает отдельной службой (PHP-FPM), которую можно тонко тюнинговать под свою RAM.
Если сомневаетесь между веб-серверами, у нас есть отдельное сравнение — когда Apache лучше Nginx. Для 90% задач на VPS ответ — LEMP.
Что понадобится
- VPS с Ubuntu 24.04 LTS и root-доступом (или пользователем с sudo);
- 1+ ГБ RAM для теста, 2–8 ГБ для боевого сайта;
- 10–15 минут времени и SSH-клиент.
Для примера подойдёт тариф Start у Cheap-Host: 6 vCPU, 8 ГБ RAM и 96 ГБ NVMe за 450 ₽/мес — сервер выдаётся за 45–60 секунд, так что к установке можно приступать сразу после оплаты.
Шаг 1. Подготовка сервера
Подключаемся по SSH и обновляем систему:
sudo apt update && sudo apt upgrade -y
Сразу открываем нужные порты в файрволе UFW и включаем его:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Подробнее о правилах и типичных ошибках — в статье про настройку UFW на Ubuntu.
Шаг 2. Установка Nginx
Nginx есть в стандартном репозитории Ubuntu 24.04:
sudo apt install -y nginx
systemctl status nginx
Служба стартует автоматически. Откройте в браузере http://IP_сервера — должна появиться страница «Welcome to nginx!». Если её нет, проверьте, что порт 80 открыт: sudo ufw status.
Шаг 3. Установка MySQL 8
Ставим сервер БД и запускаем скрипт первичной защиты:
sudo apt install -y mysql-server
sudo mysql_secure_installation
Скрипт предложит включить проверку сложности паролей, удалить анонимных пользователей, запретить удалённый вход под root и убрать тестовую базу — на все вопросы отвечайте Y. В Ubuntu 24.04 root в MySQL по умолчанию входит через auth_socket (без пароля, но только из-под системного root) — это нормально и безопасно.
Создадим базу и отдельного пользователя для будущего сайта:
sudo mysql
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'Сложный_Пароль_123!';
GRANT ALL PRIVILEGES ON myapp.* TO 'myapp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Тонкой настройке СУБД посвящена отдельная статья — MySQL на VPS: установка, защита и первичная настройка.
Шаг 4. Установка PHP 8.3 и PHP-FPM
В Ubuntu 24.04 из коробки доступен PHP 8.3. Ставим FPM и самые нужные модули:
sudo apt install -y php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip php8.3-gd php8.3-intl
php -v
systemctl status php8.3-fpm
Обратите внимание: пакет apache2 нам не нужен, поэтому ставим именно php8.3-fpm, а не метапакет php, который потянул бы Apache зависимостью.
Шаг 5. Связываем Nginx и PHP-FPM
Nginx сам не исполняет PHP — он передаёт запросы в PHP-FPM через unix-сокет. Создаём конфиг сайта:
sudo nano /etc/nginx/sites-available/myapp
Содержимое:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/myapp;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Вместо example.com укажите свой домен или IP сервера. Создаём каталог сайта, включаем конфиг и перезагружаем Nginx:
sudo mkdir -p /var/www/myapp
sudo chown -R www-data:www-data /var/www/myapp
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
Команда nginx -t обязательна: она проверяет синтаксис конфига до перезагрузки, чтобы сайт не упал из-за опечатки.
Шаг 6. Проверяем стек целиком
Создаём тестовый файл:
echo '<?php phpinfo();' | sudo tee /var/www/myapp/info.php
Открываем http://IP_сервера/info.php. Если видите фиолетовую таблицу PHP 8.3 — Nginx и PHP-FPM связаны. Найдите на странице секцию mysqli: она подтверждает, что PHP видит драйвер MySQL. После проверки файл обязательно удалите — он раскрывает лишнюю информацию о сервере:
sudo rm /var/www/myapp/info.php
Что настроить после установки
Базовый LEMP готов, но до «боевого» состояния стоит сделать ещё несколько шагов:
- SSL-сертификат. Бесплатный Let's Encrypt ставится одной командой certbot — инструкция в статье про SSL от Let's Encrypt.
- Тюнинг PHP-FPM. Значения
pm.max_childrenпо умолчанию не рассчитаны на вашу RAM — как их подобрать, разбираем в материале об оптимизации PHP-FPM. - Лимиты PHP. В
/etc/php/8.3/fpm/php.iniподнимитеupload_max_filesizeиpost_max_size, если планируете загрузку файлов, и перезапустите FPM:sudo systemctl restart php8.3-fpm. - Бэкапы базы. Хотя бы простой
mysqldumpпо cron.
Сколько ресурсов нужно под LEMP
| Сценарий | RAM | Рекомендация |
|---|---|---|
| Тест, лендинг, пет-проект | 1–2 ГБ | Любой VPS с KVM и NVMe |
| Сайт на CMS с посещаемостью до 10–20 тыс./сутки | 4–8 ГБ | Start у Cheap-Host — 6 vCPU, 8 ГБ RAM, 450 ₽/мес |
| Несколько сайтов, магазин, нагрузка выше средней | 16 ГБ | Pro — 12 vCPU, 16 ГБ RAM, 750 ₽/мес |
Приятный момент: на Cheap-Host апгрейд CPU, RAM и диска делается без потери данных, поэтому начинать можно со Start и расти по мере трафика.
FAQ
Чем LEMP отличается от LAMP?
В LAMP веб-сервером выступает Apache, в LEMP — Nginx. Nginx экономнее расходует память и лучше держит много одновременных соединений, поэтому для VPS с ограниченной RAM LEMP обычно предпочтительнее.
Какая версия PHP ставится на Ubuntu 24.04 по умолчанию?
Из стандартного репозитория устанавливается PHP 8.3 (пакет php8.3-fpm). Этого достаточно для актуальных версий WordPress, Laravel и большинства CMS.
Сколько ресурсов нужно серверу под LEMP?
Голый стек запускается и на 1 ГБ RAM, но для сайта с базой комфортный минимум — 2–4 ГБ. Тариф Start у Cheap-Host (6 vCPU, 8 ГБ RAM, 96 ГБ NVMe за 450 ₽/мес) закрывает LEMP с запасом.
Можно ли поставить MariaDB вместо MySQL?
Да: вместо mysql-server установите mariadb-server. Остальные шаги не меняются, модуль php8.3-mysql работает с обеими СУБД.
Почему Nginx отдаёт 502 Bad Gateway?
Чаще всего Nginx не может достучаться до PHP-FPM: служба не запущена или в fastcgi_pass указан неверный сокет. Проверьте systemctl status php8.3-fpm и путь /run/php/php8.3-fpm.sock в конфиге сайта.
Вывод
Установка LEMP на Ubuntu 24.04 сводится к четырём командам apt install и одному конфигу Nginx: полчаса — и сервер готов принимать сайты на PHP. Дальше остаются SSL, тюнинг PHP-FPM и бэкапы. Если под этот стек нужен сервер — у Cheap-Host тариф Start от 450 ₽/мес: 6 vCPU, 8 ГБ RAM, NVMe, KVM с полным root, безлимитный трафик и выдача сервера за минуту. Тарифы и заказ — на cheap-host.onl.