Как настроить VPS с нуля под WordPress — пошаговый гайд | Мастерская — статьи по WordPress и серверам | de-bor.ru

Частный web-мастер Денис Борисов
WordPress-сайтов

Как настроить VPS с нуля под WordPress — пошаговый гайд

Nginx и VPS · 2026-08-12 · обновлено 2026-08-12 · 11 мин чтения
Настроить VPS под WordPress можно без панели управления: установить Nginx, PHP-FPM, MariaDB, настроить пользователя, firewall, сайт и HTTPS. Для небольшого WordPress разумная стартовая конфигурация - 2 vCPU, 2 ГБ RAM и 20-30 ГБ NVMe. Для WooCommerce, нескольких сайтов на одном сервере или заметной нагрузки лучше рассматривать от 4 ГБ RAM. Это практическая рекомендация, а не официальное минимальное требование WordPress.

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

Когда нужен VPS

  1. Нужен контроль над сервером - на shared-хостинге нельзя самостоятельно менять конфигурацию Nginx, PHP-FPM, системный firewall и другие параметры.
  2. Сайт упирается в ограничения shared-хостинга - при росте нагрузки могут возникать очереди PHP-запросов, ограничения CPU или памяти, 502/504 и другие проблемы. На VPS параметры можно диагностировать и изменять самостоятельно.
  3. Нужны дополнительные сервисы - Redis, собственный cron, дополнительные системные службы, специфические PHP-расширения или фоновые процессы проще запускать на VPS.
  4. Растёт нагрузка на базу данных - WooCommerce и сайты с большим количеством записей могут требовать настройки MariaDB/MySQL, PHP-FPM и серверных ресурсов, которые недоступны на обычном shared-тарифе.
Когда остаться на shared - если сайт небольшой, нагрузка стабильная, а дополнительных серверных настроек не требуется, shared-хостинг обычно проще. Провайдер сам занимается операционной системой, веб-сервером, PHP и частью резервного копирования. VPS имеет смысл тогда, когда преимущества контроля над сервером перекрывают необходимость самостоятельно его администрировать.

Какие ресурсы выбрать

Практическая стартовая конфигурация для небольшого WordPress:

  • 2 vCPU;
  • 2 ГБ RAM;
  • 20-30 ГБ NVMe;
  • Ubuntu 24.04 LTS;
  • Nginx;
  • PHP 8.3;
  • MariaDB 10.11+.

WordPress рекомендует PHP 8.3 или новее и MariaDB 10.11+ либо MySQL 8.0+. Это актуальные рекомендации на момент подготовки статьи, а не минимальные технические требования.

Ubuntu 24.04 LTS остаётся поддерживаемой LTS-версией со стандартной поддержкой до 2029 года. Ubuntu 26.04 LTS уже выпущена в апреле 2026 года (стандартная поддержка до 2031 года) и также подходит для новых серверов. В этом гайде используется Ubuntu 24.04 LTS как стабильная и хорошо документированная база - используемые здесь версии PHP и пакетов соответствуют её стандартным репозиториям.

Сколько нужно RAM

2 ГБ - нормальная стартовая конфигурация для небольшого или среднего WordPress. Для WooCommerce, большого каталога, нескольких сайтов или высокой нагрузки лучше начинать с 4 ГБ.

Не считайте воркеры по формуле - RAM / memory_limit здесь не работает. memory_limit задаёт верхний предел памяти одного PHP-запроса, а фактическое потребление PHP-процесса зависит от WordPress, темы, плагинов и конкретного запроса. pm.max_children подбирают по фактическому потреблению памяти и нагрузке.

Подготовка Ubuntu

Обновите систему до установки основного ПО - свежая база пакетов это первый шаг настойки:

apt update
apt upgrade -y

SSH и firewall

Пользователь и SSH-ключ

Подключитесь к серверу по SSH и создайте отдельного пользователя:

ssh root@IP_сервера
adduser deploy
usermod -aG sudo deploy

Перед отключением root-входа настройте SSH-ключ для пользователя deploy. Если ключ root уже используется, его можно скопировать:

mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/authorized_keys
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

Если root подключается другим способом, публичный ключ нужно добавить в /home/deploy/.ssh/authorized_keys вручную. Проверьте, что пользователь и ключи на месте:

getent passwd deploy
ls -la /home/deploy/.ssh

Проверьте вход с нового пользователя: ssh deploy@IP_сервера. Только после успешной проверки отключите root-вход и парольную авторизацию в /etc/ssh/sshd_config:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
sshd -t
systemctl reload ssh
Не закрывайте SSH-сессию - пока не убедитесь, что вход через нового пользователя работает. Если отключите root и пароли до проверки ключа, потеряете доступ к серверу.

Firewall

Установите UFW и разрешите SSH, HTTP и HTTPS:

apt install -y ufw
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable

Проверьте: ufw status

Swap

Swap не является обязательным условием для WordPress, но может быть полезен как аварийный запас памяти на небольшом VPS. Для сервера с 2 ГБ RAM можно создать 2 ГБ swap:

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Проверка: swapon --show и free -h

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

Установите веб-стек. Certbot ставится отдельно, в разделе HTTPS:

apt install -y nginx mariadb-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-imagick

Проверьте версии: php -v, nginx -v, mariadb --version. На Ubuntu 24.04 штатная версия PHP - 8.3, что соответствует рекомендации WordPress.

Убедитесь, от какого пользователя работает PHP-FPM - обычно это www-data, и от этого зависит схема прав на файлы дальше:

ps aux | grep '[p]hp-fpm'

Создание базы данных

Откройте MariaDB и создайте базу с отдельным пользователем:

mariadb

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'сложный_пароль';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Пароль сохраните в менеджере паролей - он потребуется при настройке wp-config.php.

Установка WordPress

Создайте каталог сайта и скачайте WordPress-архив:

mkdir -p /var/www/example.ru/public_html
cd /var/www/example.ru/public_html
wget https://ru.wordpress.org/latest-ru_RU.tar.gz
tar xzf latest-ru_RU.tar.gz --strip-components=1
rm latest-ru_RU.tar.gz

Базовые права на файлы и каталоги - далее, в отдельном разделе, владелец и группа настраиваются под схему PHP-FPM:

find /var/www/example.ru/public_html -type d -exec chmod 755 {} \;
find /var/www/example.ru/public_html -type f -exec chmod 644 {} \;

Создайте конфигурацию и заполните её: cp wp-config-sample.php wp-config.php, затем nano wp-config.php. Укажите DB_NAME, DB_USER, DB_PASSWORD, DB_HOST. Уникальные значения Authentication Unique Keys and Salts можно получить через официальный генератор WordPress и вставить в wp-config.php - реальные ключи в статьях и туториалах не публикуют.

Права на файлы

Самое важное место настройки - Nginx и PHP-FPM обычно работают от www-data, поэтому нельзя бездумно отдавать все файлы владельцу deploy и одновременно ожидать, что WordPress сможет писать в файловую систему. WordPress создаёт и меняет файлы: wp-content/uploads, обновления ядра, плагинов и тем.

Для простого VPS допустима схема, при которой веб-сервер владеет каталогом WordPress, а SSH-пользователь получает доступ через группу. В этом гайде используем схему www-data:

chown -R www-data:www-data /var/www/example.ru/public_html

Но тогда deploy не сможет без дополнительных прав редактировать файлы. Поэтому конкретную схему прав выбирают отдельно, особенно если WordPress должен самостоятельно обновлять ядро, плагины и темы. Права 755/644 не решают вопрос записи в wp-content - владелец и группа должны соответствовать выбранной схеме PHP-FPM.

Проверка - пользователь PHP-FPM (шаг установки стека) и владелец файлов WordPress должны совпадать, иначе загрузка изображений и обновления будут падать с ошибками записи.

Конфигурация Nginx

Создайте конфигурацию /etc/nginx/sites-available/example.ru с базовой защитой служебных файлов:

server {
    listen 80;
    server_name example.ru www.example.ru;
    root /var/www/example.ru/public_html;
    index index.php;

    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 ~* \.(js|css|png|jpg|jpeg|gif|svg|webp|woff2)$ {
        expires 30d;
        access_log off;
    }

    location ~ /\.(?!well-known) {
        deny all;
    }

    location ~* /(?:uploads|files)/.*\.php$ {
        deny all;
    }

    location ~* /(?:\.git|\.env|composer\.(?:json|lock)|wp-config\.php) {
        deny all;
    }
}

Активируйте сайт, уберите стандартный дефолтный сайт Ubuntu (он мешает диагностике при обращении по IP или неправильному Host) и перезагрузите Nginx:

ln -s /etc/nginx/sites-available/example.ru /etc/nginx/sites-enabled/example.ru
rm -f /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx

PHP-FPM

Основной конфигурационный файл пула - /etc/php/8.3/fpm/pool.d/www.conf. Пример стартовой конфигурации:

pm = dynamic
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500

Это только пример, а не рекомендация для всех VPS с 2 ГБ RAM. pm.max_children нельзя надёжно определить по объёму памяти: на сервере одновременно работают MariaDB, Nginx, системные процессы и другие службы. Значение корректируют по фактическому потреблению памяти PHP-FPM и наличию свободной RAM.

После настройки: systemctl restart php8.3-fpm.

Осторожно с OOM - если сервер начинает использовать swap и PHP-FPM достигает pm.max_children, это не значит автоматически, что нужно увеличить количество воркеров. Сначала определите, какой процесс потребляет память: OOM может вызывать MariaDB, PHP-FPM или другой сервис. Особенно важно это на VPS с 2 ГБ RAM.

DNS

Перед выпуском сертификата домен example.ru и www.example.ru должны резолвиться на IP VPS. Проверить это можно с сервера или локального компьютера:

dig +short example.ru
dig +short www.example.ru

Certbot использует HTTP/HTTPS-проверку домена, поэтому DNS должен быть настроен корректно до выпуска сертификата.

HTTPS: Let's Encrypt

Установка Certbot

Установите Certbot способом, рекомендованным для выбранной версии Ubuntu. Для Ubuntu официальная инструкция Certbot в настоящее время рекомендует snap-пакет:

snap install --classic certbot
ln -s /snap/bin/certbot /usr/local/bin/certbot

После установки команда certbot --nginx автоматически получит сертификат и изменит конфигурацию Nginx:

certbot --nginx -d example.ru -d www.example.ru

Проверьте сертификаты: certbot certificates

Автоматическое продление

Механизм автоматического продления зависит от способа установки Certbot: apt-пакет создаёт systemd timer, snap-версия использует собственный механизм. Проверьте, что настроил ваш пакет, и обязательно выполните тест:

certbot renew --dry-run

OPcache и gzip

OPcache устанавливается вместе с PHP-пакетом и может быть уже включён в конфигурации дистрибутива - наличие пакета и фактическое состояние OPcache это разные вещи. Проверять OPcache нужно именно в конфигурации PHP-FPM, потому что CLI и FPM могут использовать разные конфигурации PHP:

php -r 'var_dump(opcache_get_status(false));'

Для PHP 8.3 FPM на Ubuntu конфигурация обычно находится в /etc/php/8.3/fpm/conf.d/ (например, 10-opcache.ini) или задаётся в основном конфигурационном файле PHP. Базовые параметры:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=2

Для обычного VPS с WordPress безопаснее оставить opcache.validate_timestamps=1: OPcache автоматически обнаруживает изменения PHP-файлов. Значение 0 допустимо в контролируемом production-окружении, но после каждого изменения PHP-кода потребуется самостоятельно сбрасывать OPcache или перезапускать PHP-FPM. После изменения конфигурации: systemctl restart php8.3-fpm.

Gzip в /etc/nginx/nginx.conf сжимает текстовые ресурсы:

gzip on;
gzip_types
    text/plain
    text/css
    application/javascript
    application/json
    application/xml
    image/svg+xml;
nginx -t
systemctl reload nginx

Gzip уменьшает объём передаваемых данных. Это не заменяет полноценное кэширование и оптимизацию WordPress.

Проверка результата

Проверьте состояние сервисов и типичные маршруты WordPress:

systemctl status nginx php8.3-fpm mariadb
curl -sI https://example.ru | head
curl -s https://example.ru/robots.txt
curl -sI https://example.ru/wp-admin/ | head
php -r 'echo PHP_VERSION . PHP_EOL;'
mariadb -u wpuser -p -e "SELECT 1" wordpress

Если установлен WP-CLI и используется соответствующая версия WordPress:

wp core verify-checksums

Эта команда проверяет файлы ядра WordPress по официальным контрольным суммам. Она не проверяет произвольные файлы wp-content, плагины и темы.

После этого откройте сайт и /wp-admin/, проверьте HTTPS, загрузку изображений, обновление записей и работу основных функций. Системный cron вместо wp-cron.php можно настроить отдельно - это особенно полезно для сайтов с регулярными задачами и высокой нагрузкой. При переходе обычно отключают выполнение WP-Cron при каждом запросе и запускают wp-cron.php по расписанию.

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

Резервное копирование до переноса сайта - обязательно настройте резервное копирование базы данных и файлов на отдельное хранилище. Бэкап, расположенный только на том же VPS, не защищает от потери самого сервера или диска.

Минимальный следующий этап: автоматические резервные копии базы и файлов на отдельное хранилище, мониторинг RAM/CPU/диска, системные обновления, системный cron, Redis при необходимости, rate limiting и дополнительная защита SSH, например fail2ban.

Когда этой базовой конфигурации недостаточно

Эта конфигурация рассчитана на один небольшой или средний WordPress-сайт и не является универсальным production-тюнингом. Для нескольких сайтов, WooCommerce, высокой нагрузки, больших баз данных и большого количества PHP-запросов параметры PHP-FPM, MariaDB, кэша и дисковой подсистемы нужно подбирать по фактической нагрузке.

1 ГБ RAM - WordPress технически может работать на VPS с 1 ГБ RAM, но для полноценного стека Nginx + PHP-FPM + MariaDB запас памяти будет небольшим. Для обычного рабочего сайта разумнее начинать с 2 ГБ RAM, а для WooCommerce и тяжёлых плагинов рассматривать 4 ГБ и выше.

Большой WooCommerce - сайт с десятками тысяч товаров не обязательно требует одного конкретного набора настроек. При такой нагрузке необходимо измерять узкие места: запросы к базе данных, PHP, object cache, диск, внешние API и генерацию страниц. Сам перенос на VPS проблему не решает.

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

  • FastCGI cache;
  • Redis Object Cache;
  • PHP-FPM и MariaDB тюнинг;
  • CDN;
  • rate limiting;
  • мониторинг CPU/RAM/IO;
  • оптимизация самого WordPress.
FastCGI cache и Redis - разные задачи - FastCGI cache подходит преимущественно для кэширования публичных страниц, но требует исключений для авторизованных пользователей, корзины, checkout и других динамических страниц WooCommerce. Без таких исключений простое включение FastCGI cache на WooCommerce даст некорректное кэширование динамического контента. Redis Object Cache решает другую задачу - объектное кэширование WordPress.

Нет опыта администрирования - VPS это не просто более мощный хостинг. Нужно самостоятельно следить за обновлениями, резервными копиями, безопасностью, диском, памятью и доступностью сервисов. Если заниматься сервером самостоятельно не хочется, managed VPS или хороший shared-хостинг может быть практичнее.

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

