⟵ Все статьи
Читать на:

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

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 root
CREATE 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.com
server {
    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.ini
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 512M
max_execution_time = 120
systemctl 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 — выберите конфигурацию с запасом.

Посмотреть тарифы

Мы используем файлы cookie: необходимые — для входа в аккаунт и языка интерфейса, аналитические — чтобы понимать, какими страницами пользуются. Сторонних рекламных систем у нас нет. Подробнее