Это руководство покажет, как установить и настроить 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
- Название сайта: ваше название
- Имя пользователя: admin (или другое)
- Пароль: создайте сильный пароль
- Email: ваш email адрес
- Приватность: снимите галочку для продакшн сайта
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 сайт готов к работе!