Деплой Node.js приложения: PM2 и Nginx
Полное руководство по развёртыванию Node.js приложений на VPS. Установка Node.js через nvm, менеджер процессов PM2, обратный прокси Nginx, SSL-сертификат и управление переменными окружения.
Руководство по установке и оптимизации WordPress на VPS. Настройка LEMP стека, параметры wp-config.php, права доступа к файлам, SSL, оптимизация производительности OPcache и усиление безопасности.
WordPress — самая распространённая система управления контентом в мире. Запуск WordPress на VPS вместо общего хостинга даёт больше контроля, лучшую производительность и возможности настройки. В этом руководстве рассматривается установка, настройка и оптимизация WordPress на стеке LEMP.
# Обновление системы
sudo apt update && sudo apt upgrade -y
# Установка Nginx
sudo apt install nginx -y
sudo systemctl enable nginx
# Установка MariaDB
sudo apt install mariadb-server -y
sudo systemctl enable mariadb
sudo mysql_secure_installation
# Установка PHP 8.2 и необходимых расширений для WordPress
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl \
php8.2-mbstring php8.2-zip php8.2-gd php8.2-imagick php8.2-intl \
php8.2-bcmath php8.2-soap -y
sudo systemctl enable php8.2-fpm
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;
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo mv wordpress /var/www/mysite.com
# Установка прав доступа
sudo chown -R www-data:www-data /var/www/mysite.com
sudo find /var/www/mysite.com -type d -exec chmod 755 {} \;
sudo find /var/www/mysite.com -type f -exec chmod 644 {} \;
// Настройки базы данных
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'надёжный-пароль' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
// Отключить редактирование файлов (безопасность)
define('DISALLOW_FILE_EDIT', true);
// Принудительный SSL
define('FORCE_SSL_ADMIN', true);
// Лимит памяти
define('WP_MEMORY_LIMIT', '256M');
server {
listen 80;
server_name mysite.com www.mysite.com;
root /var/www/mysite.com;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location = /xmlrpc.php { deny all; }
location = /wp-config.php { deny all; }
location ~ /\. { deny all; }
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
client_max_body_size 64M;
}
sudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d mysite.com -d www.mysite.com
opcache.enable = 1
opcache.memory_consumption = 256
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 2
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 3000
# Защита wp-config.php
sudo chmod 600 /var/www/mysite.com/wp-config.php
Установите права доступа к wp-config.php на 600. Этот файл содержит пароль от базы данных.
На серверах REXE для WordPress рекомендуется минимум 2 ГБ ОЗУ. Для сайтов с высоким трафиком предпочтительнее 4 ГБ+ ОЗУ и SSD-диск.
Ваш сайт WordPress теперь работает на стеке LEMP на VPS, защищён SSL и оптимизирован с OPcache. Поддерживайте сайт в рабочем состоянии с помощью регулярных резервных копий, обновлений безопасности и мониторинга производительности.
Проверьте значения DB_NAME, DB_USER, DB_PASSWORD и DB_HOST в wp-config.php. Убедитесь, что MySQL работает: 'sudo systemctl status mariadb'. Проверьте права доступа пользователя к базе данных SQL-командой 'SHOW GRANTS FOR wpuser@localhost;'.
Проверьте правильность директивы try_files в конфигурации Nginx. Убедитесь, что PHP-FPM работает: 'sudo systemctl status php8.2-fpm'. Просмотрите журнал ошибок Nginx: 'sudo tail -f /var/log/nginx/mysite.com.error.log'.
Увеличьте upload_max_filesize и post_max_size в php.ini (например, 64M). Также увеличьте client_max_body_size в Nginx до того же значения. Перезапустите PHP-FPM и Nginx. Добавьте 'define("WP_MAX_MEMORY_LIMIT", "256M");' в wp-config.php.
Включите OPcache, используйте Nginx FastCGI Cache. Установите плагин W3 Total Cache или WP Super Cache. Используйте CDN (Cloudflare). Добавьте плагин Smush или ShortPixel для оптимизации изображений. Регулярно оптимизируйте базу данных с помощью WP-CLI.
Полное руководство по развёртыванию Node.js приложений на VPS. Установка Node.js через nvm, менеджер процессов PM2, обратный прокси Nginx, SSL-сертификат и управление переменными окружения.
Полное руководство по развёртыванию PHP приложений на VPS. Сравнение LAMP и LEMP, настройка Apache/Nginx + PHP-FPM + MySQL, конфигурация виртуальных хостов и управление версиями PHP.
Руководство по развёртыванию Python/Django приложений на VPS. Настройка virtualenv, производственные настройки Django, WSGI-сервер Gunicorn, обратный прокси Nginx, systemd-сервис и управление статическими файлами.