Установка WordPress на AlmaLinux 8 с Apache и Let's Encrypt

О чём этот гид
Этот материал описывает полный процесс установки WordPress на AlmaLinux 8 с использованием Apache и автоматическим получением сертификата SSL от Let’s Encrypt (через Certbot). Подойдёт системным администраторам и разработчикам, которые настраивают сайты вручную на собственной инфраструктуре.
Важно — термины в одной строке:
- LAMP: стек Linux, Apache, MariaDB, PHP.
- Certbot: клиент для автоматической выдачи/обновления сертификатов Let’s Encrypt.
Требования перед началом
- Сервер с AlmaLinux 8 и доступом по root (или sudo).
- Доменное имя, указывающее на IP сервера (A-запись).
- Открытые порты 80 и 443 в провайдерском/виртуальном брандмауэре.
Шаг 1 — Установка LAMP
WordPress требует веб‑сервер, СУБД и PHP. Выполните на сервере:
dnf install httpd mariadb-server php php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-json php-mbstring php-posix php-sockets php-tokenizer unzip -yЗапустите и включите сервисы при старте системы:
systemctl start mariadb
systemctl start httpd
systemctl enable mariadb
systemctl enable httpdПримечание: если на сервере включён SELinux, убедитесь, что контекст web‑директорий и модулей PHP настроен корректно (раздел «Усиление безопасности» ниже).
Шаг 2 — Настройка MariaDB
Запустите встроенный скрипт безопасности MariaDB:
mysql_secure_installationОтветьте утилите, задав root‑пароль и отказавшись от анонимных и тестовых баз. Затем войдите в MariaDB:
mysql -u root -pСоздайте базу данных и пользователя для WordPress (замените пароль на длинную случайную строку):
MariaDB [(none)]> CREATE DATABASE wordpress;
MariaDB [(none)]> CREATE USER `wordpress`@`localhost` IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT ALL ON wordpress.* TO `wordpress`@`localhost`;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;Критерии приёмки: при подключении к базе под этим пользователем можно создавать и читать таблицы.
Шаг 3 — Загрузка WordPress
Перейдите в корень веб‑сервера и скачайте официальный архив:
cd /var/www/html
wget https://wordpress.org/latest.tar.gzРаспакуйте и подготовьте конфигурацию:
tar -xvzf latest.tar.gz
cd wordpress
mv wp-config-sample.php wp-config.php
nano wp-config.phpВ файле wp-config.php задайте параметры доступа к базе:
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'wordpress' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );Сохраните и назначьте правильного владельца каталогу:
chown -R apache:apache /var/www/html/wordpressСовет по безопасности: используйте уникальную случайную строку для DB_PASSWORD и обновите ключи безопасности в wp-config.php (сервис: https://api.wordpress.org/secret-key/1.1/salt/).
Шаг 4 — Настройка виртуального хоста Apache
Создайте файл конфигурации для сайта:
nano /etc/httpd/conf.d/wordpress.confВставьте (отредактируйте ServerName и адреса логов):
ServerAdmin [email protected]
DocumentRoot "/var/www/html/wordpress"
ServerName wordpress.example.com
ErrorLog "/var/log/httpd/example.com-error_log"
CustomLog "/var/log/httpd/example.com-access_log" combined
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
Перезапустите Apache и проверьте статус:
systemctl restart httpd
systemctl status httpdЕсли статус active (running), продолжайте.
Шаг 5 — Получение SSL от Let’s Encrypt
Установите Certbot и плагин для Apache:
dnf install epel-release -y
dnf install certbot python3-certbot-apache -yЗапросите и автоматически установите сертификат (замените домен):
certbot --apache -d wordpress.example.comСледуйте интерактивным подсказкам: укажите email, согласитесь с условиями. Certbot обновит виртуальный хост и предложит редирект 80→443.
Важная заметка: certbot создает файлы в /etc/letsencrypt/live/DOMAIN/. Для автоматического обновления добавьте в crontab или systemd‑таймер: certbot renew.
Шаг 6 — Настройка брандмауэра
Разрешите HTTP и HTTPS через firewalld:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reloadПроверьте, что порты открыты: ss -tnlp | grep httpd.
Шаг 7 — Доступ к панели администратора
Откройте браузер https://wordpress.example.com и пройдите визуальную установку.

Выберите язык и нажмите Продолжить. Введите данные сайта:

После успешной установки увидите подтверждение:

Войдите в админку:

Панель администратора должна открыться по адресу /wp-admin:

Усиление безопасности (основные шаги)
- Используйте сильные пароли и двухфакторную аутентификацию для админов.
- Ограничьте доступ по IP к /wp-admin, если это возможно.
- Регулярно обновляйте ядро, темы и плагины.
- Резервное копирование: файлы + дамп базы не реже, чем раз в сутки для активных сайтов.
- Настройте SELinux: если включён, установите контекст:
restorecon -Rv /var/www/html/wordpressи при необходимостиsetsebool -P httpd_can_network_connect on.
Экспертная мысль: «Правильная комбинация обновлений, ограничений доступа и регулярных бэкапов минимизирует большинство эксплуатационных рисков.»
Алгоритм отката (короткий план)
- Отключить сайт в Apache: переименовать конфиг или удалить symlink.
- Восстановить файлы из последней резервной копии.
- Восстановить дамп БД:
mysql -u root -p wordpress < backup.sql. - Проверить логи /var/log/httpd/* и /var/log/messages.
- При проблемах со SSL — временно снять редирект в конфигурации и перезапустить httpd.
Когда этот способ не подходит
- У вас плановый хостинг с собственной панелью (используйте её инструменты).
- Нужна горизонтальная масштабируемость и автоматическая конфигурация — рассмотрите Docker/Kubernetes и разделение файлов/БД.
- Если вы используете Nginx, инструкции для Apache не применимы напрямую.
Альтернативные подходы
- Nginx + PHP‑FPM: более экономно расходует память при большом количестве соединений.
- Docker: контейнеризация упрощает миграцию и масштабирование (официальный образ WordPress + отдельный контейнер для MariaDB).
- Управляемый WordPress‑хостинг: для автообновлений и резервного копирования без ручной настройки сервера.
Чек‑лист ролей
- Системный администратор:
- Установил пакеты, настроил Apache и MariaDB, настроил брандмауэр и SELinux.
- Настроил автоматическое обновление сертификатов.
- Разработчик/DevOps:
- Настроил wp-config.php, проверил права доступа и интеграцию с CI/CD.
- Контент‑редактор:
- Проверил доступ к /wp-admin, загрузил тестовую запись и изображение.
Тесты и критерии приёмки
- Сайт отвечает по HTTPS без предупреждений браузера.
- Веб‑страница главной открывается и отображает вкладку администратора.
- Подключение к базе работает под учётной записью wordpress и можно создать таблицу.
- Certbot имеет запись о сертификате в /etc/letsencrypt/live/DOMAIN/.
Краткие определения (глоссарий)
- LAMP: базовый стек для PHP‑приложений — Linux, Apache, MariaDB, PHP.
- Certbot: клиент для работы с ACME‑сервером Let’s Encrypt.
- SELinux: механизм мандатного контроля доступа в ядре Linux.
Частые ошибки и их устранение
- 403 Forbidden: проверьте права/владельца файлов и директиву AllowOverride All, а также SELinux‑контекст.
- 500 Internal Server Error: посмотрите логи Apache и PHP, временно включите WP_DEBUG в wp-config.php.
- Проблемы с renew: настройте cron/systemd‑таймер и проверяйте логи /var/log/letsencrypt/letsencrypt.log.
Локальные советы для России и СНГ
- Проверьте, что ваш регистратор/провайдер DNS не кэширует старые записи; при смене A‑записи учитывайте TTL.
- Если провайдер блокирует исходящие порты, Certbot может не пройти валидацию — используйте DNS‑challenge как вариант.
Итог
Вы установили WordPress на AlmaLinux 8 с Apache и настроили бесплатный SSL от Let’s Encrypt. Дальше: настройте резервное копирование, автоматические обновления и мониторинг.
Важно: используйте уникальные пароли и регулярно обновляйте компоненты.
Краткое резюме в конце:
- Установили LAMP, создали базу, загрузили WordPress.
- Настроили Apache и Certbot для HTTPS.
- Добавлены рекомендации по безопасности, откату и альтернативы.
Если нужны команды для автоматизации, примеры systemd‑таймера для certbot или Docker‑compose‑шаблон — могу подготовить отдельно.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента