Обзор развертывания WordPress на сервере¶
Предварительные требования и базовые условия¶
Для успешного развертывания и управления приложением WordPress должны быть выполнены следующие системные требования:
-
Операционная система: Дистрибутив Linux, совместимый с Docker Engine.
-
Привилегии: Для управления службами Docker и правами доступа к файлам требуются права суперпользователя (root или sudo).
-
Домен: Для домена
wp<Server ID>.hostkey.inтребуется действительная запись DNS, указывающая на IP-адрес сервера. -
Порты: Сервер должен разрешать входящий трафик на порт 443 для HTTPS и порт 80 для HTTP (требуется для выпуска SSL-сертификатов).
FQDN итоговой панели управления¶
Приложение доступно по следующему полному доменному имени (FQDN):
wp<Server ID>.hostkey.in
Замените <Server ID> на конкретный идентификатор, назначенный для развертывания. Служба обрабатывает безопасные соединения на порту 443 и начальный обмен ключами SSL на порту 80.
Структура файлов и каталогов¶
Для хранения конфигураций, данных и сертификатов развертывание использует следующую структуру каталогов на хост-системе:
-
/root/wordpress/: Содержит файлcompose.yml, используемый для оркестрации контейнеров Docker. -
/data/: Корневой каталог для постоянного хранения данных. -
/data/nginx/: Хранит переменные окружения Nginx и файлы конфигурации. -
/data/nginx/user_conf.d/: Содержит пользовательские файлы конфигурации блоков сервера Nginx. -
/data/wordpress/: Точка монтирования корневых файлов веб-сайта WordPress.
Процесс установки приложения¶
Приложение развертывается с использованием Docker Compose. Процесс развертывания включает следующие шаги:
-
Убедитесь, что файл
compose.ymlнаходится в каталоге/root/wordpress/. -
Выполните команду Docker Compose для запуска служб в отсоединенном режиме (деташированном):
-
Система загрузит необходимые образы контейнеров:
-
bitnami/mariadb:latestдля базы данных. -
wordpress:php8.2-fpmдля среды выполнения приложения. -
jonasal/nginx-certbot:latestдля веб-сервера и управления SSL.
-
Контейнеры Docker и их развертывание¶
Развертывание состоит из трех основных контейнеров, определенных в файле compose.yml:
-
mariadb:
-
Образ:
docker.io/bitnami/mariadb:latest -
Назначение: Предоставляет базу данных, совместимую с MySQL, для WordPress.
-
Постоянное хранение: Использует именованный том
mariadb_dataдля хранения файлов базы данных в пути/bitnami/mariadbвнутри контейнера.
-
-
wordpress:
-
Образ:
docker.io/wordpress:php8.2-fpm -
Назначение: Запускает приложение PHP-FPM.
-
Сетевое взаимодействие: Привязывает внутренний порт
9000к127.0.0.1:9000на хосте. -
Постоянное хранение: Монтирует каталог хоста
/data/wordpressв/var/www/htmlвнутри контейнера.
-
-
nginx:
-
Образ:
jonasal/nginx-certbot:latest -
Назначение: Выступает в роли обратного прокси-сервера, обрабатывает завершение SSL-сессий и управляет сертификатами Let's Encrypt.
-
Сетевое взаимодействие: Работает в режиме сети
host. -
Постоянное хранение:
-
Монтирует том
nginx_secretsдля сертификатов Let's Encrypt. -
Монтирует
/data/nginx/user_conf.dв/etc/nginx/user_conf.dдля пользовательских конфигураций. -
Монтирует
/data/wordpressв/var/www/htmlдля предоставления веб-контента.
-
-
Базы данных¶
Конфигурация базы данных управляется внутри контейнера mariadb. Следующие параметры определяют настройки подключения:
| Параметр | Значение / Описание |
|---|---|
| Движок базы данных | MariaDB |
| Имя базы данных | wordpress |
| Пользователь базы данных | wordpress |
| Корневой пользователь | root |
| Имя хоста | mariadb (внутренняя сеть контейнеров) |
| Порт | Внутренняя коммуникация между контейнерами |
Учетные данные базы данных передаются через переменные окружения. Параметры MYSQL_ROOT_PASSWORD и MARIADB_PASSWORD настраиваются для совпадения с конфигурацией пароля SSH системы (ansible_ssh_pass) в ходе начальной настройки.
Прокси-серверы¶
Контейнер jonasal/nginx-certbot функционирует как обратный прокси-сервер и менеджер SSL. Он обрабатывает весь входящий веб-трафик для домена.
-
Конфигурация: Пользовательский блок сервера Nginx хранится по адресу
/data/nginx/user_conf.d/wp<Server ID>.hostkey.in.conf. -
SSL/TLS: Контейнер автоматически управляет SSL-сертификатами, используя Let's Encrypt (Certbot).
-
Путь к сертификату:
/etc/letsencrypt/live/wp<Server ID>.hostkey.in/ -
Email для сертификата:
hkadm@hostkey.com
-
-
Маршрутизация:
-
Порт 80 используется для HTTP-запросов и валидации ACME-вызовов (
/.well-known/acme-challenge/). -
Порт 443 обрабатывает HTTPS-трафик с поддержкой HTTP/2.
-
PHP-запросы пересылаются (проксируются) во внутренний контейнер WordPress по адресу
127.0.0.1:9000.
-
Настройки разрешений¶
Хост-каталоги инициализируются с определенным владельцем и правами доступа для обеспечения безопасной работы:
-
/data,/data/nginx,/data/nginx/user_conf.dи/root/wordpress:-
Владелец:
root -
Группа:
root -
Режим:
0755(для каталогов) или0640(для файлов конфигурации)
-
Контейнеры Docker запускаются с правами по умолчанию, определенными в их соответствующих образах. Контейнер nginx монтирует каталоги хоста, что позволяет ему читать и писать файлы конфигурации и веб-страницы, как это требуется службой.
Расположение файлов конфигурации и данных¶
Следующие пути содержат критически важные файлы конфигурации и данные для развертывания:
-
Файл Docker Compose:
/root/wordpress/compose.yml -
Файл окружения Nginx:
/data/nginx/nginx-certbot.env -
Блок сервера Nginx:
/data/nginx/user_conf.d/wp<Server ID>.hostkey.in.conf -
Корневой веб-каталог:
/data/wordpress(служит в качестве/var/www/htmlвнутри контейнеров) -
SSL-сертификаты: Управляются внутренне внутри тома
nginx_secrets, смонтированного по адресу/etc/letsencrypt.
Доступные порты для подключения¶
Следующие порты открыты и используются развертыванием:
-
443 (TCP): HTTPS-трафик для домена
wp<Server ID>.hostkey.in. -
80 (TCP): HTTP-трафик для обновления SSL-сертификатов и перенаправления.
-
9000 (TCP): Внутренняя коммуникация PHP-FPM, привязана только к
127.0.0.1(не доступна извне).
Запуск, остановка и обновление¶
Управление службами выполняется с использованием команд Docker Compose, запускаемых из каталога /root/wordpress.
-
Запуск служб:
-
Остановка служб:
-
Перезапуск служб:
-
Обновление образов: Чтобы обновить образы контейнеров до последних версий и перезапустить службы:
Логи можно просмотреть, используя команду: