Ubuntu 24.04: установка веб-сервера LEMP с нуля
LEMP — это связка из Nginx, базы данных и PHP, на которой работает большинство сайтов и веб-приложений. Установка веб-сервера LEMP на Ubuntu 24.04 с нуля пугает новичка обилием пакетов и конфигов, но на деле это последовательность понятных шагов. Пройдём их по порядку: поднимем веб-сервер, базу и обработчик PHP, свяжем их между собой и проверим, что сайт открывается. К концу у вас будет рабочий стек, готовый принять первый проект.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое LEMP и почему именно он
Аббревиатура LEMP расшифровывается как Linux, Engine-X (Nginx), MariaDB (или MySQL) и PHP. В отличие от классического LAMP с Apache, здесь роль веб-сервера играет Nginx — он экономнее расходует память и заметно лучше держит много одновременных соединений. Для типичного VPS с 1–2 ГБ RAM это ощутимая разница: тот же сайт под Nginx выдержит больше посетителей, чем под Apache.
Nginx сам по себе не умеет выполнять PHP-код — он отдаёт статику и проксирует динамические запросы обработчику PHP-FPM через сокет. База данных хранит контент, пользователей, заказы. Понимание этой схемы важно: когда что-то не работает, вы сразу знаете, в каком из трёх звеньев искать проблему. Дальше мы соберём все три звена и соединим их.
Готовим систему
Подключитесь к серверу по SSH и обновите пакеты, чтобы ставить свежие версии:
sudo apt update && sudo apt upgrade -y
Обновление важно не только ради новизны: в репозитории регулярно выходят исправления безопасности, и начинать установку стека на устаревшей системе — плохая идея. Пока пакеты обновляются, убедитесь, что у вас настроен фаервол UFW и открыт доступ по SSH, иначе на следующих шагах, открывая веб-порты, можно случайно отрезать себе вход. Проверить текущие правила можно командой sudo ufw status.
Ещё один момент, который экономит нервы позже, — заранее решить, где будут лежать файлы сайтов. По умолчанию Nginx смотрит в /var/www/html, но для проектов удобнее заводить отдельную папку на каждый сайт, например /var/www/mysite. Такой порядок пригодится, когда на одном сервере появится второй и третий проект: каждому — своя директория, свой конфиг и свой домен, ничего не путается. Продумав структуру сразу, вы избавите себя от переезда файлов в будущем. Права на эти папки стоит выдать пользователю веб-сервера www-data, чтобы Nginx и PHP-FPM могли читать и при необходимости писать в них.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS на Ubuntu 24.04Устанавливаем Nginx
Поставьте веб-сервер одной командой:
sudo apt install -y nginx
Сразу после установки Nginx запускается автоматически. Разрешите его порты в фаерволе — в Ubuntu есть готовый профиль приложения:
sudo ufw allow 'Nginx Full'
Профиль Nginx Full открывает и 80 (HTTP), и 443 (HTTPS) порты. Теперь откройте в браузере http://ВАШ_IP — должна появиться стандартная страница приветствия Nginx. Если она видна, значит веб-сервер работает и доступен снаружи. Если страница не грузится, первым делом проверьте фаервол и статус службы командой systemctl status nginx: она покажет, запущен ли процесс и нет ли ошибок в конфиге.
Ставим базу данных MariaDB
MariaDB — свободная и полностью совместимая замена MySQL, которую Ubuntu предлагает по умолчанию. Установите сервер базы данных:
sudo apt install -y mariadb-server
После установки обязательно запустите скрипт первичной защиты — он закрывает типичные дыры свежей установки: удаляет анонимных пользователей, тестовую базу и запрещает удалённый вход root:
sudo mysql_secure_installation
Скрипт задаст несколько вопросов. На запрос о смене метода аутентификации и установке пароля root отвечайте осмысленно: задайте надёжный пароль и на остальные вопросы про удаление лишнего отвечайте «Y». Не пропускайте этот шаг — оставленная без защиты база данных на публичном сервере превращается в открытую дверь. Проверить, что сервер БД работает, можно командой sudo systemctl status mariadb.
Хорошая практика — не использовать пользователя root базы для сайтов. Заведите под каждый проект отдельного пользователя MariaDB с правами только на его базу. Тогда даже если код одного сайта скомпрометируют, злоумышленник не получит доступ к данным остальных проектов и к самому серверу БД. Создать базу и пользователя можно, зайдя в консоль командой sudo mariadb и выполнив три запроса: создание базы, создание пользователя с паролем и выдачу ему прав на эту базу через GRANT. Это несколько лишних минут на старте, которые многократно окупаются с точки зрения безопасности.
Подключаем PHP-FPM
Теперь установим обработчик PHP и модуль для работы с базой:
sudo apt install -y php-fpm php-mysql
PHP-FPM (FastCGI Process Manager) — это отдельная служба, которая исполняет PHP-код и общается с Nginx через Unix-сокет. В Ubuntu 24.04 это версия PHP 8.3, а сокет лежит по пути /run/php/php8.3-fpm.sock — он нам понадобится в конфиге Nginx. Важно понимать разницу с Apache: там PHP встроен в веб-сервер модулем, а в LEMP это независимый процесс, что даёт больше гибкости и стабильности — падение одного PHP-воркера не роняет весь веб-сервер. Убедитесь, что служба поднята: systemctl status php8.3-fpm.
Связываем Nginx с PHP
Осталось объяснить Nginx, что PHP-файлы нужно передавать в PHP-FPM. Создайте конфиг сайта, например /etc/nginx/sites-available/mysite, и опишите серверный блок: корень сайта в /var/www/mysite, индексный файл index.php и секцию location ~ \.php$ с директивой fastcgi_pass unix:/run/php/php8.3-fpm.sock;. После этого включите сайт символической ссылкой и проверьте синтаксис конфига перед перезапуском:
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Команда nginx -t — ваш главный друг: она проверяет конфиг на ошибки, и только если ответ «syntax is ok, test is successful», стоит применять изменения через reload. Так вы никогда не уроните работающий сайт кривым конфигом.
Проверяем, что стек работает
Создайте в корне сайта тестовый файл, чтобы убедиться, что PHP исполняется и видит базу. Положите в /var/www/mysite/info.php строку с вызовом phpinfo() и откройте http://ВАШ_IP/info.php. Если появилась подробная таблица с версией PHP и списком модулей — связка Nginx + PHP-FPM работает. В таблице найдите блок mysqli или pdo_mysql: их наличие подтверждает, что PHP умеет общаться с MariaDB. После проверки обязательно удалите этот файл командой sudo rm /var/www/mysite/info.php — он раскрывает злоумышленнику детали вашей конфигурации. На этом базовый LEMP готов: можно разворачивать WordPress, Laravel или любой другой PHP-проект. Следующим логичным шагом будет выпуск бесплатного SSL-сертификата через certbot, чтобы сайт открывался по HTTPS.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS на Ubuntu 24.04Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
MariaDB или MySQL — что выбрать?
Для большинства задач MariaDB предпочтительнее: она свободна, совместима с MySQL по командам и данным, а в репозитории Ubuntu ставится без лишних репозиториев. Перейти на MySQL при необходимости можно позже.
Почему сайт отдаёт ошибку 502 Bad Gateway?
Почти всегда это несоответствие пути сокета в конфиге Nginx реальному пути PHP-FPM. Проверьте версию PHP и поправьте fastcgi_pass под неё, затем sudo nginx -t и reload.
Хватит ли минимального VPS под LEMP?
Для небольшого сайта или блога 1 ядра и 1–2 ГБ RAM достаточно. Под нагруженный магазин или несколько проектов берите тариф с запасом по памяти под базу.
Как оплатить VPS на Ubuntu из России?
У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой и токеном MAAT — иностранная карта не нужна.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.