Повний посібник з розгортання WordPress на Debian з Nginx: від встановлення до оптимізації

Востаннє змінено 17 Вересня 2025 в
  • 24 min read
  • 22
  • 0
Spartak Itskovich

Spartak Itskovich

Game Content Writer

WordPress є найпопулярнішою системою керування контентом у світі, що використовується більш ніж на 43% всіх веб-сайтів. Debian, як одна з найстабільніших дистрибуцій Linux, забезпечує надійну основу для хостингу WordPress. Цей детальний посібник охоплює весь процес розгортання WordPress на Debian з використанням стеку LEMP (Linux, Nginx, MariaDB/MySQL, PHP), від початкового налаштування системи до просунутих методів оптимізації та захисту.

Підготовка системи та передумови

Системні вимоги

Перед початком встановлення WordPress на Debian необхідно переконатися, що ваша система відповідає мінімальним вимогам. Для стабільної роботи WordPress рекомендується мати щонайменше 1 ГБ оперативної пам'яті, 20 ГБ дискового простору та стабільне з'єднання з Інтернетом.

Для початку роботи оновіть систему до останньої версії через термінал:

# sudo - виконати команду з правами адміністратора
# apt update - оновити список доступних пакетів
# && - виконати наступну команду тільки якщо попередня успішна
# apt upgrade -y - встановити всі доступні оновлення без запитань
sudo apt update && sudo apt upgrade -y

Ця команда спочатку оновлює список доступних пакетів (apt update), а потім встановлює оновлення (apt upgrade).

Перевірте версію Debian за допомогою команди:

# cat - вивести вміст файлу на екран
# /etc/debian_version - файл що містить версію Debian
cat /etc/debian_version

Налаштування мережі та файрволу

Налаштування безпеки починається з правильної конфігурації мережевих з'єднань та файрволу. Встановіть UFW (Uncomplicated Firewall) для базового захисту:

# sudo apt install - встановити пакет з правами адміністратора
# ufw - назва пакету файрволу
# -y - автоматично відповісти "так" на всі запитання
sudo apt install ufw -y

# sudo ufw allow - дозволити підключення через файрвол
# ssh - дозволити SSH підключення (порт 22)
sudo ufw allow ssh

# 'Nginx Full' - дозволити HTTP (порт 80) та HTTPS (порт 443) для Nginx
sudo ufw allow 'Nginx Full'

# sudo ufw enable - активувати файрвол
sudo ufw enable

Ці команди встановлюють файрвол, дозволяють SSH з'єднання та HTTP/HTTPS трафік для Nginx, а потім активують захист.

Встановлення стеку LEMP

Встановлення Nginx Web Server

Nginx є високопродуктивним веб-сервером, який забезпечує кращу продуктивність та менше споживання ресурсів.

Встановлення Nginx на Debian:

# sudo apt install - встановити пакет з правами адміністратора
# nginx - назва пакету веб-сервера Nginx
# -y - автоматично підтвердити встановлення
sudo apt install nginx -y

Після встановлення запустіть та активуйте Nginx для автоматичного запуску при завантаженні системи:

# sudo systemctl start - запустити службу
# nginx - назва служби для запуску
sudo systemctl start nginx

# sudo systemctl enable - активувати автозапуск служби при завантаженні
# nginx - назва служби для активації
sudo systemctl enable nginx

Перевірте статус служби:

# sudo systemctl status - перевірити стан служби
# nginx - назва служби для перевірки
sudo systemctl status nginx

Тестування Nginx можна виконати, відвідавши http://localhost або IP-адресу вашого сервера у веб-браузері.

Встановлення MySQL/MariaDB

MariaDB є сучасною заміною MySQL, яка забезпечує кращу продуктивність та додаткові можливості. Для WordPress рекомендується використовувати саме MariaDB:

# sudo apt install - встановити пакети з правами адміністратора
# mariadb-server - серверна частина MariaDB
# mariadb-client - клієнтські утиліти для підключення до MariaDB
# -y - автоматично підтвердити встановлення
sudo apt install mariadb-server mariadb-client -y

