WordPress на VPS: установка, HTTPS и настройка скорости

WordPress работает и на копеечном виртуальном хостинге — до тех пор, пока посещаемость не вырастет, а сайт не обрастёт плагинами. Дальше начинается знакомое: админка думает по несколько секунд, а на любой вопрос о производительности хостинг отвечает «у вас превышены лимиты».
На VPS этих лимитов нет: ресурсы ваши, версии PHP и MySQL выбираете вы. Ниже — полная установка с нуля: от заказа сервера до работающего сайта на HTTPS с кешированием.
Шаг 1. Заказать сервер
В панели NodexGo нажмите «Создать сервер» и пройдите шаги: локация — рядом с каждой показан ваш реальный пинг, берите ближайшую к аудитории сайта; тариф; образ Ubuntu 24.04; имя сервера; период оплаты 1, 3, 6 или 12 месяцев.
По ресурсам: блогу или сайту-визитке хватает 1 vCPU и 2 ГБ памяти, интернет-магазину на WooCommerce стоит брать от 4 ГБ. Диск NVMe здесь важнее ядер — админка WordPress упирается прежде всего в скорость диска и базы.
Через минуту после оплаты IP-адрес и пароль root придут в панель и на почту.
Ubuntu 24.04, NVMe и root-доступ — WordPress разворачивается за 20 минут.
Создать серверШаг 2. Подключиться и обновить систему
ssh root@IP-адрес-сервера
apt update && apt upgrade -yШаг 3. Поставить веб-сервер, PHP и базу
Ставим nginx, PHP-FPM с модулями, которые нужны WordPress, и MariaDB:
apt install -y nginx mariadb-server php8.3-fpm php8.3-mysql php8.3-xml php8.3-curl php8.3-gd php8.3-mbstring php8.3-zip php8.3-intl unzipЗакрываем базу базовой настройкой безопасности — на вопросы отвечайте Y, кроме смены пароля root, если он вам не нужен:
mysql_secure_installationШаг 4. Создать базу для сайта
mysql -u rootCREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp'@'localhost' IDENTIFIED BY 'придумайте-длинный-пароль';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'localhost';
FLUSH PRIVILEGES;
EXIT;Шаг 5. Скачать и разложить WordPress
cd /tmp
curl -O https://ru.wordpress.org/latest-ru_RU.tar.gz
tar -xzf latest-ru_RU.tar.gz
mkdir -p /var/www/example.com
cp -r wordpress/* /var/www/example.com/
chown -R www-data:www-data /var/www/example.comШаг 6. Настроить nginx
Создаём конфигурацию сайта, заменив example.com своим доменом:
nano /etc/nginx/sites-available/example.comserver {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php;
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 ~* \.(jpg|jpeg|png|webp|gif|ico|css|js|woff2)$ {
expires 30d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}Включаем сайт и перезагружаем nginx:
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginxШаг 7. Открыть порты
Разрешаем SSH обязательно до включения файрвола, иначе потеряете доступ:
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enableШаг 8. Направить домен и выпустить сертификат
В панели вашего регистратора укажите A-запись домена на IP сервера. Когда она разойдётся (обычно это минуты), выпускаем бесплатный сертификат Let's Encrypt — certbot сам пропишет HTTPS в конфигурацию nginx:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.comПродление происходит автоматически, проверить механизм можно так:
certbot renew --dry-runШаг 9. Установщик WordPress
Откройте https://example.com в браузере — запустится знакомый пятиминутный установщик. Укажите базу wordpress, пользователя wp и пароль из пятого шага. Логин администратора не делайте admin, а пароль возьмите длинный: подбор паролей к wp-login.php начинается в первые же часы жизни сайта.
Шаг 10. Ускорение
Первое, что даёт заметный прирост — кеш страниц. Поставьте плагин кеширования из админки (например LiteSpeed Cache или W3 Total Cache) и включите кеш страниц и сжатие.
Второе — объектный кеш в памяти. Ставим Redis и PHP-расширение к нему:
apt install -y redis-server php8.3-redis
systemctl enable --now redis-server
systemctl restart php8.3-fpmПосле этого в админке включите плагин Redis Object Cache — он подхватит установленный сервер сам.
Третье — лимиты PHP: стандартных значений не хватает для загрузки медиафайлов и тяжёлых плагинов.
nano /etc/php/8.3/fpm/php.iniupload_max_filesize = 64M
post_max_size = 64M
memory_limit = 512M
max_execution_time = 120systemctl restart php8.3-fpmШаг 11. Резервные копии
На VPS за бэкапы отвечаете вы. Минимальный вариант — ежедневный скрипт с копией базы и файлов:
mysqldump -u root --single-transaction wordpress | gzip > /root/wp-db-$(date +%F).sql.gz
tar -czf /root/wp-files-$(date +%F).tar.gz /var/www/example.comДобавьте это в cron и обязательно храните копии не только на самом сервере.
Если что-то не работает
Белый экран — почти всегда ошибка PHP. Смотрите журнал: tail -f /var/log/nginx/error.log. Часто дело в недостающем модуле PHP или в плагине после обновления.
Ошибка «Error establishing a database connection» — неверные данные в wp-config.php или остановленная база: проверьте systemctl status mariadb.
Сайт стал медленным при росте посещаемости — сначала включите кеш, потом смотрите на память командой free -h. Если её действительно мало, в карточке сервера есть кнопка «Увеличить мощности»: тариф меняется на старший, диск и IP-адрес сохраняются, переустанавливать WordPress не нужно.
Потеряли доступ по SSH — откройте web-консоль VNC в карточке сервера, она работает в обход сети.
От блога до магазина на WooCommerce — выберите конфигурацию с запасом.
Посмотреть тарифы