Перейти к содержанию

Обзор развертывания 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. Процесс развертывания включает следующие шаги:

  1. Убедитесь, что файл compose.yml находится в каталоге /root/wordpress/.

  2. Выполните команду Docker Compose для запуска служб в отсоединенном режиме (деташированном):

    cd /root/wordpress
    docker compose up -d
    

  3. Система загрузит необходимые образы контейнеров:

    • 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.

  • Запуск служб:

    cd /root/wordpress
    docker compose up -d
    

  • Остановка служб:

    cd /root/wordpress
    docker compose down
    

  • Перезапуск служб:

    cd /root/wordpress
    docker compose restart
    

  • Обновление образов: Чтобы обновить образы контейнеров до последних версий и перезапустить службы:

    cd /root/wordpress
    docker compose pull
    docker compose up -d
    

Логи можно просмотреть, используя команду:

docker compose logs -f

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×