Запустіть службу бази даних:

# sudo systemctl start - запустити службу
# mariadb - назва служби MariaDB
sudo systemctl start mariadb

# sudo systemctl enable - активувати автозапуск при завантаженні
# mariadb - назва служби для активації
sudo systemctl enable mariadb

Виконайте безпечне налаштування MariaDB:

# sudo - виконати з правами адміністратора
# mysql_secure_installation - скрипт для налаштування безпеки MariaDB
sudo mysql_secure_installation

Під час налаштування встановіть надійний пароль для root-користувача та відповідайте "Y" на всі запитання безпеки.

Встановлення PHP та PHP-FPM

PHP-FPM (FastCGI Process Manager) є оптимальним вибором для роботи з Nginx, забезпечуючи кращу продуктивність та безпеку. Встановіть PHP разом з необхідними модулями:

# sudo apt install - встановити пакети з правами адміністратора
# php - основний пакет PHP
# php-fpm - FastCGI Process Manager для PHP
# php-mysql - модуль для роботи з базами даних MySQL/MariaDB
# ... (інші модулі)
# -y - автоматично підтвердити встановлення
sudo apt install php php-fpm php-mysql php-cli php-common php-zip php-curl php-mbstring php-xml php-gd php-intl php-bcmath -y

Перевірте версію PHP:

# php - запустити PHP
# -v - показати версію PHP
php -v

Запустіть та активуйте PHP-FPM:

# sudo systemctl start - запустити службу
# php8.2-fpm - назва служби PHP-FPM (версія може відрізнятися)
sudo systemctl start php8.2-fpm # замініть на вашу версію PHP

# sudo systemctl enable - активувати автозапуск при завантаженні
# php8.2-fpm - назва служби для активації
sudo systemctl enable php8.2-fpm

Налаштування бази даних для WordPress

Створення бази даних

Увійдіть до MySQL/MariaDB як root-користувач:

# sudo - виконати з правами адміністратора
# mysql - клієнт для підключення до MariaDB
# -u root - підключитися як користувач root
# -p - запитати пароль при підключенні
sudo mysql -u root -p

Створіть окрему базу даних для WordPress:

-- CREATE DATABASE - команда створення нової бази даних
-- wordpress_db - назва бази даних для WordPress
-- CHARACTER SET utf8mb4 - встановити кодування UTF-8 з підтримкою емодзі
-- COLLATE utf8mb4_unicode_ci - встановити правила сортування для Unicode
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Ця команда створює базу даних з назвою wordpress_db та налаштовує кодування UTF-8 для підтримки всіх мов світу.

Створіть окремого користувача для WordPress та надайте йому відповідні привілеї:

-- CREATE USER - команда створення нового користувача
-- 'wp_user' - ім'я користувача для WordPress
-- @'localhost' - користувач може підключатися тільки з локального сервера
-- IDENTIFIED BY 'secure_password' - встановити пароль для користувача
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'secure_password';

-- GRANT ALL PRIVILEGES - надати всі права доступу
-- ON wordpress_db.* - до всіх таблиць у базі wordpress_db
-- TO 'wp_user'@'localhost' - користувачу wp_user з localhost
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';

-- FLUSH PRIVILEGES - застосувати зміни прав доступу
FLUSH PRIVILEGES;

-- EXIT - вийти з MariaDB клієнта
EXIT;

Замініть secure_password на надійний пароль, який складається з великих і малих літер, цифр та спеціальних символів.

Завантаження та встановлення WordPress

Завантаження WordPress

Перейдіть до тимчасової директорії та завантажте останню версію WordPress:

# cd - змінити поточну директорію
# /tmp - перейти до тимчасової директорії
cd /tmp

# wget - утиліта для завантаження файлів з Інтернету
# [https://wordpress.org/latest.tar.gz](https://wordpress.org/latest.tar.gz) - URL останньої версії WordPress
wget [https://wordpress.org/latest.tar.gz](https://wordpress.org/latest.tar.gz)

Команда wget завантажує файли з Інтернету, а cd змінює поточну директорію.

Розархівуйте завантажений файл:

# tar - утиліта для роботи з архівами
# x - розархівувати файли
# z - обробляти gzip стиснення
# v - показувати процес розархівування (verbose)
# f - вказати файл архіву
# latest.tar.gz - назва файлу для розархівування
tar xzvf latest.tar.gz

Скопіюйте файли WordPress до кореневої директорії веб-сервера:

# sudo - виконати з правами адміністратора
# cp - команда копіювання файлів
# -R - копіювати рекурсивно (включно з підпапками)
# wordpress/* - всі файли з папки wordpress
# /var/www/html/ - директорія призначення (корінь веб-сервера)
sudo cp -R wordpress/* /var/www/html/

Встановіть правильні дозволи для файлів:

# sudo chown - змінити власника файлів
# -R - рекурсивно для всіх файлів і папок
# www-data:www-data - встановити власника та групу www-data
# /var/www/html/ - директорія для зміни власника
sudo chown -R www-data:www-data /var/www/html/

# sudo find - знайти файли та папки з правами адміністратора
# /var/www/html/ - директорія для пошуку
# -type d - шукати тільки директорії (папки)
# -exec chmod 755 {} \; - виконати chmod 755 для кожної знайденої папки
# 755 - дозволи: власник може все, інші тільки читати та виконувати
sudo find /var/www/html/ -type d -exec chmod 755 {} \;

# sudo find - знайти файли з правами адміністратора
# /var/www/html/ - директорія для пошуку
# -type f - шукати тільки файли (не папки)
# -exec chmod 644 {} \; - виконати chmod 644 для кожного знайденого файлу
# 644 - дозволи: власник може читати та писати, інші тільки читати
sudo find /var/www/html/ -type f -exec chmod 644 {} \;

Ці команди встановлюють власника файлів (www-data - користувач веб-сервера) та правильні дозволи.

Створення конфігураційного файлу

Скопіюйте зразок конфігураційного файлу:

# cd - змінити поточну директорію
# /var/www/html/ - перейти до кореневої директорії сайту
cd /var/www/html/

# sudo cp - скопіювати файл з правами адміністратора
# wp-config-sample.php - зразок конфігураційного файлу WordPress
# wp-config.php - основний конфігураційний файл WordPress
sudo cp wp-config-sample.php wp-config.php

Відредагуйте конфігураційний файл за допомогою текстового редактора:

# sudo nano - відкрити текстовий редактор з правами адміністратора
# wp-config.php - файл для редагування
sudo nano wp-config.php

Змініть наступні рядки відповідно до створеної бази даних:

// define - функція PHP для визначення константи
// 'DB_NAME' - назва константи для імені бази даних
// 'wordpress_db' - значення константи (назва вашої бази даних)
define('DB_NAME', 'wordpress_db');

// 'DB_USER' - константа для імені користувача бази даних
// 'wp_user' - ім'я користувача, створеного для WordPress
define('DB_USER', 'wp_user');

// 'DB_PASSWORD' - константа для пароля бази даних
// 'secure_password' - пароль користувача бази даних
define('DB_PASSWORD', 'secure_password');

// 'DB_HOST' - константа для адреси сервера бази даних
// 'localhost' - база даних знаходиться на цьому ж сервері
define('DB_HOST', 'localhost');

Налаштування Nginx Server Blocks

Створення Server Block

Nginx використовує Server Blocks для обслуговування кількох доменів.

Створіть новий файл конфігурації для вашого домену:

# sudo nano - відкрити редактор з правами адміністратора
# /etc/nginx/sites-available/ - директорія для конфігурацій сайтів
# your-domain.com - назва файлу конфігурації (замініть на ваш домен)
sudo nano /etc/nginx/sites-available/your-domain.com

Додайте наступну конфігурацію для WordPress з Nginx:

server {
    # server - початок блоку конфігурації сервера
    listen 80;
    listen [::]:80;
    server_name your-domain.com [www.your-domain.com](https://www.your-domain.com);
    root /var/www/html;
    index index.php index.html index.htm;

    # Логування
    access_log /var/log/nginx/your-domain.com-access.log;
    error_log /var/log/nginx/your-domain.com-error.log;

    # Основний location block
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # Обробка PHP файлів через PHP-FPM
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Заборона доступу до системних файлів
    location ~ /\.ht {
        deny all;
    }

    # Оптимізація статичних файлів
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        log_not_found off;
    }

    # WordPress специфічні налаштування
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

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

    # Захист від доступу до конфігураційних файлів
    location ~* \.(conf|engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {
        deny all;
    }
}

Ця конфігурація визначає, як Nginx обробляє запити до вашого сайту.

Активуйте новий сайт створивши символічне посилання:

# sudo ln - створити посилання з правами адміністратора
# -s - створити символічне посилання
# /etc/nginx/sites-available/your-domain.com - джерело посилання
# /etc/nginx/sites-enabled/ - директорія для активних сайтів
sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled/

# sudo nginx -t - перевірити синтаксис конфігурації Nginx
sudo nginx -t

# sudo systemctl reload - перезавантажити конфігурацію Nginx
sudo systemctl reload nginx

Видаліть стандартний сайт:

# sudo unlink - видалити символічне посилання
# /etc/nginx/sites-enabled/default - стандартна конфігурація Nginx
sudo unlink /etc/nginx/sites-enabled/default

Налаштування PHP-FPM для оптимальної роботи

Створення окремого пулу для WordPress

PHP-FPM дозволяє створювати окремі пули для кращого управління ресурсами. Створіть спеціальний пул для WordPress:

# sudo nano - відкрити редактор з правами адміністратора
# /etc/php/8.2/fpm/pool.d/ - директорія для конфігурацій пулів PHP-FPM
# wordpress.conf - файл конфігурації пулу для WordPress
sudo nano /etc/php/8.2/fpm/pool.d/wordpress.conf

Додайте наступну конфігурацію:

[wordpress]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm-wordpress.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

pm = dynamic
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500

; Налаштування PHP
php_admin_value[memory_limit] = 256M
php_admin_value[max_execution_time] = 300
php_admin_value[upload_max_filesize] = 64M
php_admin_value[post_max_size] = 64M

; Безпека
php_admin_flag[allow_url_fopen] = off
php_admin_value[disable_functions] = exec,passthru,shell_exec,system

Ці налаштування визначають, скільки процесів PHP запускати та які ліміти встановити.

Оновіть конфігурацію Nginx для використання нового пулу:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm-wordpress.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Перезапустіть PHP-FPM:

# sudo systemctl restart - перезапустити службу
# php8.2-fpm - назва служби PHP-FPM
sudo systemctl restart php8.2-fpm

Завершення встановлення WordPress

Веб-інтерфейс налаштування

Відкрийте веб-браузер та перейдіть за адресою вашого домену. Ви побачите екран початкового налаштування WordPress.

Виберіть мову інтерфейсу та введіть інформацію про сайт:

  • Назва сайту
  • Ім'я користувача адміністратора
  • Надійний пароль
  • Email адресу адміністратора

Після завершення налаштування ви зможете увійти до панелі адміністратора WordPress за адресою http://your-domain.com/wp-admin/.

Налаштування безпеки WordPress

Захист файлу wp-config.php

Файл wp-config.php містить критично важливу інформацію про ваш сайт. На відміну від інших веб-серверів, Nginx не використовує .htaccess файли, тому захист конфігурується безпосередньо в server block:

# Заборона доступу до wp-config.php
location ~* wp-config\.php {
    deny all;
}

# Заборона доступу до логів та конфігураційних файлів
location ~* \.(log|conf)$ {
    deny all;
}

Приховування версії Nginx

Додайте до основної конфігурації Nginx:

# sudo nano - відкрити редактор з правами адміністратора
# /etc/nginx/nginx.conf - основний файл конфігурації Nginx
sudo nano /etc/nginx/nginx.conf

http {
    # Приховати версію Nginx
    server_tokens off;

    # Додаткові заголовки безпеки
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header Referrer-Policy "strict-origin-when-cross-origin";
}

Ці заголовки захищають від різних типів атак.

Обмеження спроб входу на рівні Nginx

Створіть зону обмеження запитів:

http {
    limit_req_zone $binary_remote_addr zone=wp_login:10m rate=1r/s;
    limit_req_zone $binary_remote_addr zone=wp_admin:10m rate=5r/s;
}

server {
    # Обмеження для wp-login.php
    location = /wp-login.php {
        limit_req zone=wp_login burst=2 nodelay;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    # Обмеження для wp-admin
    location ^~ /wp-admin/ {
        limit_req zone=wp_admin burst=5 nodelay;
    }
}

Налаштування SSL/TLS з Let's Encrypt

Встановлення Certbot для Nginx

Let's Encrypt надає безкоштовні SSL сертифікати:

# sudo apt install - встановити пакет з правами адміністратора
# python3-certbot-nginx - Certbot клієнт для Nginx
# -y - автоматично підтвердити встановлення
sudo apt install python3-certbot-nginx -y

Отримання SSL сертифіката

Запустіть Certbot для автоматичного налаштування SSL:

# sudo certbot - запустити Certbot з правами адміністратора
# --nginx - використати плагін для Nginx
# -d your-domain.com - домен для сертифікату
# -d [www.your-domain.com](https://www.your-domain.com) - додатковий домен (з www)
sudo certbot --nginx -d your-domain.com -d [www.your-domain.com](https://www.your-domain.com)

Certbot автоматично модифікує конфігурацію Nginx, додавши SSL налаштування:

# Блок для HTTPS
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name your-domain.com [www.your-domain.com](https://www.your-domain.com);

    ssl_certificate /etc/letsencrypt/live/[your-domain.com/fullchain.pem](https://your-domain.com/fullchain.pem);
    ssl_certificate_key /etc/letsencrypt/live/[your-domain.com/privkey.pem](https://your-domain.com/privkey.pem);

    # SSL оптимізація
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # HSTS
    add_header Strict-Transport-Security "max-age=63072000" always;
}

# Перенаправлення HTTP на HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name your-domain.com [www.your-domain.com](https://www.your-domain.com);
    return 301 https://$server_name$request_uri;
}

Автоматичне поновлення сертифікатів

Налаштуйте автоматичне поновлення сертифікатів через cron:

# sudo crontab -e - редагувати розклад завдань для root користувача
sudo crontab -e

Додайте наступний рядок для перевірки поновлення щодня о 12:00:

# 0 12 * * * - час виконання (хвилина година день місяць день_тижня)
# /usr/bin/certbot renew - команда поновлення сертифікатів
# --quiet - тихий режим (без виводу, якщо все добре)
0 12 * * * /usr/bin/certbot renew --quiet

Повна оптимізація WordPress з Nginx

Налаштування FastCGI кешування

FastCGI кеш є однією з найефективніших методик оптимізації для Nginx з PHP.

Додайте до конфігурації Nginx:

http {
    # Налаштування FastCGI кешу
    fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
}

server {
    # Змінні для управління кешуванням
    set $skip_cache 0;

    # Виключення кешування для POST запитів
    if ($request_method = POST) {
        set $skip_cache 1;
    }

    # Виключення кешування для URL з параметрами
    if ($query_string != "") {
        set $skip_cache 1;
    }

    # Виключення кешування для адмін панелі
    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
        set $skip_cache 1;
    }

    # Виключення кешування для залогінених користувачів
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
        set $skip_cache 1;
    }

    # Налаштування кешування для PHP
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
       
        # FastCGI кеш
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 60m;
        fastcgi_cache_valid 404 1m;
        add_header X-Cache $upstream_cache_status;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
    }
}

Створіть директорію для кешу:

# sudo mkdir - створити директорію з правами адміністратора
# -p - створити всі необхідні батьківські директорії
# /var/cache/nginx - шлях до директорії кешу
sudo mkdir -p /var/cache/nginx

# sudo chown - змінити власника директорії
# www-data:www-data - встановити власника та групу www-data
sudo chown www-data:www-data /var/cache/nginx

Оптимізація статичних файлів

Налаштуйте ефективне кешування статичних файлів:

server {
    # Кешування медіафайлів
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        add_header Vary Accept-Encoding;
        log_not_found off;
    }

    # Кешування шрифтів
    location ~* \.(woff|woff2|ttf|svg|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        add_header Access-Control-Allow-Origin "*";
    }

    # Стиснення Gzip
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
}

Налаштування Brotli стиснення

Для ще кращого стиснення встановіть модуль Brotli:

# sudo apt install - встановити пакет з правами адміністратора
# nginx-module-brotli - модуль Brotli для Nginx
# -y - автоматично підтвердити встановлення
sudo apt install nginx-module-brotli -y

Додайте до конфігурації Nginx:

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

http {
    # Brotli стиснення
    brotli on;
    brotli_comp_level 6;
    brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

Оптимізація PHP-FPM

Налаштуйте оптимальні параметри для вашого сервера у файлі /etc/php/8.2/fpm/php.ini:

# sudo nano - відкрити редактор з правами адміністратора
# /etc/php/8.2/fpm/php.ini - файл конфігурації PHP
sudo nano /etc/php/8.2/fpm/php.ini

; Оптимізація пам'яті
memory_limit = 256M
max_execution_time = 300
max_input_vars = 3000

; OPcache оптимізація
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2
opcache.fast_shutdown=1
opcache.enable_cli=1

; Завантаження файлів
upload_max_filesize = 64M
post_max_size = 64M

; Сесії
session.save_handler = files
session.save_path = "/tmp"

OPcache значно прискорює виконання PHP скриптів.

Моніторинг продуктивності Nginx

Активуйте модуль статистики Nginx:

sudo nano /etc/nginx/sites-available/your-domain.com

Додайте location для статистики:

location /nginx_status {
    stub_status;
    allow 127.0.0.1;
    deny all;
}

Перевірте статистику:

# curl - утиліта для HTTP запитів
# http://localhost/nginx_status - URL статистики Nginx
curl http://localhost/nginx_status

Очищення FastCGI кешу

Створіть скрипт для очищення кешу:

# sudo nano - створити новий файл скрипту з правами адміністратора
# /usr/local/bin/ - директорія для локальних скриптів
sudo nano /usr/local/bin/clear-nginx-cache.sh

#!/bin/bash
# #!/bin/bash - вказати інтерпретатор для виконання скрипту
sudo rm -rf /var/cache/nginx/*
sudo systemctl reload nginx
echo "Nginx FastCGI cache cleared"

Зробіть скрипт виконуваним:

# sudo chmod - змінити права доступу до файлу
# +x - додати право на виконання
# /usr/local/bin/clear-nginx-cache.sh - шлях до скрипту
sudo chmod +x /usr/local/bin/clear-nginx-cache.sh

Резервне копіювання та обслуговування

Стратегія резервного копіювання

Створіть скрипт для автоматичного резервного копіювання з урахуванням Nginx конфігурації:

# sudo nano - створити новий скрипт резервного копіювання
sudo nano /usr/local/bin/wp-backup.sh

#!/bin/bash
# Змінні
DB_NAME="wordpress_db"
DB_USER="wp_user"
DB_PASSWORD="secure_password"
WP_PATH="/var/www/html"
NGINX_PATH="/etc/nginx"
BACKUP_PATH="/backups/wordpress"
DATE=$(date +%Y%m%d_%H%M%S)

# Створення директорії для бекапів
mkdir -p $BACKUP_PATH

# Резервне копіювання бази даних
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_PATH/database_$DATE.sql

# Резервне копіювання файлів WordPress
tar -czf $BACKUP_PATH/wordpress_files_$DATE.tar.gz -C $WP_PATH .

# Резервне копіювання конфігурації Nginx
tar -czf $BACKUP_PATH/nginx_config_$DATE.tar.gz -C $NGINX_PATH .

# Видалення старих бекапів (старших за 30 днів)
find $BACKUP_PATH -type f -name "*.sql" -mtime +30 -delete
find $BACKUP_PATH -type f -name "*.tar.gz" -mtime +30 -delete

echo "Backup completed: $DATE"

Моніторинг логів Nginx

Налаштуйте ротацію логів для кращого управління:

# sudo nano - створити конфігурацію ротації логів
sudo nano /etc/logrotate.d/nginx-wordpress

/var/log/nginx/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 0644 www-data adm
    sharedscripts
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
            run-parts /etc/logrotate.d/httpd-prerotate; \
        fi
    endscript
    postrotate
        invoke-rc.d nginx rotate >/dev/null 2>&1
    endscript
}

Усунення поширених проблем

Помилка 502 Bad Gateway

Ця помилка часто виникає через проблеми з PHP-FPM. Перевірте:

Статус PHP-FPM:

sudo systemctl status php8.2-fpm

Правильність шляху до сокета в конфігурації Nginx.

Дозволи на сокет PHP-FPM:

# ls - показати список файлів з деталями
# -la - показати всі файли з детальною інформацією
# /run/php/ - директорія з PHP-FPM сокетами
ls -la /run/php/

Помилка 413 Request Entity Too Large

Збільште ліміти завантаження у Nginx:

server {
    client_max_body_size 64M;
}

Проблеми з постійними посиланнями

Nginx потребує ручного налаштування rewrite правил. Переконайтеся, що у вашій конфігурації є:

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

Помилки FastCGI кешу

Якщо виникають проблеми з кешуванням:

Перевірте дозволи директорії кешу:

# sudo chown - змінити власника рекурсивно для всіх файлів
# www-data:www-data - встановити власника та групу
sudo chown -R www-data:www-data /var/cache/nginx
# sudo chmod - змінити дозволи рекурсивно
# 755 - дозволи читання, запису, виконання для власника та читання, виконання для інших
sudo chmod -R 755 /var/cache/nginx

Очистіть кеш:

# sudo rm - видалити файли з правами адміністратора
# -rf - рекурсивно та принудово
# /var/cache/nginx/* - всі файли кешу
sudo rm -rf /var/cache/nginx/*
# sudo systemctl reload - перезавантажити конфігурацію без зупинки сервісу
sudo systemctl reload nginx

Проблеми з SSL

Перевірте конфігурацію SSL:

sudo nginx -t
sudo certbot certificates

Якщо сертифікат не оновлюється автоматично:

# sudo certbot renew - оновити сертифікати
# --dry-run - тестовий режим без реальних змін
# --nginx - використовувати плагін Nginx
sudo certbot renew --dry-run --nginx

Висновок

Розгортання WordPress на Debian з Nginx забезпечує високу продуктивність та надійність завдяки перевагам стеку LEMP. Nginx демонструє значно кращі показники продуктивності, особливо при високому навантаженні, завдяки ефективній архітектурі обробки подій.

Ключові переваги Nginx для WordPress:

  • Продуктивність: Nginx споживає менше пам'яті та процесорних ресурсів, обробляючи тисячі одночасних з'єднань з мінімальними витратами ресурсів.
  • FastCGI кешування забезпечує значне прискорення роботи сайту, зменшуючи навантаження на PHP та базу даних.
  • Масштабованість: Архітектура Nginx дозволяє легко масштабувати додаток для обслуговування мільйонів запитів на день без значної деградації продуктивності.
  • Безпека: Централізоване управління конфігурацією на рівні сервера підвищує безпеку, оскільки всі налаштування контролюються адміністратором.
  • Гнучкість: Server blocks Nginx надають більше можливостей для налаштування, дозволяючи створювати складні правила маршрутизації та обробки запитів.

Правильно налаштований WordPress з Nginx на Debian може забезпечувати час відповіді менше 100 мілісекунд навіть при високому навантаженні.

Регулярне обслуговування, моніторинг та оновлення гарантують, що ваш сайт залишатиметься швидким, безпечним та стабільним протягом тривалого часу.

Оцініть статтю за 5-бальною шкалою

Будь першим, хто оцінить цю новину!
Найшли помилку? Виділіть її та натисніть Ctrl + Enter, щоб повідомити нас.
×

Повідомити про помилку

Текст помилки

Ваш варіант