Перейти к основному содержимому
Вернуться в категорию

Лучшая конфигурация сервера для WordPress

Оптимальная конфигурация сервера для WordPress: стек LEMP, PHP-FPM, кэш Nginx FastCGI, Redis, настройка MariaDB, OPcache и настройка CDN. Рекомендуемые характеристики для разных уровней трафика.

Время чтения: 15 мин Веб-хостинг / Приложения
wordpressnginxphp-fpmmariadbredisхостингвеб-сервер
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

Лучшая конфигурация сервера для WordPress

WordPress — самая популярная система управления контентом в мире. Однако при работе с конфигурациями по умолчанию могут возникать проблемы с производительностью. Это руководство шаг за шагом объясняет оптимальную конфигурацию сервера для быстрой и надёжной работы вашего сайта WordPress.

Рекомендуемые характеристики сервера по уровню трафика

Уровень трафикаЕжемесячные посетителиCPURAMХранилищеРекомендуемый план
Малый< 10 0002 vCPU2 ГБ20 ГБ NVMeVPS Starter
Средний10 000 - 100 0004 vCPU4-8 ГБ50 ГБ NVMeVDS Starter
Большой100 000 - 500 0008 vCPU16 ГБ100 ГБ NVMeVDS Pro
Корпоративный500 000+16+ vCPU32+ ГБ200+ ГБ NVMeDedicated

Установка стека LEMP

Стек LEMP (Linux + Nginx + MariaDB + PHP-FPM) обеспечивает наилучшую производительность для WordPress. Он использует меньше памяти, чем Apache, и поддерживает больше одновременных соединений.

hljs bash
# Обновить систему
sudo apt update && sudo apt upgrade -y

# Установить Nginx
sudo apt install nginx -y

# Установить MariaDB
sudo apt install mariadb-server mariadb-client -y

# Установить PHP и необходимые расширения
sudo apt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-gd \
  php8.2-curl php8.2-mbstring php8.2-zip php8.2-redis -y

Конфигурация пула PHP-FPM

hljs ini
[wordpress]
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500

php_admin_value[memory_limit] = 256M
php_admin_value[upload_max_filesize] = 64M
php_admin_value[max_execution_time] = 300

Конфигурация Nginx и кэш FastCGI

hljs nginx
fastcgi_cache_path /var/cache/nginx/wordpress
    levels=1:2
    keys_zone=WORDPRESS:100m
    inactive=60m
    max_size=1g;

server {
    listen 443 ssl http2;
    server_name example.com;

    set $skip_cache 0;
    if ($request_method = POST) { set $skip_cache 1; }
    if ($http_cookie ~* "wordpress_logged_in") { set $skip_cache 1; }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm-wordpress.sock;
        include fastcgi_params;
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 60m;
        fastcgi_cache_bypass $skip_cache;
        add_header X-FastCGI-Cache $upstream_cache_status;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

Объектный кэш Redis

hljs bash
sudo apt install redis-server -y
maxmemory 256mb
maxmemory-policy allkeys-lru
save ""
hljs php
// Добавить в wp-config.php
define('WP_REDIS_HOST', '/var/run/redis/redis-server.sock');
define('WP_REDIS_PORT', 0);

Оптимизация MariaDB

hljs ini
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
query_cache_type = 1
query_cache_size = 64M
max_connections = 150
tmp_table_size = 64M

Конфигурация OPcache

hljs ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000
opcache.jit=1255
opcache.jit_buffer_size=128M

Настройка CDN

CDN (сеть доставки контента) распределяет ваши статические файлы по серверам по всему миру, сокращая время загрузки.

Интеграция с Cloudflare

  1. Зарегистрируйтесь в Cloudflare и добавьте домен
  2. Перенесите DNS-записи в Cloudflare
  3. Установите режим SSL/TLS на «Full (Strict)»
  4. Установите плагин Cloudflare в WordPress

Конфигурация безопасности WordPress

hljs php
define('DISALLOW_FILE_EDIT', true);
define('FORCE_SSL_ADMIN', true);
define('WP_DEBUG', false);

Для улучшения производительности WordPress сначала применяйте оптимизации с наибольшим эффектом: 1) OPcache, 2) кэш FastCGI, 3) объектный кэш Redis, 4) CDN. Эти четыре шага ускоряют большинство сайтов WordPress в 5-10 раз.

Часто задаваемые вопросы

Что лучше для WordPress: Apache или Nginx?

Nginx, как правило, является лучшим выбором для WordPress. Он использует меньше памяти, чем Apache, поддерживает больше одновременных соединений и обеспечивает гораздо более быстрое время отклика с кэшем FastCGI.

Что выбрать между Redis и Memcached?

Для WordPress рекомендуется Redis. Redis предлагает более богатые структуры данных, чем Memcached, имеет опцию постоянства и обеспечивает отличную интеграцию с плагином WordPress Redis Object Cache.

В чём разница между кэшем FastCGI и W3 Total Cache?

Кэш FastCGI работает на уровне Nginx и отвечает, полностью обходя PHP. Это намного быстрее, чем решения кэширования на основе плагинов WordPress. Если вы используете кэш FastCGI на уровне сервера, вам обычно не нужен дополнительный плагин кэширования WordPress.

Сколько RAM нужно WordPress?

Можно начать с минимум 2 ГБ RAM, но рекомендуется 4 ГБ. Высоконагруженным сайтам может потребоваться 8-16 ГБ. Расчёт RAM: ~50-100 МБ на процесс PHP-FPM, ~1 ГБ для MariaDB, ~256 МБ для Redis, ~50 МБ для Nginx.

Требует ли WooCommerce специальной конфигурации?

Да, для WooCommerce требуются некоторые дополнительные настройки. Страницы корзины и оформления заказа не должны кэшироваться. Используйте хранилище сессий Redis. Установите PHP memory_limit не менее 256 МБ. Для высоконагруженных сайтов WooCommerce рекомендуется VDS или выделенный сервер.

Связанные статьи

Деплой Node.js приложения: PM2 и Nginx

Полное руководство по развёртыванию Node.js приложений на VPS. Установка Node.js через nvm, менеджер процессов PM2, обратный прокси Nginx, SSL-сертификат и управление переменными окружения.

15 мин
nodejspm2nginx

Деплой PHP приложения: LAMP и LEMP стек

Полное руководство по развёртыванию PHP приложений на VPS. Сравнение LAMP и LEMP, настройка Apache/Nginx + PHP-FPM + MySQL, конфигурация виртуальных хостов и управление версиями PHP.

18 мин
phplamplemp
Сетевой трафикВходящий GbpsИсходящий Gbps