Как установить WordPress на VPS с Nginx, MariaDB, Redis и SSL

Валерий Волков

Время прочтения 14 минут

В этом руководстве мы развернём WordPress на виртуальной машине с Ubuntu 24.04. Рабочая конфигурация будет включать Nginx, PHP-FPM, MariaDB, Redis Object Cache, домен и SSL-сертификат Let’s Encrypt.

Итоговая архитектура выглядит так: пользователь → HTTPS → Nginx → PHP-FPM и WordPress → MariaDB → Redis. Чтобы было ещё нагляднее, подготовили скриншот: 

Для установки потребуется VPS с публичным IP, Ubuntu 24.04 LTS и открытыми TCP-портами 22, 80 и 443. Для небольшой установки WordPress достаточно конфигурации с 2 vCPU, 4 ГБ оперативной памяти и 20 ГБ дискового пространства.

Конечно в наше время популярности контейнеров часто проще найти или подготовить docker-compose.yml, и, после установки докера, всё описанное ниже займёт ровно одну команду - docker-compose up -d, но мы разберём старый добрый механизм ручной установки, как минимум для понимания что же происходит "под капотом".

Сначала создадим виртуальную машину, подключим Floating IP и проверим сетевые правила. Затем установим Nginx, PHP-FPM, MariaDB и Redis, создадим отдельную базу данных и пользователя для WordPress, загрузим файлы CMS и настроим права доступа.

Nginx будет принимать HTTP- и HTTPS-запросы и передавать PHP-файлы в PHP-FPM. MariaDB будет хранить страницы, пользователей и настройки сайта. Redis будет использоваться для объектного кеширования и снижения количества повторных запросов к базе данных.

Для сайта будет использоваться поддомен: wordpress.deploy-test-lab.com

После создания DNS-записи выпустим SSL-сертификат Let’s Encrypt и настроим автоматический редирект с HTTP на HTTPS. Затем пройдём мастер установки WordPress, создадим администратора и подключим Redis Object Cache.

В результате получим рабочий WordPress-сайт, доступный по HTTPS, с отдельной базой MariaDB, кешированием Redis и автоматическим запуском всех необходимых сервисов после перезагрузки VPS.

Архитектура WordPress на VPS 

Перед установкой полезно понять, какие компоненты будут работать на сервере и за что отвечает каждый из них. WordPress, как веб-приложение, не запускается сам по себе: он зависит от веб-сервера, PHP, базы данных и кеша. 

Какие компоненты понадобятся 

Для развёртывания WordPress установим несколько компонентов: 

Компонент Назначение 
Ubuntu 24.04 LTS Операционная система виртуальной машины 
Nginx Принимает HTTP- и HTTPS-запросы, терминирует SSL 
PHP-FPM Выполняет PHP-код WordPress 
MariaDB Хранит страницы, пользователей и настройки сайта 
WordPress Система управления содержимым 
Redis Кеширует объекты и снижает количество повторных запросов к базе 
Certbot Выпускает и обновляет SSL-сертификат Let’s Encrypt 

Для небольшой установки достаточно VPS с 2 vCPU, 4 ГБ оперативной памяти и 20 ГБ диска. Серверу также понадобятся публичный IP и входящие TCP-порты 22, 80 и 443.

Как взаимодействуют Nginx, PHP-FPM, MariaDB и Redis

Когда пользователь открывает сайт, запрос сначала приходит в Nginx. Статические файлы — изображения, CSS и JavaScript — Nginx может отдавать напрямую.

Если запрашивается PHP-страница, Nginx передаёт её в PHP-FPM. PHP выполняет код WordPress, а WordPress обращается к MariaDB за содержимым страницы, настройками и данными пользователя.

Redis дополняет эту схему объектным кешем. WordPress может сохранять в нём часто используемые результаты запросов и получать их повторно без постоянного обращения к MariaDB.

В итоге каждый компонент выполняет отдельную задачу: Nginx принимает запросы, PHP-FPM запускает WordPress, MariaDB хранит постоянные данные, а Redis ускоряет повторные операции.

Подготовка виртуальной машины

Установку начнём с создания чистой виртуальной машины на Ubuntu 24.04 LTS. Затем подключим публичный IP, проверим сетевые правила и войдём на сервер по SSH.

Создание VM в облачной панели

В панели облака создайте новую виртуальную машину. Для демонстрационного WordPress-сайта используем следующую конфигурацию:

  • Имя VM — wordpress-guide;
  • Образ — Ubuntu 24.04 LTS;
  • 2 vCPU;
  • 4 ГБ оперативной памяти;
  • Системный диск 20 ГБ;
  • Приватная сеть проекта;
  • Авторизация по SSH key pair.

Приватный SSH-ключ нужно сохранить при создании key pair. Он потребуется для подключения к серверу и повторно обычно не выдаётся.

После подтверждения дождитесь статуса Active.

Подключение публичного IP и настройка firewall

Виртуальная машина получает приватный адрес внутри облачной сети. Чтобы подключаться к ней из интернета и открыть WordPress по домену, нужно привязать Floating IP.

В нашем примере VM получила:

Private IP: 172.30.16.104

Floating IP: 203.0.113.10

Для работы понадобятся входящие TCP-порты:

Порт Назначение 
22Подключение по SSH 
80HTTP и выпуск сертификата Let’s Encrypt 
443HTTPS 

Эти правила можно настроить в security group облачной панели.

Подключение к серверу по SSH

Мы будем использовать командную строку, например на Windows можно использовать PowerShell или Windows Terminal. Перейдите в каталог, где сохранён приватный SSH-ключ, и выполните команду: ssh -i .\wordpress-guide.pem ubuntu@<FLOATING_IP>

Стоит отметить, что ssh доступен по-умолчанию в современных версиях Windows, в старых его можно поставить отдельно или использовать альтернативные клиенты. 

Вместо <FLOATING_IP> укажите публичный IP своей виртуальной машины. Его можно посмотреть в списке instances или в разделе Floating IPs облачной панели.

В нашем случае серверу назначен адрес 203.0.113.10, поэтому команда выглядит так: ssh -i .\wordpress-guide.pem ubuntu@203.0.113.10

Имя файла ключа у читателя также может отличаться. Вместо wordpress-guide.pem нужно указать путь к своему приватному ключу.

Имя пользователя зависит от выбранного образа. Для Ubuntu cloud images обычно используется пользователь ubuntu.

При первом подключении SSH предложит подтвердить fingerprint сервера. Введите: yes

После успешной авторизации откроется терминал виртуальной машины. Все дальнейшие команды выполняются уже непосредственно на VPS.

Обновление Ubuntu

Перед установкой WordPress-стека обновите список пакетов и установленные компоненты:

sudo apt update

sudo apt upgrade -y

Затем установите базовые утилиты: sudo apt install -y curl wget unzip ca-certificates ufw

Проверьте версию системы: lsb_release -a

После обновления можно переходить к установке Nginx, PHP-FPM, MariaDB и Redis.

Установка Nginx, PHP, MariaDB и Redis

Установка системных пакетов

После обновления Ubuntu установите веб-сервер Nginx, MariaDB, Redis, PHP-FPM и расширения PHP, необходимые для работы WordPress:

sudo apt install -y nginx mariadb-server redis-server \

php-fpm php-mysql php-curl php-gd php-intl php-mbstring \

php-xml php-zip php-redis

Пакет php-fpm устанавливает PHP FastCGI Process Manager, через который Nginx будет выполнять PHP-код. Остальные расширения обеспечивают подключение к MariaDB, обработку изображений, архивов, XML, многобайтовых строк и сетевых запросов.

Актуальная версия WordPress рекомендует использовать PHP 8.3 или новее и MariaDB 10.11 или новее. В стандартных репозиториях Ubuntu 24.04 доступны подходящие версии этих компонентов.

После установки включите автоматический запуск сервисов:

sudo systemctl enable nginx

sudo systemctl enable mariadb

sudo systemctl enable php8.3-fpm

sudo systemctl enable redis-server

Запустите их, если они ещё не были запущены автоматически: sudo systemctl start nginx mariadb php8.3-fpm redis-server

Проверка запущенных сервисов

Проверьте состояние всех четырёх сервисов одной командой:

for service in nginx mariadb php8.3-fpm redis-server; do

    printf "%-15s " "$service:"

    systemctl is-active "$service"

done

При исправной установке напротив каждого сервиса появится статус active:

nginx: active

mariadb: active

php8.3-fpm: active

redis-server: active

Отдельный сервис можно проверить подробнее. Например, для Nginx используется команда: sudo systemctl status nginx --no-pager

Если все компоненты работают, можно переходить к подготовке базы данных.

Настройка MariaDB

Запустите встроенный сценарий первоначальной защиты MariaDB: sudo mariadb-secure-installation

Сценарий последовательно предложит изменить параметры безопасности. Набор вопросов может зависеть от версии MariaDB. Для отдельного WordPress-сервера рекомендуется:

  • Оставить вход администратора базы через Unix socket;
  • Удалить анонимных пользователей;
  • Запретить удалённый вход для пользователя root;
  • Удалить тестовую базу данных;
  • Обновить таблицы привилегий.

Удалённый доступ к MariaDB для этой конфигурации не нужен: WordPress и база данных работают на одной виртуальной машине.

После завершения откройте консоль MariaDB: sudo mariadb

Если появилось приглашение вида MariaDB [(none)]>, подключение выполнено успешно.

Создание базы данных и пользователя WordPress

Создайте отдельную базу данных:

CREATE DATABASE wordpress

DEFAULT CHARACTER SET utf8mb4

COLLATE utf8mb4_unicode_ci;

Затем создайте пользователя, от имени которого WordPress будет подключаться к MariaDB:

CREATE USER 'wordpress_user'@'localhost'

IDENTIFIED BY 'STRONG_DATABASE_PASSWORD';

Вместо STRONG_DATABASE_PASSWORD укажите собственный сложный пароль. Он понадобится позднее при заполнении файла wp-config.php.

Выдайте пользователю права только на базу WordPress:

GRANT ALL PRIVILEGES ON wordpress.*

TO 'wordpress_user'@'localhost';

Примените изменения: FLUSH PRIVILEGES;

Проверьте созданную базу: SHOW DATABASES;

В списке должна присутствовать строка wordpress. После проверки выйдите из MariaDB: EXIT;

Использование отдельного пользователя ограничивает его доступ одной базой вместо предоставления WordPress административных прав на весь сервер MariaDB. Официальное руководство WordPress также предусматривает предварительное создание базы данных и пользователя с правами на неё.

Проверка Redis

Убедитесь, что Redis отвечает на локальные запросы: redis-cli ping

Исправный сервер вернёт: PONG

Redis устанавливается на той же VM и не должен быть доступен напрямую из интернета. WordPress будет обращаться к нему локально через PHP-расширение php-redis. Проверка командой redis-cli ping рекомендована в официальной документации Redis.

На этом серверная часть стека подготовлена: Nginx принимает веб-запросы, PHP-FPM выполняет PHP-код, MariaDB готова хранить данные сайта, а Redis — обслуживать объектный кеш.

Установка WordPress

Загрузка и размещение файлов

Перейдите во временный каталог и загрузите последнюю стабильную версию WordPress с официального сайта:

cd /tmp

curl -O https://wordpress.org/latest.tar.gz

Распакуйте архив: tar -xzf latest.tar.gz

Переместите полученный каталог в /var/www: sudo mv wordpress /var/www/wordpress

Проверьте содержимое: ls -la /var/www/wordpress

В каталоге должны находиться файлы и папки WordPress, включая:

index.php

wp-admin

wp-content

wp-includes

wp-config-sample.php

После успешного переноса загруженный архив можно удалить: rm /tmp/latest.tar.gz

Официальная ручная установка WordPress также предполагает загрузку дистрибутива, создание базы данных и последующий запуск установочного сценария через браузер.

Настройка владельца и прав

Назначьте владельцем файлов системного пользователя www-data, от имени которого PHP-FPM и Nginx работают с содержимым сайта: sudo chown -R www-data:www-data /var/www/wordpress

Для каталогов установите права 755: sudo find /var/www/wordpress -type d -exec chmod 755 {} \;

Для файлов установите права 644: sudo find /var/www/wordpress -type f -exec chmod 644 {} \;

Такая конфигурация позволяет владельцу изменять файлы, а остальным пользователям — только читать их и переходить по каталогам. Выдавать каталогу WordPress права 777 не требуется.

Создание wp-config.php

Создайте рабочий конфигурационный файл на основе шаблона:

sudo cp /var/www/wordpress/wp-config-sample.php \

/var/www/wordpress/wp-config.php

Откройте его в редакторе: sudo nano /var/www/wordpress/wp-config.php

Найдите блок параметров базы данных:

define( 'DB_NAME', 'database_name_here' );

define( 'DB_USER', 'username_here' );

define( 'DB_PASSWORD', 'password_here' );

define( 'DB_HOST', 'localhost' );

Замените значения на данные, созданные в MariaDB:

define( 'DB_NAME', 'wordpress' );

define( 'DB_USER', 'wordpress_user' );

define( 'DB_PASSWORD', 'STRONG_DATABASE_PASSWORD' );

define( 'DB_HOST', 'localhost' );

Значение STRONG_DATABASE_PASSWORD нужно заменить тем же паролем, который был указан при создании пользователя MariaDB.

Далее откройте в браузере официальный генератор уникальных ключей WordPress: https://api.wordpress.org/secret-key/1.1/salt/

Скопируйте сгенерированный блок и замените им строки с AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY и соответствующими значениями SALT в файле wp-config.php.

Сохраните изменения сочетанием Ctrl+O, подтвердите имя файла клавишей Enter и закройте Nano сочетанием Ctrl+X.

После редактирования дополнительно ограничьте доступ к конфигурационному файлу: sudo chmod 640 /var/www/wordpress/wp-config.php

Подключение WordPress к MariaDB

Проверить данные базы можно до настройки Nginx. Выполните вход от имени созданного пользователя: mariadb -u wordpress_user -p wordpress

Введите пароль базы данных. После успешного подключения появится приглашение: MariaDB [wordpress]>

Проверьте текущую базу: SELECT DATABASE();

Ожидаемый результат: wordpress

Завершите сеанс: EXIT;

Это подтверждает, что база существует, пользователь авторизуется и имеет к ней доступ. Сам WordPress создаст необходимые таблицы позднее, во время запуска веб-мастера установки.

Файлы CMS и параметры базы теперь подготовлены. Следующим этапом станет создание server block Nginx и передача PHP-запросов в PHP-FPM.

Настройка Nginx

Создание server block

Создайте отдельный конфигурационный файл Nginx для WordPress: sudo nano /etc/nginx/sites-available/wordpress

Добавьте в него следующую конфигурацию:

server {

    listen 80;

    listen [::]:80;

    server_name wordpress.deploy-test-lab.com;

    root /var/www/wordpress;

    index index.php index.html;

    access_log /var/log/nginx/wordpress_access.log;

    error_log /var/log/nginx/wordpress_error.log;

    client_max_body_size 64M;

    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;

    }

}

Директива server_name должна содержать домен или поддомен, который будет использоваться для сайта. В нашем случае это: wordpress.deploy-test-lab.com

Если используется другой домен, его необходимо заменить как в конфигурации Nginx, так и в последующих командах Certbot.

Параметр root указывает на каталог с файлами WordPress. Конструкция try_files сначала проверяет наличие запрошенного файла или каталога, а затем направляет запрос в index.php. Благодаря этому WordPress сможет обрабатывать постоянные ссылки на страницы и записи.

Сохраните файл сочетанием Ctrl+O, нажмите Enter и закройте Nano сочетанием Ctrl+X.

Активируйте конфигурацию, создав символическую ссылку в каталоге sites-enabled:

sudo ln -s /etc/nginx/sites-available/wordpress \

/etc/nginx/sites-enabled/wordpress

Стандартную конфигурацию Nginx можно отключить, чтобы она не перехватывала запросы к серверу: sudo rm -f /etc/nginx/sites-enabled/default

Отдельные server blocks позволяют обслуживать на одном VPS несколько сайтов с разными доменами и каталогами. Nginx выбирает подходящий блок по адресу и значению server_name.

Подключение PHP-FPM

Nginx не выполняет PHP-код самостоятельно. Запросы к файлам с расширением .php передаются сервису PHP-FPM через Unix-сокет:

location ~ \.php$ {

    include snippets/fastcgi-php.conf;

    fastcgi_pass unix:/run/php/php8.3-fpm.sock;

}

Проверьте, что сокет PHP-FPM существует: ls -l /run/php/

В выводе должен присутствовать файл: php8.3-fpm.sock

Также можно проверить установленную версию PHP: php -v

И состояние PHP-FPM: systemctl is-active php8.3-fpm

При исправной работе команда вернёт: active

Если на сервере установлена другая версия PHP, имя сокета в конфигурации Nginx необходимо изменить. Например, для PHP 8.4 путь может выглядеть как /run/php/php8.4-fpm.sock.

Проверка конфигурации Nginx

Перед применением изменений проверьте синтаксис всех конфигурационных файлов: sudo nginx -t

При отсутствии ошибок Nginx выведет сообщения:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Параметр -t проверяет синтаксис конфигурации и доступность указанных в ней файлов.

После успешной проверки перезагрузите конфигурацию без остановки веб-сервера: sudo systemctl reload nginx

Проверьте ответ сервера по локальному адресу: curl -I -H "Host: wordpress.deploy-test-lab.com" http://127.0.0.1

На этом этапе в ответе может отображаться код 200, 301 или 302 — результат зависит от состояния установки WordPress. Главное, чтобы запрос обрабатывался созданным server block, а Nginx не возвращал ошибку конфигурации.

Домен и SSL

Создание DNS-записи

Чтобы сайт открывался по доменному имени, создайте в DNS-зоне запись типа A.

Для используемого в руководстве поддомена параметры выглядят так:

Параметр Значение 
Тип 
Имя wordpress 
IPv4-адрес 203.0.113.10 
TTL Auto или значение по умолчанию 

В данном случае 203.0.113.10 — Floating IP нашей виртуальной машины. В своей конфигурации необходимо указать публичный IP, назначенный вашему VPS.

Если DNS-зона обслуживается через Cloudflare, на время первоначальной настройки можно установить для записи режим DNS only. В этом режиме DNS возвращает реальный IP сервера и не направляет запрос через прокси Cloudflare.

После сохранения записи проверьте, на какой адрес указывает поддомен: getent hosts wordpress.deploy-test-lab.com

Либо выполните проверку с локального компьютера: nslookup wordpress.deploy-test-lab.com

В результате должен отображаться публичный IP VPS: 203.0.113.10

Обновление DNS может занять некоторое время. Выпускать сертификат следует только после того, как домен начнёт указывать на нужный сервер.

Дополнительно проверьте доступность сайта по HTTP: curl -I http://wordpress.deploy-test-lab.com

Для проверки домена через HTTP сервер должен быть доступен снаружи по TCP-порту 80. Let’s Encrypt использует его при проверке HTTP-01, поэтому полностью закрывать порт 80 после настройки HTTPS также не рекомендуется.

Выпуск сертификата Let’s Encrypt

Для автоматического получения сертификата и настройки Nginx установите Certbot. Официальная инструкция Certbot для Nginx рекомендует установку через Snap:

sudo snap install core

sudo snap refresh core

sudo snap install --classic certbot

Проверьте установленную версию: /snap/bin/certbot --version

Запросите сертификат для поддомена:

sudo /snap/bin/certbot --nginx \

-d wordpress.deploy-test-lab.com

Certbot попросит указать адрес электронной почты, принять условия использования и выбрать, нужно ли делиться адресом с партнёрами проекта.

После подтверждения Certbot:

  1. Проверит, что домен указывает на этот сервер;
  2. Выпустит сертификат Let’s Encrypt;
  3. Добавит SSL-параметры в конфигурацию Nginx;
  4. Настроит перенаправление с HTTP на HTTPS.

Плагин --nginx может автоматически изменить конфигурацию веб-сервера и включить HTTPS для уже работающего HTTP-сайта. Перед запуском Certbot сайт должен быть доступен через Nginx по своему доменному имени.

После выпуска сертификата повторно проверьте конфигурацию: sudo nginx -t

Затем убедитесь, что автоматическое обновление сертификатов работает: sudo /snap/bin/certbot renew --dry-run

Команда выполняет тестовое обновление без замены действующего сертификата.

Проверка HTTPS и автоматического редиректа

Откройте в браузере: https://wordpress.deploy-test-lab.com

Соединение должно быть защищено действующим сертификатом, а браузер не должен показывать предупреждения о безопасности.

Проверьте перенаправление с HTTP: curl -I http://wordpress.deploy-test-lab.com

В ответе должен присутствовать код перенаправления и HTTPS-адрес:

HTTP/1.1 301 Moved Permanently

Location: https://wordpress.deploy-test-lab.com/

После этого проверьте ответ защищённой версии: curl -I https://wordpress.deploy-test-lab.com

