Установка WordPress на VPS: полное руководство

Сайты и веб-серверы
Установка WordPress на VPS: полное руководство

Установка WordPress на VPS — это способ получить полный контроль над сайтом: свои версии PHP, свой кеш, свои лимиты, никаких соседей по виртуальному хостингу. В этом руководстве мы установим WordPress на чистый сервер с Ubuntu 24.04 LTS: поднимем Nginx, MySQL и PHP 8.3, создадим базу данных, настроим права доступа и выпустим бесплатный SSL-сертификат. Все команды рабочие — просто копируйте их по порядку. На весь процесс уйдёт 30–40 минут, даже если вы делаете это впервые.

Что понадобится перед началом

  • VPS с Ubuntu 24.04 LTS и root-доступом. Для WordPress хватит 2 ГБ RAM, но с запасом под кеш и рост трафика комфортнее 4–8 ГБ. Например, тариф Start у Cheap-Host — 6 vCPU, 8 ГБ RAM и 96 ГБ NVMe за 450 ₽/мес; сервер выдаётся за 45–60 секунд вместе с IP и SSH-доступом.
  • Домен, A-запись которого указывает на IP сервера. Как это настроить — в статье о привязке домена к VPS.
  • SSH-клиент: терминал в macOS/Linux или Windows Terminal.

Далее в примерах используется домен example.com — замените его на свой.

Шаг 1. Подготовка сервера

Подключаемся по SSH и обновляем систему:

ssh root@IP_СЕРВЕРА
apt update && apt upgrade -y

Открываем в файрволе только нужные порты — SSH, HTTP и HTTPS:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Это минимум. Полный чек-лист базовой защиты — от SSH-ключей до fail2ban — мы разобрали в статье «Первые 10 шагов после покупки VPS».

Шаг 2. Установка Nginx, MySQL и PHP 8.3 (LEMP)

В Ubuntu 24.04 PHP 8.3 идёт из коробки — сторонние репозитории не нужны. Ставим весь стек и расширения PHP, которые требует WordPress:

apt install -y nginx mysql-server php8.3-fpm php8.3-mysql \
  php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml \
  php8.3-zip php8.3-intl php-imagick

Проверяем, что сервисы запущены:

systemctl status nginx php8.3-fpm mysql --no-pager

Все три должны быть в состоянии active (running). Если хотите разобраться в каждом компоненте глубже, у нас есть отдельный разбор установки LEMP-стека на Ubuntu.

Шаг 3. База данных для WordPress

Сначала запускаем мастер первичной защиты MySQL (отключает анонимных пользователей и тестовую базу):

mysql_secure_installation

Затем создаём базу и отдельного пользователя. Не используйте root для сайта — если сайт взломают, злоумышленник получит доступ только к одной базе:

mysql -u root -p
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;

Кодировка utf8mb4 обязательна: без неё в комментариях и записях не будут работать эмодзи и часть спецсимволов.

Шаг 4. Скачиваем и размещаем WordPress

Берём свежую русскую сборку с официального сайта и раскладываем файлы:

cd /tmp
wget https://ru.wordpress.org/latest-ru_RU.tar.gz
tar -xzf latest-ru_RU.tar.gz
mkdir -p /var/www/example.com
cp -a /tmp/wordpress/. /var/www/example.com/
chown -R www-data:www-data /var/www/example.com
find /var/www/example.com -type d -exec chmod 755 {} \;
find /var/www/example.com -type f -exec chmod 644 {} \;

Права 755 на каталоги и 644 на файлы — стандарт безопасности WordPress: веб-сервер может читать и записывать своё, а посторонние процессы — нет.

Шаг 5. Настройка Nginx

Создаём server-блок /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 ~* \.(css|js|jpg|jpeg|png|gif|webp|svg|ico|woff2)$ {
        expires 30d;
        add_header Cache-Control "public";
    }

    location = /xmlrpc.php { deny all; }
}

Здесь try_files обеспечивает работу «красивых» ссылок WordPress, кеш статики на 30 дней снижает нагрузку, а закрытый xmlrpc.php отсекает популярный вектор брутфорс-атак. Включаем сайт и перезагружаем Nginx:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Шаг 6. SSL-сертификат Let's Encrypt

В Ubuntu 24.04 certbot ставится через snap — это официальный рекомендованный способ:

snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
certbot --nginx -d example.com -d www.example.com

Certbot сам выпустит сертификат, пропишет HTTPS в конфиг Nginx и настроит редирект с HTTP. Продление тоже автоматическое. Подробнее о нюансах — wildcard-сертификаты, проверка таймера продления, хуки — в статье про SSL-сертификат Let's Encrypt.

Шаг 7. Завершение установки в браузере

Открываем https://example.com — WordPress встретит мастером установки:

  1. Выбираем язык и нажимаем «Вперёд».
  2. Вводим имя базы wordpress, пользователя wpuser, пароль из шага 3; сервер БД — localhost, префикс таблиц можно сменить с wp_ на произвольный (небольшой плюс к безопасности).
  3. Задаём название сайта и создаём администратора. Логин admin не используйте — его перебирают боты в первую очередь.

После входа в консоль сразу зайдите в «Настройки → Постоянные ссылки» и выберите формат «Название записи» — это лучший вариант и для SEO, и для читателей.

Минимальная оптимизация после установки

Свежий WordPress работает быстро, но пара штрихов не помешает. В файле /etc/php/8.3/fpm/php.ini поднимите лимиты под загрузку медиафайлов:

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M

И перезапустите PHP-FPM: systemctl restart php8.3-fpm.

Что ещё стоит сделать:

  • Установить кеширующий плагин (WP Super Cache или W3 Total Cache) — он отдаёт готовый HTML вместо генерации страницы на каждый запрос.
  • Настроить автоматический бэкап базы и wp-content хотя бы раз в сутки.
  • Удалить неиспользуемые темы и плагины — каждый лишний плагин это потенциальная дыра.
  • Если трафик растёт — донастроить пулы PHP-FPM и подключить объектный кеш; о выжимании максимума из WordPress читайте в статье «Как ускорить WordPress».

Сколько ресурсов нужно WordPress на практике

ПроектПосещаемость, суткиРекомендация
Блог, визиткадо 5 0002 vCPU, 2–4 ГБ RAM
Контент-сайт, новостник5 000–30 0004–6 vCPU, 8 ГБ RAM
WooCommerce-магазиндо 20 0006–12 vCPU, 8–16 ГБ RAM

Важный момент — диск. WordPress с базой MySQL очень чувствителен к скорости случайного чтения, поэтому NVMe заметно ускоряет и админку, и генерацию страниц. У Cheap-Host NVMe стоит во всех тарифах, а при росте проекта CPU, RAM и диск можно апгрейдить без потери данных — сайт переносить не придётся.

FAQ

Сколько ресурсов VPS нужно для WordPress?

Для сайта до 10–20 тысяч посетителей в сутки достаточно 2–4 ГБ RAM и 2+ vCPU. Тариф Start у Cheap-Host (6 vCPU, 8 ГБ RAM, 96 ГБ NVMe за 450 ₽/мес) покрывает такие проекты с запасом, включая WooCommerce.

Почему Nginx, а не Apache?

Nginx экономнее расходует память и быстрее отдаёт статику — картинки, CSS и JS, из которых на 80–90% состоит страница WordPress. Apache удобен .htaccess-файлами, но для нового сайта на VPS Nginx — стандарт де-факто.

Можно ли перенести уже работающий сайт WordPress на VPS?

Да: настройте окружение по этой инструкции, перенесите файлы wp-content и дамп базы, затем переключите DNS. При правильной последовательности простой равен нулю.

Обязателен ли SSL-сертификат?

Да. Без HTTPS браузеры помечают сайт как небезопасный, а поисковики понижают его в выдаче. Сертификат Let's Encrypt бесплатен и выпускается одной командой certbot.

Как обновлять WordPress на VPS?

Через админ-панель или WP-CLI (wp core update). Перед обновлением делайте бэкап файлов и базы — на VPS это одна команда tar плюс mysqldump.

Вывод

Установить WordPress на сервер — задача на полчаса: LEMP-стек, база данных, конфиг Nginx, SSL — и сайт в сети. Взамен вы получаете скорость NVMe, полный root-доступ и свободу настройки, которой нет ни на одном виртуальном хостинге. Если для этой задачи вам нужен сервер — у Cheap-Host тариф Start от 450 ₽/мес: 6 vCPU, 8 ГБ RAM, NVMe, KVM, безлимитный трафик и выдача сервера за минуту.

Читайте также