Блог

Уроки, руководства и новости продукта.

Разработчикам

Что такое стеки LAMP и LEMP?

3 ноября 2026 5 мин. чтения
Поделиться записью

LAMP и LEMP называют четыре программы, которые обслуживают типичный сайт: Linux, веб-сервер, базу данных и PHP. A в LAMP означает Apache, а E в LEMP — Nginx (читается «энджин-икс», отсюда E). В обоих стеках база данных — MySQL или MariaDB, а язык программирования — PHP.

На этом стеке работают приложения на PHP, такие как WordPress, WooCommerce и Joomla. WordPress.org рекомендует в качестве веб-сервера Apache или Nginx, так что оба — надёжная основа. От вашего выбора не зависит, будет ли приложение работать. Меняется только то, как вы пишете настройки.

Как работает стек?

СлойLAMPLEMPРоль
Операционная системаLinuxLinuxОснова, на которой всё работает
Веб-серверApacheNginxОтвечает на запросы браузеров
База данныхMySQL или MariaDBMySQL или MariaDBХранит записи, пользователей и заказы
ЯзыкPHPPHP через PHP-FPMСтроит страницу

Запрос проходит через стек так:

  1. Браузер отправляет запрос на ваш домен. Он приходит на порт 80 или 443 вашего сервера.
  2. Веб-сервер принимает запрос. Если запрошено изображение или файл CSS, он отдаёт файл сам.
  3. Если запрошен файл PHP, веб-сервер передаёт его PHP, и PHP выполняет код.
  4. При необходимости PHP обращается к базе данных и строит страницу. Веб-сервер отправляет страницу обратно в браузер.

Если страница не открывается, проверьте слои по порядку: systemctl status nginx, systemctl status phpX.Y-fpm и systemctl status mariadb. X.Y — это ваша версия PHP (8.3 в Ubuntu 24.04), а в LAMP вместо nginx используется apache2. Проблема начинается там, где служба не работает.

Чем различаются LAMP и LEMP?

  • Apache читает файлы .htaccess, а Nginx — нет. В Nginx правила пишутся в конфигурации сервера.
  • Nginx не выполняет PHP внутри себя. Он передаёт запросы отдельной службе PHP-FPM. Apache может выполнять PHP внутри себя или через PHP-FPM.
  • Папки конфигурации различаются. В Ubuntu Apache использует /etc/apache2, а Nginx — /etc/nginx.
  • Расход памяти определяется скорее числом рабочих процессов PHP-FPM и настройками базы данных, чем выбором веб-сервера.
  • Явного лидера нет. Оба широко используются, поэтому выбор определяют руководство, по которому вы работаете, и ваши привычки.

MySQL или MariaDB?

MariaDB — это база данных с открытым исходным кодом, отделившаяся от MySQL, их команды и клиенты в основном совместимы. На официальной странице требований WordPress принимаются обе, поэтому актуальные минимальные версии смотрите там. В Ubuntu пакет mariadb-server устанавливается одной командой. Согласно документации MariaDB, начиная с версии 10.4 учётная запись root по умолчанию использует аутентификацию unix_socket. На сервере достаточно выполнить sudo mariadb. Пароль root не нужен.

Настройка LEMP на Ubuntu

Эти шаги подходят для Ubuntu и Debian. Сначала подключитесь к серверу по SSH. В примерах в качестве доменного имени используется example.com, замените его на свой.

  1. Обновите список пакетов: sudo apt update
  2. Установите пакеты: sudo apt install nginx mariadb-server php-fpm php-mysql. Устанавливаются версии из репозитория пакетов.
  3. Усильте защиту базы данных: sudo mariadb-secure-installation. Ответьте «да» на удаление анонимных пользователей, удаление тестовой базы данных и запрет удалённого входа root.
  4. Создайте папку сайта: sudo mkdir -p /var/www/example
  5. Откройте файл командой sudo nano /etc/nginx/sites-available/example и вставьте эту строку: server { listen 80; server_name example.com www.example.com; root /var/www/example; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/phpX.Y-fpm.sock; } }
  6. ls /run/php/ показывает настоящее имя сокета. Впишите его вместо phpX.Y-fpm.sock.
  7. Включите сайт: sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/
  8. Проверьте и примените конфигурацию: sudo nginx -t, а затем sudo systemctl reload nginx
  9. Если вы используете ufw, откройте порты 80 и 443: sudo ufw allow 80/tcp и sudo ufw allow 443/tcp. Убедитесь, что порт SSH (22) открыт.

Чтобы проверить работу PHP, создайте тестовый файл:

echo '<?php phpinfo();' | sudo tee /var/www/example/info.php

Если домен ещё не указывает на сервер, проверьте изнутри сервера командой curl -H 'Host: example.com' http://127.0.0.1/info.php. Как только увидите, что всё работает, удалите файл: sudo rm /var/www/example/info.php. Эта страница показывает всем данные вашего сервера.

База данных для вашего приложения

Откройте оболочку базы данных командой sudo mariadb и создайте отдельную базу данных и пользователя для каждого приложения. Надёжный пароль выберите сами:

CREATE DATABASE exampledb CHARACTER SET utf8mb4;

CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'a-strong-password';

GRANT ALL ON exampledb.* TO 'exampleuser'@'localhost';

Эти три значения (база данных, пользователь, пароль) вы вводите на экране установки WordPress. Чтобы работали постоянные ссылки WordPress, замените =404 в строке Nginx на /index.php?$args.

Что меняется для LAMP?

Для стека на Apache пакеты устанавливаются так:

sudo apt install apache2 mariadb-server php libapache2-mod-php php-mysql

Сайт описывается в /etc/apache2/sites-available и включается командой sudo a2ensite example. Для постоянных ссылок выполните sudo a2enmod rewrite и перезапустите Apache командой sudo systemctl restart apache2. Чтобы файлы .htaccess действовали, для папки сайта нужно задать AllowOverride All. Apache можно запускать и с PHP-FPM, что подходит событийной модели event. Шаги для базы данных те же, что и для LEMP.

После установки

  • Добавьте сертификат HTTPS. Let's Encrypt бесплатен, а Certbot работает и с Nginx, и с Apache.
  • Назначьте владельца папок, в которые веб-серверу нужно писать. В Ubuntu и Debian веб-сервер работает от имени пользователя www-data: sudo chown -R www-data:www-data /var/www/example.
  • Регулярно устанавливайте обновления командой sudo apt update && sudo apt upgrade. После установки обновления операционной системы и ПО — ваша ответственность.
  • Копируйте базу данных отдельно командой mariadb-dump. Ежедневный бэкап сервера входит в стоимость, но дополнительную копию важных данных всё равно стоит хранить самостоятельно.

Если хотите получить готовый стек, закажите вариант Seturack LAMP или LEMP, и он установится сам. Если вам нужен только WordPress, достаточно варианта WordPress VPS: настройка занимает около 4–5 минут, а адрес и пароль появляются в панели.

Готовое решение на Seturack: LAMP, LEMP.

Комментарии0

Комментариев пока нет

Поделитесь своим мнением первым.

Присоединяйтесь к обсуждению

Пожалуйста, войдите или зарегистрируйтесь, чтобы оставить комментарий.

Не пропускайте новые записи

Получайте наши свежие инструкции, руководства и новости продукта на почту.

Вы подписались на нашу рассылку.