В зависимости от текущего этапа установки WordPress сервер должен вернуть успешный ответ или перенаправление на мастер настройки: HTTP/2 200 или HTTP/2 302

Таким образом, запросы к сайту принимаются Nginx, незашифрованные подключения перенаправляются на HTTPS, а сертификат Let’s Encrypt используется для защиты трафика.

Первичная настройка WordPress

Запуск мастера установки

После настройки домена, Nginx и SSL откройте сайт в браузере. У нас это будет: https://wordpress.deploy-test-lab.com

Поскольку таблицы WordPress ещё не созданы, вместо готового сайта откроется мастер первоначальной настройки. Сначала выберите язык интерфейса и нажмите Continue.

Если мастер не открывается автоматически, перейдите по адресу: https://wordpress.deploy-test-lab.com/wp-admin/install.php

WordPress использует параметры из файла wp-config.php, подключается к ранее созданной базе MariaDB и во время установки создаёт в ней необходимые таблицы.

Создание администратора и параметров сайта

На следующем экране заполните основные параметры сайта:

  • Название сайта — например, Deploy Test Lab;
  • Имя пользователя — логин администратора;
  • Пароль — сложный уникальный пароль;
  • Ваш email — адрес администратора;
  • Видимость для поисковых систем — для временного стенда можно попросить поисковые системы не индексировать сайт.

Отдельно отметим, что не рекомендуется использовать в качестве логина стандартное имя admin. Для рабочего проекта лучше выбрать отдельное имя, которое сложно угадать.

Параметр видимости не блокирует доступ к сайту, а только передаёт поисковым системам просьбу не индексировать его. Для демонстрационного стенда эту настройку можно включить, а перед публикацией полноценного сайта — отключить в разделе Настройки → Чтение.

Нажмите Установить WordPress. После завершения появится сообщение об успешной установке и кнопка входа.

Авторизуйтесь с помощью созданной учётной записи: https://wordpress.deploy-test-lab.com/wp-login.php

Название сайта, email и некоторые другие параметры позднее можно изменить через административную панель.

Проверка панели управления

После входа откроется панель управления WordPress: https://wordpress.deploy-test-lab.com/wp-admin/

На главной странице Dashboard отображаются сведения о состоянии сайта, публикациях, комментариях и текущей конфигурации WordPress. Через боковое меню можно управлять страницами, записями, пользователями, темами, плагинами и общими настройками.

Проверьте, что:

  • Административная панель открывается по HTTPS;
  • Имя сайта отображается без ошибок;
  • Страницы панели загружаются корректно;
  • В браузере отсутствуют предупреждения о сертификате.

После этого базовую установку WordPress можно считать завершённой. Далее подключим постоянный объектный кеш Redis.

Подключение Redis

Установка и активация Redis Object Cache

Redis уже установлен на VPS, а расширение php-redis обеспечивает взаимодействие между PHP и сервером Redis. Теперь необходимо подключить WordPress к Redis с помощью плагина Redis Object Cache.

В панели управления откройте: Плагины → Добавить плагин

В строке поиска введите: Redis Object Cache

Выберите плагин Redis Object Cache, установите его и нажмите Активировать.

Плагин добавляет в WordPress постоянный объектный кеш. Часто используемые результаты запросов могут сохраняться в Redis и повторно извлекаться без нового обращения к MariaDB. Redis при этом не заменяет базу данных: постоянные данные сайта по-прежнему хранятся в MariaDB.

Для текущей конфигурации Redis работает локально со стандартными параметрами:

Host: 127.0.0.1

Port: 6379

Database: 0

Обычно плагин обнаруживает локальный Redis автоматически. Чтобы явно закрепить параметры подключения, откройте файл: sudo nano /var/www/wordpress/wp-config.php

Перед строкой: /* That's all, stop editing! Happy publishing. */

добавьте:

define( 'WP_REDIS_HOST', '127.0.0.1' );

define( 'WP_REDIS_PORT', 6379 );

define( 'WP_REDIS_DATABASE', 0 );

define( 'WP_REDIS_PREFIX', 'wordpress:' );

Префикс помогает отделить ключи этого WordPress-сайта от данных других приложений, если один сервер Redis в дальнейшем будет использоваться несколькими проектами.

