Гид по технологиям

Установка WordPress на Ubuntu с NGINX

5 min read WordPress Обновлено 22 Dec 2025
Установка WordPress на Ubuntu с NGINX
Установка WordPress на Ubuntu с NGINX

Важное: перед началом убедитесь, что у вас есть резервные копии и доступ к консоли сервера (SSH) с правами sudo.

Логотип WordPress в тёмном режиме

Быстрые ссылки

  • Установка зависимостей
  • Установка WordPress
  • Настройка NGINX
  • Настройка сайта и безопасность

Что вам понадобится (кратко)

  • Сервер с Ubuntu (18.04, 20.04 или 22.04). Если используете более новую LTS-версию — учтите номера пакетов PHP.
  • Домен, указывающий на сервер (A/AAAA запись).
  • Доступ по SSH с правами sudo.
  • Минимум 1 ГБ ОЗУ рекомендуется для комфортной работы.

Понятия в одной строке

  • NGINX: быстрый веб-сервер и реверс-прокси.
  • PHP-FPM: менеджер процессов PHP, который обрабатывает PHP-код.
  • MySQL/MariaDB: СУБД для хранения данных WordPress.
  • certbot: клиент для автоматического получения сертификатов Let’s Encrypt.

1. Установка зависимостей

Обновите индексы пакетов и установите NGINX:

sudo apt update
sudo apt install nginx

Если у вас включён брандмауэр UFW, откройте HTTP и HTTPS:

sudo ufw allow 'Nginx Full'

Установите сервер базы данных. Здесь используется MySQL, можно заменить на MariaDB по желанию:

sudo apt install mysql-server

После установки обязательно выполните интерактивную утилиту для базовой защиты MySQL:

sudo mysql_secure_installation

Создайте базу данных и отдельного пользователя для WordPress (подставьте надёжный пароль):

sudo mysql -u root -p
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Примечание: используйте utf8mb4 для поддержки эмодзи и современных символов.

Установите PHP и необходимые расширения (поменяйте версию php на актуальную, например php8.1):

sudo apt install php-fpm php-mysql
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

Перезапустите сервис PHP-FPM, заменив версию на ту, что установлена у вас:

sudo systemctl restart php7.4-fpm.service

Или, если у вас другая версия, используйте php8.1-fpm и т.д. Проверьте актуальный сокет или порт (см. раздел NGINX).


2. Установка WordPress

Скачайте последнюю версию WordPress и распакуйте её:

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

Скопируйте образец конфигурации и переместите файлы в публичную папку:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
sudo cp -a /tmp/wordpress/. /var/www/wordpress
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;

Сгенерируйте секретные ключи (salts) и вставьте их в wp-config.php. Получить новые можно командой:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

Откройте файл конфигурации и укажите параметры базы данных и метод файловой системы:

sudo nano /var/www/wordpress/wp-config.php

Пример необходимых строк (замените значения):

define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpressuser');
define('DB_PASSWORD', 'strong_password_here');
define('DB_HOST', 'localhost');
define('FS_METHOD', 'direct');

Пример содержимого wp-config: вставка секретных ключей и настроек базы данных

Совет: для безопасности храните резервную копию wp-config.php и по возможности вынесите чувствительные параметры (ключи, пароли) в системные переменные или отдельный файл, доступный только root.


3. Настройка NGINX для WordPress

Создайте новый файл конфигурации сайта в /etc/nginx/sites-available, например example.com. Ниже — пример рабочего конфига. Обязательно замените server_name и путь root на ваши значения. Также проверьте путь к сокету PHP-FPM (php7.4-fpm.sock) и замените на свой, если нужно.

# Upstream to abstract backend connection(s) for php
upstream php {
    server unix:/var/run/php/php7.4-fpm.sock;
    server 127.0.0.1:9000;
}

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /var/www/wordpress;
    index index.php index.html index.htm;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_pass php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

Сохраните файл и активируйте сайт:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Экран приветствия установки WordPress

Перейдите в браузере на http://example.com и завершите веб-установку WordPress (создайте администратора и базовые настройки).


4. Настройка HTTPS (Let’s Encrypt)

Установите certbot и плагин для NGINX:

sudo apt-get install certbot
sudo apt install python3-certbot-nginx

Запустите certbot для автоматической конфигурации NGINX и получения сертификата:

sudo certbot --nginx -d example.com -d www.example.com

Проверьте, что автоматическое обновление сертификатов включено (cron или systemd таймер). Тестовый запуск обновления:

sudo certbot renew --dry-run

После получения сертификата NGINX будет перезапущен и сайт станет доступен по HTTPS.


5. Настройка и оформление сайта

