LEMP-Ubuntu-24.04+WordPress

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 должен выглядеть как-то так:

Показать содержимое

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";
    }

    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;
    }

    listen 443 ssl; # managed by Certbot
    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

    }

server {
    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

    listen 80;
    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 )

Дальше вроде все просто ( или не очень 🙂 ) 

 
Флешка "памяти"
Добавить комментарий