Деплой Node.js приложения: PM2 и Nginx
Полное руководство по развёртыванию Node.js приложений на VPS. Установка Node.js через nvm, менеджер процессов PM2, обратный прокси Nginx, SSL-сертификат и управление переменными окружения.
Оптимальная конфигурация сервера для WordPress: стек LEMP, PHP-FPM, кэш Nginx FastCGI, Redis, настройка MariaDB, OPcache и настройка CDN. Рекомендуемые характеристики для разных уровней трафика.
WordPress — самая популярная система управления контентом в мире. Однако при работе с конфигурациями по умолчанию могут возникать проблемы с производительностью. Это руководство шаг за шагом объясняет оптимальную конфигурацию сервера для быстрой и надёжной работы вашего сайта WordPress.
| Уровень трафика | Ежемесячные посетители | CPU | RAM | Хранилище | Рекомендуемый план |
|---|---|---|---|---|---|
| Малый | < 10 000 | 2 vCPU | 2 ГБ | 20 ГБ NVMe | VPS Starter |
| Средний | 10 000 - 100 000 | 4 vCPU | 4-8 ГБ | 50 ГБ NVMe | VDS Starter |
| Большой | 100 000 - 500 000 | 8 vCPU | 16 ГБ | 100 ГБ NVMe | VDS Pro |
| Корпоративный | 500 000+ | 16+ vCPU | 32+ ГБ | 200+ ГБ NVMe | Dedicated |
Стек LEMP (Linux + Nginx + MariaDB + PHP-FPM) обеспечивает наилучшую производительность для WordPress. Он использует меньше памяти, чем Apache, и поддерживает больше одновременных соединений.
# Обновить систему
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
[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
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";
}
}
sudo apt install redis-server -y
maxmemory 256mb
maxmemory-policy allkeys-lru
save ""
// Добавить в wp-config.php
define('WP_REDIS_HOST', '/var/run/redis/redis-server.sock');
define('WP_REDIS_PORT', 0);
[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.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000
opcache.jit=1255
opcache.jit_buffer_size=128M
CDN (сеть доставки контента) распределяет ваши статические файлы по серверам по всему миру, сокращая время загрузки.
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 раз.
Nginx, как правило, является лучшим выбором для WordPress. Он использует меньше памяти, чем Apache, поддерживает больше одновременных соединений и обеспечивает гораздо более быстрое время отклика с кэшем FastCGI.
Для WordPress рекомендуется Redis. Redis предлагает более богатые структуры данных, чем Memcached, имеет опцию постоянства и обеспечивает отличную интеграцию с плагином WordPress Redis Object Cache.
Кэш FastCGI работает на уровне Nginx и отвечает, полностью обходя PHP. Это намного быстрее, чем решения кэширования на основе плагинов WordPress. Если вы используете кэш FastCGI на уровне сервера, вам обычно не нужен дополнительный плагин кэширования WordPress.
Можно начать с минимум 2 ГБ RAM, но рекомендуется 4 ГБ. Высоконагруженным сайтам может потребоваться 8-16 ГБ. Расчёт RAM: ~50-100 МБ на процесс PHP-FPM, ~1 ГБ для MariaDB, ~256 МБ для Redis, ~50 МБ для Nginx.
Да, для WooCommerce требуются некоторые дополнительные настройки. Страницы корзины и оформления заказа не должны кэшироваться. Используйте хранилище сессий Redis. Установите PHP memory_limit не менее 256 МБ. Для высоконагруженных сайтов WooCommerce рекомендуется VDS или выделенный сервер.
Полное руководство по развёртыванию Node.js приложений на VPS. Установка Node.js через nvm, менеджер процессов PM2, обратный прокси Nginx, SSL-сертификат и управление переменными окружения.
Полное руководство по развёртыванию PHP приложений на VPS. Сравнение LAMP и LEMP, настройка Apache/Nginx + PHP-FPM + MySQL, конфигурация виртуальных хостов и управление версиями PHP.
Руководство по установке и оптимизации WordPress на VPS. Настройка LEMP стека, параметры wp-config.php, права доступа к файлам, SSL, оптимизация производительности OPcache и усиление безопасности.