Сколько стоит VPS под WordPress в 2026 году?
Цена зависит от провайдера, региона, ресурсов, типа виртуализации, резервных копий и наличия панели управления, поэтому фиксировать конкретную стоимость без привязки к тарифу не стоит. В качестве практической стартовой точки можно рассматривать 2 vCPU и 2 ГБ RAM и сравнивать актуальные тарифы нескольких провайдеров.
На какой ОС поднять VPS?
Ubuntu 24.04 LTS - проверенная база с длительным циклом поддержки (до 2029 года) и подробной документацией. Ubuntu 26.04 LTS также подходит для новых установок и является актуальным LTS-релизом 2026 года. В рамках этого гайда Ubuntu 24.04 LTS выбрана прежде всего как стабильная база.
Что быстрее: VPS или shared-хостинг?
Само наличие VPS не гарантирует, что сайт будет быстрее. Преимущество VPS - контроль над ресурсами и конфигурацией: можно самостоятельно настроить PHP-FPM, Nginx, MariaDB, Redis и кэширование. Итоговая скорость зависит от CPU, RAM, диска, нагрузки, конфигурации сервера и самого WordPress.
Нужен ли Redis?
На старте - нет. Сначала настройте Nginx, PHP-FPM, OPcache, базу данных и резервное копирование. Redis имеет смысл добавлять после измерения нагрузки, особенно для WooCommerce и сайтов с большим количеством динамических запросов. При этом Redis не является обязательным компонентом WordPress и не гарантирует ускорение любого сайта.
Нужен ли Swap?
Swap не является обязательным для WordPress. На небольшом VPS он может служить дополнительным резервом при кратковременном дефиците RAM, но не должен использоваться как замена физической памяти.
Как перенести сайт с shared-хостинга на VPS?
Основные этапы: сделать резервную копию файлов и базы данных; перенести wp-content и остальные файлы WordPress; создать базу и пользователя MariaDB; импортировать дамп; настроить wp-config.php; настроить Nginx и PHP-FPM; проверить сайт по временному адресу или через hosts; выпустить SSL; изменить DNS и проверить сайт. Отдельно стоит проверить cron, отправку почты, загрузку файлов, REST API, AJAX и внешние интеграции.
Что настроить после базового VPS?
Резервные копии базы и файлов на отдельное хранилище - обязательный следующий этап, без них остальная оптимизация не имеет смысла. Дальше: мониторинг RAM/CPU/диска, системные обновления, системный cron, Redis при необходимости, rate limiting, дополнительная защита SSH, например fail2ban.

Базовая задача VPS - не получить максимально возможную скорость любой ценой, а получить контролируемую среду: корректно настроенные Nginx, PHP-FPM и MariaDB, HTTPS, SSH-доступ, firewall, права на файлы и резервное копирование. Оптимизацию Redis, FastCGI cache, PHP-FPM и MariaDB имеет смысл выполнять после измерения фактической нагрузки.

VPS для WordPress - настрою с нуля?

Настрою сервер целиком: Nginx, PHP-FPM, MariaDB, SSL, права на файлы, кэш и бэкапы. Сайт переедет с shared-хостинга без простоя.

Написать в Написать в

Переезд сайта

Переезд сайта

Настрою сервер, SSL, бэкапы.

7.200

Подробнее
Техническая оптимизация

Техническая оптимизация

Серверный кэш, PHP-FPM, Nginx.

7.200

Подробнее

Разрабатываю WordPress-сайты

Лендинги, многостраничные сайты, интернет-магазины на WooCommerce — всё на WordPress с удобной панелью управления.

Сайт под ключ: регистрация домена и хостинга, установка WordPress, настройка шаблона и модулей.

Поддерживаю WordPress-сайты

Обновление плагинов и тем, резервное копирование, мониторинг работоспособности — сайт работает без сбоев.

