17 марта 2026 г. Редакция не окончательная, будут правки.
ОС установлена с дистрибутива Ubuntu 24.04.4 Текст - сборная солянка из разных источников.
Проверено на VPS с доменным именем и на VirtualBox 7.1.16 ( сайт на VBox без SSL сертификата )
Вместо your-domain.host подставляем свое у кого что есть типа: site.ru, 192.168.*.* и т.д. и т.п.
При установке софта на вопросы инсталлятора ( если что-то не указал ) отвечаем Y или <Enter>
Если зашли на сервер не под root -ом, то перед каждой командой добавляйте sudo ( с пробелом )
Инструкция для себя. Я не сисадмин. К косякам ( их есть у меня ) попрошу отнестись с пониманием 🙂
Install Nginx
apt update
apt upgrade -y # ( выполняем, если в предыдущем выводе: ... package(s) can be upgraded )
apt install nginx
ufw app list # ( необязательно )
ufw allow 'Nginx Full'
ufw allow 'OpenSSH'
ufw enable
ufw status
Должно быть:
Status: active
To Action From
Nginx Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Теперь тестовая страница веб-сервера уже доступна для просмотра.
Для проверки откройте браузер и введите в адресную строку доменное имя или IP-адрес вашего сервера.
Настройка Nginx
Для примера рассмотрим развертывание на нашем веб-сервере сайта с доменным именем your-domain.host
По умолчанию в Nginx включен один серверный блок, и он настроен на обслуживание файлов из каталога по адресу /var/www/html/
Это хорошо работает для одного сайта, но при размещении нескольких может возникнуть сложность в управлении.
Вместо того, чтобы изменять /var/www/html/, мы создадим структуру каталогов для your-domain.host внутри /var/www/,
при этом оставим /var/www/html/ в качестве каталога по умолчанию.
Он и будет обслуживаться, если запрос клиента не будет соответствовать каким-либо другим сайтам.
Сначала создайте корневой каталог для своего сайта ( здесь и далее замените your-domain.host на имя вашего домена )
mkdir /var/www/your-domain.host
Затем назначьте владельца каталога с помощью переменной окружения $USER.
Таким образом данная переменная будет ссылаться на вашего текущего пользователя в системе:
chown -R $USER:$USER /var/www/your-domain.host/
Затем создайте новый конфигурационный файл.
nano /etc/nginx/sites-available/your-domain.host
Скопируйте в него следующий текст:
server {
listen 80;
root /var/www/your-domain.host;
index index.php index.html index.htm index.nginx-debian.html;
server_name your-domain.host www.your-domain.host;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
add_header Cache-Control "no-cache";
add_header x-cache-enabled "true";
}
location ~ /\.ht {
deny all;
}
location ~*
^.+\.(js|css|swf|xml|txt|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires 30d;
}
}
Чтобы выйти из редактора nano с сохранением изменений жмем "Ctrl-x" затем "y" и <Enter>
Install MySQL (MariaDB 10.11)
apt install mariadb-server mariadb-client -y
systemctl status mariadb
systemctl enable mariadb
mysql_secure_installation
Отвечаем на несколько вопросов:
Enter current password for root (enter for none): <Enter>
Switch to unix_socket authentication [Y/n] y
Change the root password? [Y/n] y
2 раза вводим пароль для пользователя root базы данных ( это не системный пользователь root !)
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Install php8.4
Для установки PHP 8.4 вам понадобится репозиторий ppa:ondrej/php
apt update
add-apt-repository ppa:ondrej/php
apt update
apt upgrade
Проверяем наличие версии 8.4 в источнике:
apt policy php

apt install php8.4 -y
apt install php8.4 php8.4-opcache php8.4-fpm php8.4-cli php8.4-mysql php8.4-curl php8.4-xml php8.4-mbstring php8.4-zip php8.4-bcmath php8.4-intl php8.4-mysqlnd php8.4-gd php8.4-mcrypt php8.4-common php8.4-xsl php8.4-soap php8.4-gettext php8.4-imagick # ( Этот набор пишем в одну строку. Я установил все ради эксперимента. Вроде встало. Себе выбирайте сами то, что нужно )
apt install php8.4-fpm -y
systemctl start php8.4-fpm
systemctl enable php8.4-fpm
systemctl status php8.4-fpm

