Что такое стеки LAMP и LEMP?
LAMP и LEMP называют четыре программы, которые обслуживают типичный сайт: Linux, веб-сервер, базу данных и PHP. A в LAMP означает Apache, а E в LEMP — Nginx (читается «энджин-икс», отсюда E). В обоих стеках база данных — MySQL или MariaDB, а язык программирования — PHP.
На этом стеке работают приложения на PHP, такие как WordPress, WooCommerce и Joomla. WordPress.org рекомендует в качестве веб-сервера Apache или Nginx, так что оба — надёжная основа. От вашего выбора не зависит, будет ли приложение работать. Меняется только то, как вы пишете настройки.
Как работает стек?
| Слой | LAMP | LEMP | Роль |
|---|---|---|---|
| Операционная система | Linux | Linux | Основа, на которой всё работает |
| Веб-сервер | Apache | Nginx | Отвечает на запросы браузеров |
| База данных | MySQL или MariaDB | MySQL или MariaDB | Хранит записи, пользователей и заказы |
| Язык | PHP | PHP через PHP-FPM | Строит страницу |
Запрос проходит через стек так:
- Браузер отправляет запрос на ваш домен. Он приходит на порт 80 или 443 вашего сервера.
- Веб-сервер принимает запрос. Если запрошено изображение или файл CSS, он отдаёт файл сам.
- Если запрошен файл PHP, веб-сервер передаёт его PHP, и PHP выполняет код.
- При необходимости 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, замените его на свой.
- Обновите список пакетов:
sudo apt update - Установите пакеты:
sudo apt install nginx mariadb-server php-fpm php-mysql. Устанавливаются версии из репозитория пакетов. - Усильте защиту базы данных:
sudo mariadb-secure-installation. Ответьте «да» на удаление анонимных пользователей, удаление тестовой базы данных и запрет удалённого входа root. - Создайте папку сайта:
sudo mkdir -p /var/www/example - Откройте файл командой
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; } } ls /run/php/показывает настоящее имя сокета. Впишите его вместоphpX.Y-fpm.sock.- Включите сайт:
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/ - Проверьте и примените конфигурацию:
sudo nginx -t, а затемsudo systemctl reload nginx - Если вы используете 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 минут, а адрес и пароль появляются в панели.
Комментарии0
Комментариев пока нет
Поделитесь своим мнением первым.
Пожалуйста, войдите или зарегистрируйтесь, чтобы оставить комментарий.