Разберём установку связки Nginx + PHP-FPM + MariaDB (LEMP) на чистой Ubuntu 22.04/24.04. Это базовый стек для любого сайта на PHP — WordPress, Bitrix, самописных проектов.
Обновляем систему
sudo apt update && sudo apt upgrade -y
Устанавливаем Nginx
sudo apt install nginx -y
sudo systemctl enable --now nginx
Проверяем, что сервис поднялся и слушает 80 порт:
systemctl status nginx
ss -tulpn | grep :80
Устанавливаем PHP-FPM
Ставим PHP и набор модулей, которые обычно нужны для типового сайта (можно скорректировать под свой проект):
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring
php-xml php-zip php-intl -y
Проверяем, какая версия PHP встала и как называется сокет (у PHP-FPM он версионный, например php8.1-fpm или php8.3-fpm):
php -v
sudo systemctl status php8.3-fpm
Устанавливаем MariaDB
sudo apt install mariadb-server -y
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
В мастере mysql_secure_installation задаём пароль root, отвечаем «y» на удаление анонимных пользователей, запрет удалённого входа под root и удаление тестовой базы.
Создаём базу и пользователя под конкретный сайт:
sudo mysql -u root -p
CREATE DATABASE site_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site_user'@'localhost' IDENTIFIED BY 'НадёжныйПароль';
GRANT ALL PRIVILEGES ON site_db.* TO 'site_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Связываем Nginx и PHP-FPM
Создаём конфиг виртуального хоста:
sudo nano /etc/nginx/sites-available/site.conf
server {
listen 80;
server_name example.ru www.example.ru;
root /var/www/example.ru/html;
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;
}
}
Активируем сайт и проверяем синтаксис конфига перед перезапуском:
sudo mkdir -p /var/www/example.ru/html
sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Кладём тестовый файл info.php в корень сайта, чтобы убедиться, что связка Nginx → PHP-FPM работает:
echo "" | sudo tee /var/www/example.ru/html/info.php
Открываем в браузере http://ваш_сервер/info.php — если видим страницу с информацией о PHP, стек настроен верно. После проверки файл обязательно удалите — оставлять phpinfo() в проде нельзя, это раскрывает версии ПО и конфигурацию сервера.
sudo rm /var/www/example.ru/html/info.php
Дальше логичный шаг — выпустить SSL-сертификат через certbot (по аналогии со статьёй про certbot для nginx в RedOS) и настроить файрвол UFW, чтобы наружу торчали только нужные порты. Про UFW — в отдельной статье.