Придумываем название БД для WordPress, имя администратора БД ( это не root БД ) и хороший пароль для него.
( name_your_db, name_admin_db, password ). Пароль заключаем в одиночные вертикальные кавычки.
mysql
CREATE DATABASE name_your_db;
CREATE USER name_admin_db@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON name_your_db.* TO name_admin_db@localhost;
FLUSH PRIVILEGES;
EXIT;
apt update (и если нужно: apt upgrade -y )
apt install php-json
Активируйте новую конфигурацию Nginx используя следующую команду:
ln -s /etc/nginx/sites-available/your-domain.host /etc/nginx/sites-enabled/
После чего отлинкуйте дефолтную конфигурацию от каталога /sites-enabled/
unlink /etc/nginx/sites-enabled/default
Если когда-нибудь понадобится восстановить конфигурацию по умолчанию, вы можете сделать это, воссоздав символьную ссылку:
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
nginx -t
Если ругнется на ошибки, вернитесь к конфигурационному файлу и исправляйте.
Если ошибок нет, запустите процесс перезагрузки конфигурации Nginx:
systemctl reload nginx
С этого момента сайт уже активен, но он пуст, так как каталог /var/www/your-domain.host/ не содержит ничего.
Следовательно, в данном каталоге необходимо создать файл сайта index.html
Мы сделаем это для того, чтобы убедиться, что сайт действительно работает.
cd /var/www/your-domain.host/ && nano index.html
В качестве примера мы внесём в него следующее содержимое:
<p>Your Nginx site - your-domain.host</p>
<p>You see your new Nginx site <b>your-domain.host</b> on Ubuntu 24.04</p>
Закройте файл index.html сохранив внесённые изменения.
После чего в браузере перейдите по ссылке вида http://your-domain.host ( или, например http://your-IP-address )
Если вы увидите страницу вашего сайта, значит серверный блок Nginx работает должным образом.
Здесь под страницей сайта подразумеваются 2 короткие строчки слева сверху пустого белого поля 🙂
На данном этапе стек LEMP полностью настроен. Теперь мы создадим самый простой PHP-скрипт,
чтобы проверить, действительно ли Nginx способен обрабатывать php-файлы на только что настроенном веб-ресурсе.
Чтобы проверить работоспособность PHP, создайте файл index.php в корневом каталоге вашего сайта:
cd /var/www/your-domain.host/ && nano index.php
Затем вставьте в него следующий текст:
<?php
phpinfo();
?>
После чего закройте файл с сохранением изменений и в браузере перейдите по ссылке вида http://your-domain.host/index.php
В результате вы должны получить ( длинную! ) веб-страницу, содержащую подробную информацию о вашем сервере......
Из соображений безопасности после успешного тестирования файл index.php не забудьте удалить!
Install phpmyadmin
apt install phpmyadmin -y
В окошке с выбором вебсервера не выбираем ничего и жмем ОК
В следующем выбираем Yes (стоит по умолчанию)
nginx -t
systemctl restart nginx
ln -s /usr/share/phpmyadmin /var/www/your-domain.host/
Let's Encrypt SSL
Если есть доменное имя следует установить SSL сертификат. Платный самый простой стоил 1300 - 1700 руб. ( март 2026 )
Действует в течение 1 года. Бесплатный вариант от Let's Encrypt нужно перевыпускать каждые 90 дней ( или даже 45 ),
но это неважно - обновление происходит автоматически ( если не перевыпускается - погуглите, это вопрос решаемый )
apt update
apt install -y certbot python3-certbot-nginx
Конфигурационный файл nginx ( /etc/nginx/sites-available/your-domain.host ) Уже создан !
Директория сайта ( /var/www/your-domain.host/ ) Уже существует !
Ссылка на конфиг. nginx в каталоге /etc/nginx/sites-enabled/ Тоже должна быть !
Ссылка в каталоге /etc/nginx/sites-enabled/ на дефолтный конфиг Отсутствует!
nginx -t
systemctl restart nginx
#( вариант без ввода своей почты...)
Протестируем автоматический перевыпуск SSL сертификата:
certbot renew --dry-run
Теперь файл конфига Nginx должен выглядеть как-то так: location ~ /\.ht { listen 443 ssl; # managed by Certbot } server { listen 80;
server {
root /var/www/your-domain.host;
index index.php index.html index.htm index.nginx-debian.html;
server_name your-domain.host www.your-domain.host;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
add_header Cache-Control "no-cache";
add_header x-cache-enabled "true";
}
deny all;
}
location ~*
^.+\.(js|css|swf|xml|txt|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires 30d;
}
ssl_certificate /etc/letsencrypt/live/your-domain.host/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/your-domain.host/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
if ($host = your-domain.host) {
return 301 https://$host$request_uri;
} # managed by Certbot for redirection from http://your-domain.host to https://your-domain.host
if ($host = www.your-domain.host) {
return 301 https://$host$request_uri;
} # Added for redirection from http://www.your-domain.host to https://your-domain.host
server_name your-domain.host;
return 404; # managed by Certbot
}
Установка WordPress на Ubuntu сервер
Переходим в директорию сайта:
cd /var/www/your-domain.host
Cкачиваем последнюю версию CMS WordPress c официального сайта:
wget http://wordpress.org/latest.tar.gz
Распаковываем содержимое архива в текущую папку:
tar -xzvf latest.tar.gz
Копируем файлы WordPress из текущей папки в папку /var/www/your-domain.host/ ( пробел с точкой тоже копируем ! )
mv wordpress/* .
(можно и вот так: rsync -av wordpress/* /var/www/your-domain.host)
На эти файлы нужно установить права, а именно, пользователь "www-data" и группа "www-data"
chown -R www-data:www-data /var/www/your-domain.host/
sudo chmod -R 755 /var/www/your-domain.host/
Установка WordPress на стек LEMP завершена. Чтобы по умолчанию открывался WordPress удалим файл index.html
rm /var/www/uour-domain.host/index.html
Открываем в браузере: http://your-domain.host ( С SSL сертификатом вас перенаправит на https://your-domain.host )
Дальше вроде все просто ( или не очень 🙂 )
