Представь, что тебе нужно развернуть быстрый и безопасный WordPress-сайт на Ubuntu сервере. В этом руководстве я, как Senior DevOps, покажу тебе профессиональный подход к установке WordPress на Ubuntu с использованием Nginx вместо Apache. Мы разберем каждый шаг — от настройки сервера до оптимизации производительности.
Что тебе понадобится перед началом
- Сервер Ubuntu 20.04 или 22.04 LTS
- Доступ по SSH с правами sudo
- Зарегистрированное доменное имя (или IP-адрес)
- Базовые знания командной строки Linux
Шаг 1: Обновление системы и установка базовых пакетов
Давай начнем с подготовки системы. Сначала обновим пакеты и установим необходимые инструменты:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl wget gnupg2 software-properties-common
Шаг 2: Установка и настройка Nginx для WordPress
Nginx — наш выбор для высокой производительности. Установим его и настроим базовую конфигурацию:
sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
Настройка Nginx для WordPress
Создадим конфигурационный файл для нашего сайта. Замени example.com на твой домен:
sudo nano /etc/nginx/sites-available/wordpress
Добавь следующую конфигурацию:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/wordpress;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
Активируем конфигурацию и проверяем синтаксис:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Шаг 3: Установка MySQL/MariaDB и создание базы данных
WordPress требует базу данных. Установим MariaDB (совместимую с MySQL) и создадим БД:
sudo apt install -y mariadb-server mariadb-client
sudo mysql_secure_installation
Создадим базу данных и пользователя для WordPress:
sudo mysql -u root -p
# В консоли MySQL выполни:
CREATE DATABASE wordpress_db;
CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Шаг 4: Установка PHP и необходимых расширений
WordPress требует PHP с определенными расширениями. Установим PHP 8.1 (или актуальную версию):
sudo apt install -y php8.1-fpm php8.1-mysql php8.1-curl \
php8.1-gd php8.1-mbstring php8.1-xml php8.1-xmlrpc \
php8.1-zip php8.1-opcache php8.1-intl
Настройка PHP-FPM для оптимальной производительности
Отредактируем настройки PHP-FPM для лучшей производительности WordPress:
sudo nano /etc/php/8.1/fpm/php.ini
Найди и измени следующие параметры:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
sudo systemctl restart php8.1-fpm
Шаг 5: Установка WordPress
Теперь установим сам WordPress. Создадим директорию и скачаем последнюю версию:
sudo mkdir -p /var/www/wordpress
cd /var/www/wordpress
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzvf latest.tar.gz --strip-components=1
sudo rm latest.tar.gz
Настроим права доступа:
sudo chown -R www-data:www-data /var/www/wordpress
sudo chmod -R 755 /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;
Настройка wp-config.php
Создадим файл конфигурации WordPress:
cd /var/www/wordpress
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
Обнови следующие строки с твоими данными:
define('DB_NAME', 'wordpress_db');
define('DB_USER', 'wordpress_user');
define('DB_PASSWORD', 'StrongPassword123!');
define('DB_HOST', 'localhost');
Добавь уникальные ключи безопасности (сгенерируй новые на https://api.wordpress.org/secret-key/1.1/salt/):
define('AUTH_KEY', 'вставь_свой_уникальный_ключ');
define('SECURE_AUTH_KEY', 'вставь_свой_уникальный_ключ');
define('LOGGED_IN_KEY', 'вставь_свой_уникальный_ключ');
define('NONCE_KEY', 'вставь_свой_уникальный_ключ');
define('AUTH_SALT', 'вставь_свой_уникальный_ключ');
define('SECURE_AUTH_SALT', 'вставь_свой_уникальный_ключ');
define('LOGGED_IN_SALT', 'вставь_свой_уникальный_ключ');
define('NONCE_SALT', 'вставь_свой_уникальный_ключ');
Шаг 6: Завершение установки через веб-интерфейс
Открой браузер и перейди по адресу твоего домена (или IP-адресу сервера). Ты увидишь мастер установки WordPress:
Данные для входа в мастер установки:
- Название сайта: Придумай название
- Имя пользователя: Не используй "admin"
- Пароль: Сгенерируй сложный пароль
- Email: Твой реальный email
Шаг 7: Настройка SSL/TLS (HTTPS)
Для безопасности настроим SSL с помощью Let's Encrypt:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Настрой автоматическое обновление сертификатов:
sudo certbot renew --dry-run
Оптимизация производительности WordPress на Nginx
Кэширование в Nginx
Добавь кэширование статики в конфигурацию Nginx:
# Добавь в server блок:
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
Настройка кэширования в WordPress
Установи плагины для кэширования:
- WP Rocket (премиум)
- W3 Total Cache (бесплатный)
- WP Super Cache (бесплатный)
Мониторинг и обслуживание
| Задача | Команда | Частота |
|---|---|---|
| Обновление системы | sudo apt update && sudo apt upgrade |
Еженедельно |
| Обновление WordPress | Через админ-панель | При выходе обновлений |
| Проверка логов | sudo tail -f /var/log/nginx/error.log |
При проблемах |
| Резервное копирование | sudo tar -czf backup.tar.gz /var/www/wordpress |
Ежедневно |
Часто задаваемые вопросы (FAQ)
Почему выбирать Nginx вместо Apache для WordPress?
Nginx лучше обрабатывает высокие нагрузки, эффективнее использует память и имеет более простую конфигурацию для кэширования. Для WordPress с большим трафиком Nginx показывает лучшую производительность.
Как настроить мультисайтовость WordPress на Nginx?
Используй директиву server_name с wildcard: server_name ~^(www\\.)?(.+)\\.example\\.com$; и настрой соответствующие правила rewrite в location блоках.
Как оптимизировать загрузку изображений в WordPress на Nginx?
Используй модуль ngx_pagespeed или настрой сжатие gzip/brotli в Nginx. Также установи плагины для ленивой загрузки (lazy load) и оптимизации изображений (например, Imagify или ShortPixel).
Как защитить WordPress от брутфорс атак на Nginx?
Настрой rate limiting в Nginx: limit_req_zone $binary_remote_addr zone=wpadmin:10m rate=1r/s; и примени к location /wp-admin и /wp-login.php. Также используй плагины безопасности вроде Wordfence.
Заключение
Ты успешно установил WordPress на Ubuntu с Nginx. Помни, что это базовая настройка. Для продакшн-среды обязательно:
- Настрой брандмауэр (UFW)
- Внедри систему резервного копирования
- Настрой мониторинг ресурсов сервера
- Регулярно обновляй WordPress и плагины
- Используй CDN для статического контента
Эта конфигурация обеспечит тебе быстрый, безопасный и масштабируемый WordPress сайт. Для высоконагруженных проектов рассмотри возможность добавления кэширующего прокси (Varnish) и балансировщика нагрузки.