Сохраните файл и перезапустите PHP-FPM: sudo systemctl restart php8.3-fpm

Проверьте, что Redis и PHP-FPM работают: systemctl is-active redis-server php8.3-fpm

Если всё ок, то ожидаемый результат: active

Проверка подключения к Redis

В панели WordPress откройте: Настройки → Redis

Если сервер Redis доступен, на странице плагина появится информация о подключении. Нажмите Enable Object Cache, чтобы установить drop-in-файл object-cache.php и включить постоянное объектное кеширование.

После активации проверьте основные показатели:

Status: Connected

Drop-in: Valid

Redis: Reachable

Названия отдельных полей могут немного отличаться в зависимости от версии плагина, но основной статус должен показывать успешное подключение.

Дополнительно убедитесь, что WordPress создал drop-in-файл: ls -l /var/www/wordpress/wp-content/object-cache.php

Проверьте Redis через терминал: redis-cli ping

Ответ должен остаться прежним: PONG

Посмотреть количество сохранённых ключей можно командой: redis-cli DBSIZE

Сразу после подключения значение может быть небольшим. Откройте несколько страниц сайта и административной панели, а затем повторите команду. Количество ключей должно увеличиться.

После появления статуса Connected WordPress начинает использовать Redis как постоянный объектный кеш. При этом очистка кеша не удаляет записи, страницы или настройки из MariaDB — она удаляет только временные данные, которые WordPress при необходимости создаст заново.

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

Статус сервисов

После завершения настройки проверьте состояние всех компонентов стека:

for service in nginx mariadb php8.3-fpm redis-server; do

    printf "%-15s " "$service:"

    systemctl is-active "$service"

done

Ожидаемый результат:

nginx: active

mariadb: active

php8.3-fpm: active

redis-server: active

Если один из сервисов не запущен, посмотрите его подробный статус. Например: sudo systemctl status nginx --no-pager

По аналогии можно проверить mariadb, php8.3-fpm и redis-server.

Проверка сайта и HTTPS

Откройте сайт в браузере. В нашем случае это будет: https://wordpress.deploy-test-lab.com

Убедитесь, что главная страница загружается без ошибок, а браузер не показывает предупреждение о сертификате.

Проверьте перенаправление с HTTP: curl -I http://wordpress.deploy-test-lab.com

В ответе должен присутствовать код 301 или 308 и заголовок Location с HTTPS-адресом:

Location: https://wordpress.deploy-test-lab.com/

Затем проверьте защищённую версию: curl -I https://wordpress.deploy-test-lab.com

Сервер должен вернуть успешный ответ или перенаправление на другую страницу WordPress.

Проверка базы данных и Redis

Проверьте доступ к базе данных от имени пользователя WordPress: mariadb -u wordpress_user -p wordpress

После ввода пароля выполните: SHOW TABLES;

После завершения установки в базе должны присутствовать таблицы WordPress, включая wp_posts, wp_users, wp_options и другие.

Завершите сеанс: EXIT;

Проверьте ответ Redis: redis-cli ping

Ожидаемый результат: PONG

Затем посмотрите количество ключей: redis-cli DBSIZE

Если Redis Object Cache включён и сайт уже открывался несколько раз, значение должно быть больше нуля.

Дополнительно можно проверить наличие drop-in-файла: ls -l /var/www/wordpress/wp-content/object-cache.php

Проверка автозапуска после reboot

Убедитесь, что все сервисы включены в автозагрузку:

for service in nginx mariadb php8.3-fpm redis-server; do

    printf "%-15s " "$service:"

    systemctl is-enabled "$service"

done

Для каждого компонента должен отображаться статус enabled.

Перезагрузите VPS: sudo reboot

SSH-соединение будет разорвано. Подождите около минуты и подключитесь к серверу повторно: ssh -i .\wordpress-guide.pem ubuntu@203.0.113.10

В своей команде необходимо использовать имя собственного приватного ключа и публичный IP своей виртуальной машины.

После повторного входа снова проверьте сервисы:

for service in nginx mariadb php8.3-fpm redis-server; do

    printf "%-15s " "$service:"

    systemctl is-active "$service"

done

Также откройте сайт в браузере и убедитесь, что WordPress по-прежнему доступен по HTTPS, а Redis Object Cache сохраняет статус Connected.

После этой проверки можно считать, что виртуальная машина, веб-сервер, PHP, база данных, Redis и SSL корректно работают и запускаются автоматически.

Заключение

В результате на VPS с Ubuntu 24.04 LTS развёрнут полноценный WordPress-стек на базе Nginx, PHP-FPM, MariaDB и Redis. Сайт доступен по доменному имени через HTTPS, а сертификат Let’s Encrypt обновляется автоматически.

Nginx принимает входящие запросы и передаёт PHP-файлы в PHP-FPM. MariaDB хранит постоянные данные сайта, а Redis Object Cache снижает количество повторных запросов к базе данных. Все основные сервисы включены в автозагрузку и продолжают работать после перезагрузки виртуальной машины.

Такая конфигурация подходит для небольшого сайта, блога, корпоративной страницы или тестового проекта. При росте нагрузки её можно расширить: увеличить ресурсы VPS, подключить резервное копирование, вынести базу данных на отдельный сервер или добавить CDN.

FAQ

Какая конфигурация VPS нужна для WordPress?

Для небольшого сайта или тестового стенда подойдёт виртуальная машина с 2 vCPU, 4 ГБ оперативной памяти и диском от 20 ГБ. Этого достаточно для Ubuntu, Nginx, PHP-FPM, MariaDB, Redis и самого WordPress.

При росте посещаемости, увеличении количества плагинов или использовании тяжёлой темы ресурсы VPS можно увеличить без изменения общей архитектуры.

Можно ли установить WordPress без Redis?

Да. Redis не является обязательным компонентом WordPress. Сайт продолжит работать с Nginx, PHP-FPM и MariaDB.

Redis Object Cache используется для ускорения повторных операций и уменьшения количества обращений к базе данных. Для небольшого сайта эффект может быть умеренным, но при росте нагрузки объектный кеш становится полезнее.

Почему используется MariaDB, а не MySQL?

WordPress поддерживает обе системы. В этой инструкции используется MariaDB, поскольку она доступна в стандартных репозиториях Ubuntu и совместима с WordPress.

На момент подготовки руководства WordPress рекомендует PHP 8.3 или новее и MariaDB 10.11 или новее.

Зачем нужен PHP-FPM?

Nginx не выполняет PHP-код самостоятельно. Он передаёт PHP-запросы в PHP-FPM, который запускает WordPress и возвращает результат веб-серверу.

Если PHP-FPM остановлен или в server block указан неправильный путь к сокету, PHP-страницы не будут обрабатываться.

Можно ли открыть WordPress только по IP-адресу?

До настройки домена сервер можно проверить по публичному IP, но для постоянной работы лучше использовать доменное имя.

Домен необходим для удобного доступа к сайту и выпуска полноценного SSL-сертификата Let’s Encrypt. Кроме того, Nginx выбирает нужный server block по значению server_name и заголовку Host.

Нужно ли оставлять порт 80 открытым после настройки HTTPS?

Да. Порт 80 используется для перенаправления пользователей с HTTP на HTTPS и может потребоваться для проверки домена при выпуске или обновлении сертификата через HTTP-01.

Основной трафик сайта при этом передаётся через HTTPS по порту 443.

Где хранятся файлы и данные WordPress?

В этой конфигурации файлы WordPress находятся в каталоге: /var/www/wordpress

Страницы, настройки, пользователи и другие постоянные данные хранятся в базе MariaDB wordpress. Redis содержит только временный объектный кеш и не заменяет основную базу данных.

Что произойдёт после перезагрузки VPS?

Если Nginx, MariaDB, PHP-FPM и Redis включены через systemctl enable, они запустятся автоматически вместе с Ubuntu.

После перезагрузки рекомендуется проверить статус сервисов, доступность сайта по HTTPS и состояние Redis Object Cache.

Список источников

  1. WordPress.org. Requirements
  2. WordPress Developer Resources. How to install WordPress 
  3. WordPress Developer Resources. Before You Install 
  4. Nginx Documentation. How nginx processes a request 
  5. Nginx Documentation. Module ngx_http_core_module 
  6. Nginx Documentation. Server names 
  7. Certbot. Nginx instructions 
  8. Redis Documentation. Install Redis Open Source on Linux 
  9. Redis Documentation. Install Redis

Подпишитесь на нашу рассылку и получайте статьи и новости

    Ознакомьтесь с другими нашими материалами