Оперативное исправление ошибок, создание новых разделов, доработка функционала и наполнение контентом.

Продвигаю WordPress-сайты

SEO-оптимизация, настройка Яндекс Метрики и Вебмастера, подключение Google Search Console.

Оптимизация позволяет «поднять» сайт в поисковых выдачах, увеличить целевой трафик и привлечь новых клиентов.

Чистка от вирусов WordPress

Если сайт взломали, появился подозрительный код или спам-рассылка — найду и удалю вредоносный код, закрою уязвимости и настрою защиту от повторного заражения.

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

Диагностика сайта

Проверю ваш сайт по ключевым параметрам и подготовлю отчёт с рекомендациями:

  • Скорость загрузки и производительность;
  • Безопасность и уязвимости;
  • SEO-состояние и индексация;
  • Мобильная адаптация;
  • Технические ошибки и код.
Заказать диагностику
Михайлова Анастасия

Денис МАСТЕР своего дела. Вёл целый проект, работали с ним на протяжении 4х месяцев. Отзывчивый, понимающий с полуслова специалист. Стоимость услуг радует, а качество работы приводит в восторг.

Денис спасибо Вам от лица нашей строительной компании и от всего нашего персонала.

Михайлова Анастасия

Игорь Караваев

Обратился к Денису для восстановления сайта на WordPress после сбоя. Сделал, как и обещал, за сутки — сайт снова работает без ошибок. Профессионал своего дела, доходчиво объясняет, вежлив и тактичен. Однозначно рекомендую!

Игорь Караваев

Яна Веркулич

Денис, спасибо огромное за работу)) Очень тепло вспоминаю Вас и все что Вы сделали для моей работы и моего сайта.

Денис Профессионал с большой буквы, решает любые вопросы, отличный специалист))

Рекомендую к сотрудничеству, еще раз спасибо)

Яна Веркулич

Бюро Переводов

Денис оперативно и грамотно справляется со всеми поставленными задачами. Внес правки на англоязычную и русскоязычную версии сайта, учел все пожелания. Будем обращаться еще!

Бюро Переводов

Анастасия Виричева

Денис мастер своего дела, рекомендую его как специалиста.
Понимает, что нужно сделать и справляется с поставленной задачей в короткое время.

Делал сайт для салона красоты, просто и функционально.

Анастасия Виричева

Владимир

Очень много времени мучались с сайтом на OpenCart. «Специалисты» не могли нормально разобраться в проблеме, возникавшей при выполнении элементарной задачи.

Денис сделал это в два счета, также расписал подробно, в чем была проблема и как она решена. На 200% доволен. Даже не хочется его рекомендовать, потому что будет постоянно занят))

Владимир

Ксения Петровская

Денис оперативно ответил и помог решить проблему, которую я даже описать нормально не могла)) Мы сами что-то накрутили с корпоративной почтой — письма то уходили, то нет, в общем всё сломали.

Денис всё починил, теперь у нас нормальная почта, домен работает, письма приходят и уходят. Цена как заявлена — оплатили по факту проверки. Спасибо большое!

Ксения Петровская

Александр Кривуля

Заказал у Дениса доработать сайт на WordPress. При этом трудно себе представлял, что сам хочу. Благодаря профессионализму Дениса и его умению всё грамотно и просто объяснять, предлагать разные варианты решений — цель была достигнута.

Умение общаться доходчиво и терпеливо с клиентами — огромный плюс. Я очень доволен. Однозначно рекомендую!

Александр Кривуля

Кондитер мания

Прекрасный специалист, ответил и устранил ошибку на сайте за пару часов, сохранила контакт, будем по необходимости обращаться. Рекомендую!

Кондитер мания

Бесплатная настройка хостинга и домена

Регистрация хостинга на 1 месяц и домена .ru/.рф на 1 год входит в стоимость разработки сайта.

Подробнее