Как установить WordPress на VPS: от голого сервера до работающего сайта
Установка WordPress на VPS отличается от установки на виртуальный хостинг тем, что кнопки «установить» здесь нет. Вы получаете голую операционную систему и root-доступ, дальше всё руками. Кнопочный вариант за пять минут описан в отдельном гайде, а эта страница про то, как установить WordPress на сервер целиком самому: от первого входа по SSH до работающего сайта с SSL. Взамен потраченного часа вы получаете контроль над версиями PHP, конфигурацией веб-сервера и лимитами, которых на виртуальном хостинге не бывает.
Кому нужен WordPress на VPS
Короткая проверка, прежде чем тратить вечер:
- VPS оправдан, если сайт упёрся в лимиты виртуального хостинга (процессы, память, соседи по серверу), нужен нестандартный стек вроде Redis или своих модулей PHP, или вы размещаете несколько сайтов и хотите платить за один сервер.
- VPS не оправдан, если сайт представляет собой визитку или блог на пару тысяч посетителей в день. Виртуальный хостинг дешевле, а главное, обновлять систему, следить за безопасностью сервера и чинить упавший MySQL в три часа ночи будет хостер, а не вы.
Развёрнутое сравнение форматов — на странице VPS для WordPress. Здесь дальше — чистая практика.
Где взять VPS
Гайд написан на чистой Ubuntu 24.04 и сработает у любого провайдера из нашего каталога VPS. Если сервера ещё нет, вот три варианта, на которых мы проверяли шаги.
- Timeweb Cloud — наш основной выбор для этого сценария. Заказ занимает пару минут: раздел «Облачные серверы», кнопка «Создать», образ Ubuntu 24.04 LTS, конфигурация от 1 ГБ RAM. Сервер поднимается меньше чем за минуту, IP выдаётся сразу. Оплата почасовая: можно пройти гайд, снести сервер и заплатить рубли вместо месяца. По промокоду flutterflow первое пополнение счёта удваивается: закинули 500 ₽, получили на баланс 1000 ₽. Этого хватает на несколько недель работы сервера. Подробный разбор провайдера есть в обзоре Timeweb.
- REG.RU — VPS заказывается из того же кабинета, где у многих уже куплен домен: раздел «VPS и серверы», шаблон «Чистая ОС», Ubuntu 24.04. Удобно, когда домен и сервер хочется держать в одном личном кабинете. Детали в обзоре REG.RU.
- Beget — VPS с посуточным списанием и понятной панелью. При заказе можно сразу выбрать образ с готовым LEMP и пропустить шаг 2 этого гайда. Что ещё умеет панель, написано в обзоре Beget.
Дальше все команды одинаковы для любого из трёх, различается только кнопка «создать сервер».
Что понадобится
- VPS с Ubuntu 24.04 LTS, минимум 1 ГБ RAM (комфортно 2 ГБ), чистая ОС без панели управления.
- Домен, у которого A-запись уже указывает на IP сервера: без этого не выпустится SSL-сертификат.
- SSH-клиент: терминал на macOS и Linux, на Windows — встроенный OpenSSH или PuTTY.
Шаг 1. Подготовка сервера
Первым делом на новом сервере нужны обновления, отдельный пользователь вместо root и файрвол.
apt update && apt upgrade -y
adduser deploy
usermod -aG sudo deploy
Работать под root — плохая привычка: одна опечатка в команде с rm стоит сервера. Дальше всё делаем под пользователем deploy через sudo.
Файрвол — встроенный ufw. Открываем SSH и веб-порты, всё остальное закрыто:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Если провайдер выдал доступ по паролю, сразу переключитесь на SSH-ключи и запретите вход по паролю в /etc/ssh/sshd_config (PasswordAuthentication no). Боты начинают перебирать пароли к свежему IP в первые же часы после создания сервера, это видно в journalctl -u ssh уже на следующий день.
Шаг 2. Установка стека: Nginx, PHP и MariaDB
Классический LEMP. В репозиториях Ubuntu 24.04 лежит PHP 8.3 — этого достаточно, отдельные PPA не нужны:
sudo apt install -y nginx mariadb-server \
php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-intl \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-imagick
Набор модулей не случайный: это ровно то, что WordPress проверяет в «Здоровье сайта». Без mbstring и xml установщик просто не запустится, без gd и imagick не будут создаваться миниатюры, без intl часть плагинов жалуется в логи.
Сразу поднимите лимиты PHP под WordPress в /etc/php/8.3/fpm/php.ini:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
И перезапустите FPM: sudo systemctl restart php8.3-fpm.
Шаг 3. База данных
MariaDB после установки стоит прогнать через sudo mariadb-secure-installation (убирает тестовую базу и анонимных пользователей), затем создать базу и пользователя для сайта:
CREATE DATABASE wp_site CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON wp_site.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
Кодировка utf8mb4_unicode_ci обязательна: она корректно хранит кириллицу и эмодзи. Права выдаём только на одну базу — если на сервере появится второй сайт, у него будет свой пользователь, и взлом одного сайта не отдаст злоумышленнику базу соседнего.
Шаг 4. Конфиг Nginx
Создаём /etc/nginx/sites-available/site.ru:
server {
listen 80;
server_name site.ru www.site.ru;
root /var/www/site.ru;
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 ~* \.(jpg|jpeg|png|webp|gif|svg|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
location = /xmlrpc.php { deny all; }
}
Строка try_files … /index.php?$args — то, что заставляет работать «красивые» постоянные ссылки WordPress; без неё все страницы, кроме главной, отдадут 404. Блокировка xmlrpc.php закрывает самый шумный вектор автоматических атак — если вы не публикуете записи из мобильного приложения WordPress, файл вам не нужен.
Включаем сайт и проверяем конфиг перед перезагрузкой:
sudo ln -s /etc/nginx/sites-available/site.ru /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Шаг 5. Установка WordPress через WP-CLI
Можно скачать архив и распаковать вручную, но WP-CLI быстрее и пригодится потом: для обновлений, бэкапов и поиска-замены в базе.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
sudo mkdir -p /var/www/site.ru && sudo chown deploy:www-data /var/www/site.ru
cd /var/www/site.ru
wp core download --locale=ru_RU
wp config create --dbname=wp_site --dbuser=wp_user --dbpass=СЛОЖНЫЙ_ПАРОЛЬ
wp core install --url=https://site.ru --title="Мой сайт" \
--admin_user=НЕ_admin --admin_email=you@example.com --prompt=admin_password
Четыре команды, и сайт работает. Логин admin не используйте: половина ботов перебирает пароли именно к нему, подробнее в гайде по безопасности WordPress.
Осталось выставить права: файлы принадлежат вашему пользователю, а группе www-data хватает чтения плюс записи в wp-content:
sudo chown -R deploy:www-data /var/www/site.ru
sudo find /var/www/site.ru -type d -exec chmod 755 {} \;
sudo find /var/www/site.ru -type f -exec chmod 644 {} \;
sudo chmod -R g+w /var/www/site.ru/wp-content
Шаг 6. SSL через certbot
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d site.ru -d www.site.ru
Certbot сам поправит конфиг Nginx, включит редирект на HTTPS и заведёт таймер автопродления. Если команда падает с ошибкой валидации, почти всегда дело в DNS: A-запись ещё не обновилась или указывает не на этот сервер.
Что настроить после установки
Минимальный чек-лист тот же, что и на обычном хостинге, плюс серверная специфика:
- Постоянные ссылки →
/%postname%/(Настройки → Постоянные ссылки). - Заменить wp-cron на системный: в
wp-config.phpдобавитьdefine('DISABLE_WP_CRON', true);и повесить в crontab строку*/5 * * * * wp cron event run --due-now --path=/var/www/site.ru. - Включить автообновления безопасности Ubuntu:
sudo apt install unattended-upgrades. - Настроить бэкапы вне сервера: снапшоты VPS у провайдера плюс выгрузка базы (
wp db export) куда-то ещё. Сервер, на котором лежат и сайт, и его единственный бэкап, — это не бэкап. - Поставить кэширование. С чего начать, разобрано в гайде почему WordPress тормозит.
Альтернатива: VPS с панелью
Всё описанное выше можно не делать руками: большинство VPS-провайдеров при заказе сервера предлагают образ с панелью управления (ISPmanager, aaPanel, FastPanel) или готовый шаблон «LEMP + WordPress». У Timeweb Cloud и Beget такой образ выбирается прямо на экране заказа сервера. Панель сама разворачивает стек, выпускает SSL и обновляет пакеты, по сути превращая VPS в виртуальный хостинг, где root всё же остаётся у вас.
WordPress без панели управления, как в этом гайде, выигрывает там, где важен каждый мегабайт памяти на минимальном тарифе: панель сама по себе съедает 200–400 МБ. А если и панель кажется лишней работой, посмотрите на managed-хостинг, где серверами занимается провайдер целиком.
Частые вопросы
Сколько времени занимает установка WordPress на VPS?
Какой VPS взять именно под этот гайд?
Хватит ли VPS с 1 ГБ памяти?
Почему Nginx, а не Apache?
Можно ли поставить несколько сайтов на один VPS?
Кто отвечает за безопасность сервера?
Перейти к делу?
Каталог хостингов уже здесь.
Сортировка по композитной оценке, фильтры по WooCommerce, ДЦ в РФ и WP-CLI.
К рейтингу 2026