Как установить WordPress с Nginx и PHP 8.4 на Debian 12: пошаговое руководство

,

Это руководство покажет, как установить и настроить WordPress с веб-сервером Nginx и PHP 8.4 на Debian 12. Мы пройдем через полную настройку сервера, включая безопасность, SSL-сертификаты и оптимизацию производительности.

Что вы получите:

  • Безопасная настройка сервера Debian 12
  • Nginx с оптимизированной конфигурацией для WordPress
  • PHP 8.4 с необходимыми модулями
  • MariaDB для базы данных
  • SSL-сертификат Let’s Encrypt
  • Firewall и базовая защита

1. Начальная настройка сервера Debian 12

Подключение к серверу

ssh root@your_server_ip

Обновление системы

apt update -y && apt upgrade -y

Создание пользователя с sudo привилегиями

# Создаем нового пользователя
adduser debian

# Добавляем в группу sudo
usermod -a -G sudo debian

Настройка SSH безопасности

nano /etc/ssh/sshd_config

Измените следующие параметры:

Port 22500
Protocol 2
PermitRootLogin no
UseDNS no
AllowUsers debian

Обратите внимание, что мы изменили стандартный порт 22.

Перезапустите SSH:

systemctl restart ssh.service

Выйдите и подключитесь под новым пользователем:

# Выход
exit

# Подключение под новым пользователем
ssh -p 22500 debian@your_server_ip

2. Установка Nginx, PHP 8.4 и MariaDB

Установка базовых пакетов

sudo apt install nginx mariadb-server mariadb-client unzip wget git curl gnupg2 software-properties-common -y

Установка PHP 8.4 из репозитория Sury

# Добавляем GPG ключ
curl -sSL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /usr/share/keyrings/sury-php.gpg

# Добавляем репозиторий
echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list

# Обновляем список пакетов
sudo apt update

# Устанавливаем PHP 8.4 и необходимые модули
sudo apt install php8.4-fpm php8.4-common php8.4-mysql php8.4-gd php8.4-bcmath php8.4-curl php8.4-mbstring php8.4-xml php8.4-zip php8.4-intl php8.4-soap php8.4-readline php8.4-opcache -y

Скрупулезным людям можно воспользоваться этой ссылкой и посмотреть точные зависимости расширений PHP для работы CMS WordPress.

Настройка PHP 8.4

sudo nano /etc/php/8.4/fpm/php.ini

Измените следующие параметры:

post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 32M
date.timezone = Europe/Moscow
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000

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

sudo systemctl restart php8.4-fpm.service
sudo systemctl enable php8.4-fpm.service

3. Настройка Nginx для WordPress

Создание директории сайта

sudo mkdir -p /var/www/yourdomain.com

Создание конфигурации Nginx

sudo nano /etc/nginx/sites-available/yourdomain.com.conf

Добавьте конфигурацию:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/yourdomain.com;
    index index.php index.html;

    # Логи
    access_log /var/log/nginx/yourdomain.com_access.log;
    error_log /var/log/nginx/yourdomain.com_error.log;

    # Максимальный размер загружаемых файлов
    client_max_body_size 64M;

    # Favicon и robots.txt
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

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

    # Основная локация
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP обработка
    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_read_timeout 3600s;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 128k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
        fastcgi_index index.php;
    }

    # Кеширование статических файлов
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        log_not_found off;
    }

    # Защита от доступа к системным файлам
    location ~ /\. {
        deny all;
    }

    location ~ ^/(wp-config\.php|readme\.html|license\.txt)$ {
        deny all;
    }
}

Активация конфигурации

# Проверка синтаксиса
sudo nginx -t

# Создание символической ссылки
sudo ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/

# Удаление дефолтной конфигурации
sudo rm /etc/nginx/sites-enabled/default

# Перезапуск Nginx
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service

4. Настройка базы данных MariaDB

Безопасная установка MariaDB

sudo mysql_secure_installation

Ответьте на вопросы:

  • Set root password: Y (задайте сильный пароль)
  • Remove anonymous users: Y
  • Disallow root login remotely: Y
  • Remove test database: Y
  • Reload privilege tables: Y

Создание базы данных для WordPress

mysql -u root -p

Выполните SQL команды:

CREATE DATABASE wp_yourdomain DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

GRANT ALL ON wp_yourdomain.* TO 'wpuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';

FLUSH PRIVILEGES;

EXIT;

5. Установка WordPress

Загрузка и распаковка WordPress

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz

Настройка конфигурации WordPress

# Копирование конфигурационного файла
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

# Редактирование конфигурации
nano /tmp/wordpress/wp-config.php

Генерация ключей безопасности

curl -s https://api.wordpress.org/secret-key/1.1/salt/

Скопируйте полученные ключи и вставьте в wp-config.php

Настройка подключения к базе данных

В файле wp-config.php замените:

// ** Database settings ** //
define( 'DB_NAME', 'wp_yourdomain' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'StrongPassword123!' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

Копирование файлов WordPress

# Копирование файлов
sudo cp -av /tmp/wordpress/* /var/www/yourdomain.com/

# Установка правильных прав доступа
sudo chown -R www-data:www-data /var/www/yourdomain.com/
sudo chmod -R 755 /var/www/yourdomain.com/

# Удаление временных файлов
rm -rf /tmp/wordpress*

6. Установка SSL-сертификата Let’s Encrypt

Установка Certbot

sudo apt install python3-acme python3-certbot python3-certbot-nginx -y

Получение SSL-сертификата

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Certbot автоматически:

  • Получит сертификат
  • Обновит конфигурацию Nginx
  • Настроит автоматическое перенаправление с HTTP на HTTPS

Настройка автоматического обновления

# Тест обновления
sudo certbot renew --dry-run

# Создание cron задачи
echo "0 12 * * * /usr/bin/certbot renew --quiet" | sudo crontab -

7. Настройка Firewall (UFW)

Установка и настройка UFW

# Установка UFW
sudo apt install ufw -y

# Настройка правил
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Открытие необходимых портов
sudo ufw allow 22500/tcp comment 'SSH port 22500'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# Активация firewall
sudo ufw enable

# Проверка статуса
sudo ufw status verbose

8. Завершение установки WordPress

Доступ к веб-интерфейсу

Откройте браузер и перейдите по адресу: https://yourdomain.com

Заполнение формы установки WordPress

  1. Название сайта: ваше название
  2. Имя пользователя: admin (или другое)
  3. Пароль: создайте сильный пароль
  4. Email: ваш email адрес
  5. Приватность: снимите галочку для продакшн сайта

9. Оптимизация и безопасность

Настройка PHP OpCache

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.save_comments=1

Настройка логов Nginx

# Создание директории для логов
sudo mkdir -p /var/log/nginx/

# Ротация логов
sudo nano /etc/logrotate.d/nginx

Дополнительная безопасность в wp-config.php

// Отключение редактирования файлов из админки
define('DISALLOW_FILE_EDIT', true);

// Ограничение ревизий постов
define('WP_POST_REVISIONS', 3);

// Автоматическое удаление корзины
define('EMPTY_TRASH_DAYS', 30);

// Отключение отладки в продакшене
define('WP_DEBUG', false);

10. Проверка работоспособности

Команды для диагностики

# Проверка статуса сервисов
sudo systemctl status nginx
sudo systemctl status php8.4-fpm
sudo systemctl status mariadb

# Проверка PHP версии
php -v

# Проверка конфигурации Nginx
sudo nginx -t

# Проверка портов
sudo netstat -tlnp | grep -E "(80|443|3306)"

# Проверка SSL сертификата
sudo certbot certificates

Тест производительности

# Установка утилит для тестирования
sudo apt install apache2-utils -y

# Простой тест нагрузки
ab -n 100 -c 10 https://yourdomain.com/

Заключение

Вы успешно установили WordPress с Nginx и PHP 8.4 на Debian 12. Ваш сайт теперь работает с современными технологиями, имеет SSL-сертификат и базовую защиту.

Что дальше:

  • Установите необходимые плагины WordPress
  • Настройте резервное копирование
  • Рассмотрите установку CDN
  • Настройте мониторинг сервера

Полезные команды для обслуживания:

# Обновление системы
sudo apt update && sudo apt upgrade

# Перезапуск сервисов
sudo systemctl restart nginx php8.4-fpm mariadb

# Проверка логов
sudo tail -f /var/log/nginx/yourdomain.com_error.log

Ваш WordPress сайт готов к работе!

© «Code==Poetry», 2025