После входа в админ-панель (https://example.com/wp-admin/) выберите тему: Внешний вид → Темы → Добавить. Активируйте тему и откройте Настроить, чтобы изменить логотип, цвета и шрифты.

Панель управления WordPress — выбор темы

Активация темы в разделе «Внешний вид»

Интерфейс настройки темы, кнопка «Настроить»

Если нужно править шаблон, используйте дочернюю тему (child theme), чтобы не потерять правки при обновлении. Если вы всё же редактируете файлы напрямую, пример:

cd /var/www/wordpress/wp-content/themes/dark-press/
sudo nano index.php

Дополнительно: безопасность и эксплуатация (Best practices)

  1. Обновления
  • Регулярно обновляйте ядро WordPress, плагины и темы. Автообновления можно настроить частично, но для крупных сайтов лучше тестировать на стенде.
  1. Права доступа
  • Владелец файлов — www-data, директории 755, файлы 644. Ограничьте запись только там, где это действительно нужно.
  1. Отключение редактора тем/плагинов в панели
  • Добавьте в wp-config.php:
define('DISALLOW_FILE_EDIT', true);
  1. Резервные копии
  • Настройте регулярный бэкап файлов и базы (например, rsync + mysqldump, или решения на базе Borg/Restic).
  1. Защита от перебора паролей
  • Используйте двухфакторную аутентификацию и ограничение попыток входа.
  1. Защита базы данных
  • Не используйте root для WordPress; откройте доступ только с localhost.
  1. HTTP headers
  • Включите HSTS, Content-Security-Policy и X-Frame-Options в NGINX при необходимости.

Роль‑ориентированные чек-листы

Администратор сервера:

  • Настроить UFW и открыть порты 80/443.
  • Настроить мониторинг (CPU, RAM, диск).
  • Позаботиться о бэкапах и автоматическом обновлении безопасности.

Разработчик/темолог:

  • Работать через child-theme.
  • Использовать локальный стенд для тестов.
  • Версионировать изменения в Git.

Контент-менеджер:

  • Настроить редакционные роли и права.
  • Включить авто-сохранение черновиков.

Когда этот подход не сработает (ограничения)

  • Ограниченные ресурсы сервера: для крупных сайтов с высокой посещаемостью лучше использовать управляемые хостинги или облачную архитектуру с балансировкой нагрузки.
  • Комплаенс и сертификация: если нужны специфические требования к хостингу (SOC2, ISO), самохостинг может оказаться не лучшим выбором.
  • Если вам нужна постоянная поддержка и SLA 24/7 — рассмотрите коммерческий managed WordPress.

Мини‑методология восстановления после инцидента

  1. Снимаем состояние: backup базы и файлов сразу.
  2. Отключаем сайт (maintenance mode).
  3. Проверяем логи /var/log/nginx и wp-content/debug.log.
  4. Восстанавливаем последние чистые бэкапы.
  5. Меняем пароли и ключи в wp-config.php и базе.
  6. Проверяем сайт в тестовой среде, затем снимаем maintenance.

Быстрая таблица соответствий (ключевые пути и порты)

  • Порт HTTP: 80
  • Порт HTTPS: 443
  • Путь сайта: /var/www/wordpress
  • Пользователь веб-сервера: www-data
  • Типичный PHP-FPM сокет: /var/run/php/php7.4-fpm.sock (или php8.1-fpm.sock)
  • Путь конфигов NGINX: /etc/nginx/sites-available/

Краткий глоссарий (1 строка каждое)

  • PHP-FPM — FastCGI-процесс-менеджер для выполнения PHP-кода.
  • Certbot — клиент Let’s Encrypt для автоматического получения сертификатов.
  • Child theme — дочерняя тема WordPress, наследующая стили и шаблоны родителя.

Итог

Вы развернули рабочий WordPress-сайт на Ubuntu с NGINX, настроили MySQL и PHP-FPM, обеспечили базовую безопасность и получили HTTPS-сертификат. Для продакшена дополнительно настройте мониторинг, регулярные бэкапы и политики обновлений.

Список действий для следующего шага:

  • Настроить автоматические резервные копии;
  • Проверить права и отключить редактор файлов в админке;
  • Настроить 2FA для всех админов;
  • Перенести конфигурацию в систему контроля версий, если вы вносите постоянные правки в тему.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Виртуальный фон в Zoom — как включить
Руководство

Виртуальный фон в Zoom — как включить

Включить DNS over HTTPS в Windows 11
Руководство

Включить DNS over HTTPS в Windows 11

Секции в PowerPoint: организация презентаций
Презентации

Секции в PowerPoint: организация презентаций

Сменить аккаунт Google по умолчанию на Android
Android.

Сменить аккаунт Google по умолчанию на Android

Raw Accel: предсказуемое ускорение мыши
Игры

Raw Accel: предсказуемое ускорение мыши

Как использовать офлайн‑видео в TikTok
Руководства

Как использовать офлайн‑видео в TikTok