К основному содержимому

WordPress на VPS без хостинга: полная установка с нуля

WordPress · 18.03.2026 · 5 мин чтения
Иллюстрация к статье «WordPress на VPS без хостинга: полная установка с нуля»

Собственный VPS даёт полный контроль над WordPress: выбор PHP-версии, Redis-кэш, HTTP/2, без ограничений на плагины и ресурсы.

Шаг 1: LEMP-стек (Nginx + MySQL + PHP)

sudo apt update
sudo apt install -y nginx mysql-server php8.2-fpm   php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl   php8.2-gd php8.2-zip php8.2-imagick php8.2-redis

Шаг 2: База данных

sudo mysql -u root -p
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'СложныйПароль';
GRANT ALL ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;

Шаг 3: Скачать WordPress

cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar xzf latest.tar.gz
sudo mv wordpress yourdomain.com
sudo chown -R www-data:www-data yourdomain.com

Шаг 4: Конфиг Nginx

sudo nano /etc/nginx/sites-available/yourdomain.com
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/yourdomain.com;
    index index.php;

    location / { try_files $uri $uri/ /index.php?$args; }
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Шаг 5: SSL Let's Encrypt

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
💡 После установки добавьте Redis Object Cache для ускорения WordPress. Подробнее в статье Redis на VPS.

Частые ошибки при установке WordPress на VPS

Error establishing a database connection

502 Bad Gateway

connect() to unix:/run/php/php8.2-fpm.sock failed (13: Permission denied)

The uploaded file exceeds the upload_max_filesize directive
СообщениеПричинаРешение
Error establishing a database connectionНеверные данные в wp-config.php или MySQL не запущенПроверить systemctl status mysql и сверить DB_USER/DB_PASSWORD с тем, что создавали в шаге 2
502 Bad GatewayNginx не может достучаться до PHP-FPM — сокет не совпадает или демон не запущенПроверить systemctl status php8.2-fpm и путь к сокету в fastcgi_pass
connect() to unix:/run/php/php8.2-fpm.sock failed (13: Permission denied)Nginx работает от пользователя www-data, а сокет PHP-FPM создан с другими правамиВ пуле PHP-FPM выставить listen.owner = www-data и listen.group = www-data
The uploaded file exceeds the upload_max_filesize directiveЛимит загрузки в php.ini меньше размера файла темы, плагина или медиаПоднять upload_max_filesize и post_max_size в конфиге PHP-FPM, перезапустить сервис

Готовый хостинг против собственного VPS

ПараметрVPS с ручной установкойГотовый хостинг WordPress
Выбор версии PHPЛюбая, ставится вручнуюОграничен тем, что доступно на тарифе
Настройка Redis и кэшаПолный контроль, свои параметрыЧасто уже встроено, но без тонкой настройки
Время до первого запуска сайта30–60 минут по этой инструкции5–10 минут через автоустановщик
Ответственность за обновления ОС и PHPПолностью на администратореБерёт на себя хостинг-провайдер

Если ручная настройка избыточна для задачи, установка через панель хостинга описана в статье WordPress в cPanel.

Когда ставить WordPress на голый VPS не стоит

  • Нет опыта администрирования Linux и нет времени его получать — при поломке php-fpm или Nginx сайт упадёт полностью, и восстановить его без панели сложнее
  • Сайт простой (визитка, блог) без нагрузки — переплата за администрирование VPS не окупится, обычный shared-хостинг справится не хуже
  • Нужны автоматические обновления системы безопасности без ручного вмешательства — на VPS обновления PHP и ядра нужно отслеживать самостоятельно
  • Команда привыкла к интерфейсу cPanel или ISPmanager для повседневных задач (почта, бэкапы, домены) — на голом VPS всё это придётся делать через консоль

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

# Nginx и PHP-FPM подняты и активны
systemctl is-active nginx php8.2-fpm mysql

# Конфигурация Nginx синтаксически верна
sudo nginx -t

# Сайт отвечает кодом 200, а не 502/500
curl -o /dev/null -s -w '%{http_code}\n' http://yourdomain.com/
  1. Откройте http://yourdomain.com — должен появиться мастер установки WordPress на пять шагов, а не ошибка PHP
  2. Пройдите мастер, укажите название сайта и данные администратора, затем зайдите в /wp-admin/
  3. Проверьте, что SSL действительно работает: curl -I https://yourdomain.com/ должен вернуть 200, а не ошибку сертификата
  4. Убедитесь, что фоновые задачи WordPress (wp-cron) выполняются — опубликуйте отложенный пост и проверьте, что он вышел вовремя

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

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

Стоит ли переносить уже существующий сайт WordPress на VPS тем же способом, что описан в статье?

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

Запустятся ли Nginx, MySQL и PHP-FPM автоматически после перезагрузки сервера?

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

Нужно ли сразу менять данные администратора, заданные в мастере установки WordPress?

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

Как добавить на тот же VPS второй сайт — нужен ли отдельный пользователь MySQL и своя конфигурация Nginx?

Да, для каждого нового сайта стоит создать отдельную базу данных и отдельного пользователя MySQL с правами только на неё, а также свой серверный блок конфигурации Nginx со своими путями и сертификатом. Один и тот же PHP-FPM можно оставить общим пулом для лёгких сайтов или разделить на отдельные пулы, если сайты заметно различаются по нагрузке на процессор.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке