VPSРейтинг
WordPressОбновлено: февраль 2026 · 15 мин чтения

Установка WordPress на VPS: пошаговый гайд 2026

Полная инструкция: Nginx + PHP 8.3-FPM + MariaDB + SSL от Let's Encrypt на Ubuntu 22.04. В конце — настройка OPcache и кеша для быстрой работы.

Что понадобится

  • • VPS с Ubuntu 22.04 LTS (минимум 1 vCPU, 1 ГБ RAM, 20 ГБ SSD)
  • • Root-доступ по SSH
  • • Доменное имя, привязанное к IP вашего VPS (A-запись)
  • • ~30 минут времени

Нет VPS? Смотрите провайдеров для WordPress — тариф от 300₽/мес.

КомпонентЧто делаетВерсия
NginxВеб-сервер — принимает HTTP-запросы, отдаёт статику1.24+
PHP-FPMОбработчик PHP-кода WordPress8.3
MariaDBБаза данных (совместима с MySQL)10.11
CertbotSSL-сертификат от Let's Encrypt (бесплатно)latest
WordPressCMS — сам сайт6.7+

Подготовка сервера

Подключитесь к серверу по SSH и обновите систему:

Обновление системы
apt update && apt upgrade -y

Установите вспомогательные утилиты:

Базовые утилиты
apt install -y curl wget unzip git ufw

Настройте файрволл:

UFW — открываем SSH, HTTP, HTTPS
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable

1. Установка и настройка Nginx

Установка Nginx
apt install -y nginx
systemctl enable --now nginx

Проверьте, что Nginx запустился — откройте IP в браузере, должна появиться страница «Welcome to nginx». Или:

Проверка статуса
systemctl status nginx
curl -I http://localhost
# HTTP/1.1 200 OK — всё работает

2. Установка PHP 8.3-FPM

В стандартных репозиториях Ubuntu 22.04 есть PHP 8.1. Для актуальной 8.3 добавляем PPA:

Добавляем репозиторий PHP 8.3
apt install -y software-properties-common
add-apt-repository ppa:ondrej/php -y
apt update
Устанавливаем PHP 8.3 и расширения для WordPress
apt install -y php8.3-fpm php8.3-mysql php8.3-xml php8.3-curl \
  php8.3-gd php8.3-mbstring php8.3-zip php8.3-intl \
  php8.3-bcmath php8.3-imagick php8.3-opcache

Оптимизируем настройки PHP для WordPress. Открываем конфиг:

Редактируем php.ini
nano /etc/php/8.3/fpm/php.ini

Найдите и измените (или добавьте в конец файла) эти параметры:

Оптимальные параметры PHP для WordPress
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
memory_limit = 256M
max_input_vars = 3000
Перезапускаем PHP-FPM
systemctl restart php8.3-fpm
systemctl enable php8.3-fpm

3. Установка MariaDB и создание базы данных

Установка MariaDB
apt install -y mariadb-server
systemctl enable --now mariadb

Запускаем мастер безопасности — он уберёт анонимных пользователей, тестовую БД и запретит удалённый root-логин:

Защита установки MariaDB
mysql_secure_installation
# Отвечаем: n (root password), n (unix_socket), y, y, y, y

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

Создание БД и пользователя (замените пароль!)
mysql -u root

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'СильныйПароль123!';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Запишите: имя БД — wordpress, пользователь — wpuser, пароль — ваш. Они понадобятся при настройке WordPress.

4. Загрузка и настройка WordPress

Скачиваем и распаковываем WordPress
cd /var/www
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
mv wordpress ваш_домен.ru
rm latest.tar.gz
Права доступа — важно для корректной работы
chown -R www-data:www-data /var/www/ваш_домен.ru
find /var/www/ваш_домен.ru -type d -exec chmod 755 {} \;
find /var/www/ваш_домен.ru -type f -exec chmod 644 {} \;

Создаём конфиг WordPress из шаблона:

Создаём wp-config.php
cd /var/www/ваш_домен.ru
cp wp-config-sample.php wp-config.php
nano wp-config.php

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

Параметры подключения к БД в wp-config.php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'СильныйПароль123!' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );

Обязательно замените secret keys — скопируйте новые с api.wordpress.org/secret-key/1.1/salt/:

Генерация ключей (выполните на сервере, вставьте вывод в wp-config.php)
curl https://api.wordpress.org/secret-key/1.1/salt/

5. Виртуальный хост Nginx

Создаём конфигурацию сайта в Nginx:

Создаём /etc/nginx/sites-available/ваш_домен.ru
nano /etc/nginx/sites-available/ваш_домен.ru
Конфиг Nginx для WordPress (вставьте в файл)
server {
    listen 80;
    server_name ваш_домен.ru www.ваш_домен.ru;
    root /var/www/ваш_домен.ru;
    index index.php index.html;

    # Логи
    access_log /var/log/nginx/ваш_домен.ru_access.log;
    error_log  /var/log/nginx/ваш_домен.ru_error.log;

    # Максимальный размер загрузки
    client_max_body_size 64M;

    # WordPress permalinks
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP обработка
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    }

    # Безопасность: закрываем xmlrpc и wp-config
    location = /xmlrpc.php { deny all; }
    location ~ /\.ht { deny all; }

    # Кеш статики
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}
Активируем сайт и проверяем конфиг
ln -s /etc/nginx/sites-available/ваш_домен.ru /etc/nginx/sites-enabled/
nginx -t
# nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl reload nginx

6. SSL-сертификат от Let's Encrypt

Устанавливаем Certbot и получаем бесплатный SSL:

Установка Certbot (через snap)
apt install -y snapd
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Получаем сертификат (certbot сам обновит конфиг Nginx)
certbot --nginx -d ваш_домен.ru -d www.ваш_домен.ru

# Введите email, согласитесь с условиями
# Certbot спросит: перенаправлять HTTP → HTTPS? Выберите 2 (Redirect)

Проверяем автообновление:

Тест автообновления сертификата
certbot renew --dry-run
# Должно завершиться без ошибок
После этого шага ваш сайт доступен по HTTPS. Certbot автоматически обновляет сертификат за 30 дней до истечения — вручную ничего делать не нужно.

7. Установка WordPress через браузер

Откройте https://ваш_домен.ru в браузере. Откроется мастер установки WordPress:

1Выберите язык — «Русский»
2Нажмите «Вперёд» — WordPress уже знает данные БД из wp-config.php
3Заполните: название сайта, имя пользователя, пароль (сохраните!), email
4Нажмите «Установить WordPress»
5Войдите в /wp-admin/ и убедитесь, что всё работает

Если вместо формы вы видите файлы директории — значит Nginx не передаёт запросы PHP-FPM. Проверьте путь к сокету: ls /run/php/ — сокет должен называться php8.3-fpm.sock.

8. Оптимизация: OPcache и Nginx FastCGI Cache

OPcache — кеш байткода PHP

OPcache компилирует PHP-файлы один раз и хранит в памяти. WordPress загружается в 3–5 раз быстрее. Обычно включён по умолчанию, но требует настройки:

Проверяем, что OPcache включён
php8.3 -i | grep opcache.enable
# opcache.enable => On => On
Оптимальные настройки OPcache — добавьте в /etc/php/8.3/fpm/php.ini
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

FastCGI Cache — кеш страниц

FastCGI Cache сохраняет готовые HTML-страницы. Анонимные посетители получают страницу без обращения к PHP и MySQL — скорость вырастает в 10–50 раз.

Добавляем в /etc/nginx/nginx.conf — в блок http {}
fastcgi_cache_path /var/cache/nginx/wordpress
    levels=1:2 keys_zone=WORDPRESS:10m max_size=1g
    inactive=60m use_temp_path=off;
Создаём директорию кеша
mkdir -p /var/cache/nginx/wordpress
chown www-data:www-data /var/cache/nginx/wordpress

Добавляем в server-блок конфига сайта, перед location /:

Дополнение к конфигу Nginx сайта
# Не кешируем авторизованных пользователей и страницы корзины
set $skip_cache 0;
if ($request_method = POST) { set $skip_cache 1; }
if ($query_string != "")    { set $skip_cache 1; }
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php") { set $skip_cache 1; }
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}
Добавляем в location ~ \\.php$
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_use_stale error timeout invalid_header updating http_500;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;

Установите плагин Nginx Helper в WordPress — он будет автоматически сбрасывать кеш при публикации/изменении записей.

9. Базовая безопасность

Защита wp-login.php от брутфорса

Установите fail2ban и создайте правило для WordPress:

Установка fail2ban
apt install -y fail2ban

Создайте /etc/fail2ban/filter.d/wordpress.conf:

Фильтр для WordPress (wp-login.php)
[Definition]
failregex = ^<HOST> .* "POST /wp-login.php
ignoreregex =

Добавьте jail в /etc/fail2ban/jail.local:

Jail конфиг для WordPress
[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/nginx/ваш_домен.ru_access.log
maxretry = 5
bantime = 3600

Закрываем xmlrpc.php

XML-RPC используется для DDoS-амплификации. Если не нужен — отключите:

Уже прописано в нашем конфиге Nginx
location = /xmlrpc.php { deny all; }

Права доступа к файлам

Корректные права для WordPress
find /var/www/ваш_домен.ru -type d -exec chmod 755 {} \;
find /var/www/ваш_домен.ru -type f -exec chmod 644 {} \;
chmod 600 /var/www/ваш_домен.ru/wp-config.php

Автообновления WordPress

Добавьте в wp-config.php для автоматических обновлений безопасности:

Автообновление только security-релизов
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Чеклист готовности

  • Nginx запущен, сайт открывается по домену
  • PHP 8.3-FPM работает, WordPress установлен
  • HTTPS работает, HTTP перенаправляет на HTTPS
  • Загрузка изображений работает (проверьте в медиатеке)
  • Постоянные ссылки настроены (Настройки → Постоянные ссылки)
  • OPcache включён (плагин Health Check подтвердит)
  • fail2ban запущен: systemctl status fail2ban
  • Настроены автоматические бэкапы (плагин UpdraftPlus)

Частые вопросы

Смотрите также