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

Обзор развертывания WordPress на сервере

Предпосылки и предварительные требования

Для корректной работы приложения на сервере должны быть выполнены следующие условия:

  • Операционная система с поддержкой Docker и Docker Compose.
  • Наличие прав суперпользователя (root) для создания директорий и запуска контейнеров.
  • Доступ к домену в зоне hostkey.in для настройки виртуального хостинга.
  • Открытые порты 80 и 443 для работы веб-сервера и получения SSL-сертификатов.
  • Сетевая доступность для получения образов контейнеров из реестра docker.io.

Структура файлов и каталогов

Все файлы конфигурации, данные и сертификаты размещаются в следующих директориях:

  • /data — корневая директория для хранения данных приложения.
  • /data/nginx — директория для конфигураций Nginx и переменных окружения.
  • /data/nginx/user_conf.d — каталог с конфигурационными файлами виртуальных хостов Nginx.
  • /data/wordpress — точка монтирования для файлов самого приложения WordPress.
  • /root/wordpress — рабочая директория, где хранится файл compose.yml для управления контейнерами.

Контейнеры Docker и их запуск

Приложение развертывается с использованием Docker Compose. Конфигурация описана в файле /root/wordpress/compose.yml. Система состоит из трех сервисов:

  1. mariadb
  2. Образ: docker.io/bitnami/mariadb:latest.
  3. Хранение данных: именованный том mariadb_data, монтируемый в /bitnami/mariadb.
  4. Переменные окружения:
    • MARIADB_USER=wordpress
    • MARIADB_DATABASE=wordpress
    • MARIADB_PASSWORD и MARIADB_ROOT_PASSWORD задаются динамически.
  5. Политика перезапуска: unless-stopped.

  6. wordpress

  7. Образ: docker.io/wordpress:php8.2-fpm.
  8. Порт: 127.0.0.1:9000 (локальный интерфейс, используется для связи с Nginx).
  9. Точки монтирования:
    • /data/wordpress монтируется в /var/www/html внутри контейнера.
  10. Зависимости: запускается после сервиса mariadb.
  11. Переменные окружения:
    • MYSQL_ROOT_PASSWORD
    • WORDPRESS_DB_PASSWORD
    • WORDPRESS_DB_HOST=mariadb
    • WORDPRESS_DB_USER=wordpress
    • WORDPRESS_DB_NAME=wordpress
  12. Политика перезапуска: unless-stopped.

  13. nginx

  14. Образ: jonasal/nginx-certbot:latest.
  15. Режим сети: host (использует сетевой стек хоста).
  16. Зависимости: запускается после сервиса wordpress.
  17. Переменные окружения:
    • CERTBOT_EMAIL=hkadm@hostkey.com.
  18. Файл переменных окружения: /data/nginx/nginx-certbot.env.
  19. Точки монтирования:
    • Именованный том nginx_secrets в /etc/letsencrypt для хранения сертификатов.
    • /data/nginx/user_conf.d в /etc/nginx/user_conf.d для конфигураций.
    • /data/wordpress в /var/www/html для доступа к файлам сайта.
  20. Политика перезапуска: unless-stopped.

Базы данных

База данных MariaDB работает внутри контейнера. Данные сохраняются в именованном томе Docker mariadb_data. Подключение к базе данных осуществляется через внутреннюю сеть Docker. Сервис WordPress обращается к базе данных по имени хоста mariadb. Имя пользователя базы данных — wordpress, имя базы данных — wordpress. Пароли для доступа задаются через переменные окружения в файле compose.yml.

Прокси серверы

В качестве веб-сервера и прокси используется контейнер Nginx с поддержкой Certbot.

  • Доменное имя: Конфигурация настроена для домена вида wp<server_id>.hostkey.in, где <server_id> — идентификатор сервера.
  • Порты:
  • Порт 80 используется для обработки HTTP-запросов и автоматического получения SSL-сертификатов через ACME challenge.
  • Порт 443 используется для HTTPS-соединений с поддержкой HTTP/2.
  • SSL-сертификаты:
  • Путь к сертификату: /etc/letsencrypt/live/wp<server_id>.hostkey.in/fullchain.pem.
  • Путь к ключу: /etc/letsencrypt/live/wp<server_id>.hostkey.in/privkey.pem.
  • Конфигурация:
  • Файл конфигурации размещается в /data/nginx/user_conf.d/wp<server_id>.hostkey.in.conf.
  • Корневая директория для веб-контента: /var/www/html.
  • Обработчик PHP: запросы с расширением .php передаются на 127.0.0.1:9000 через FastCGI.
  • Специальная директива location для /.well-known/acme-challenge/ указывает на /var/www/certbot для валидации сертификатов.

Права доступа и безопасность

  • Директории /data, /data/nginx, /data/nginx/user_conf.d и /root/wordpress создаются с владельцем root и группой root.
  • Права доступа на директории установлены как 0755 (чтение и выполнение для всех, запись для владельца).
  • Файлы конфигурации Nginx и переменных окружения имеют права 0644.
  • Файл compose.yml имеет права 0644.
  • Порт 9000, используемый для связи Nginx и PHP-FPM, привязан только к локальному интерфейсу 127.0.0.1, что ограничивает внешний доступ к нему.

Запуск, остановка и обновление

Управление контейнерами осуществляется через утилиту docker compose в директории /root/wordpress.

  • Запуск: Для запуска всех сервисов в фоновом режиме используется команда:

    docker compose up -d
    
    Команда выполняется из директории /root/wordpress.

  • Остановка: Для остановки всех сервисов используется команда:

    docker compose down
    

  • Обновление: Для применения изменений конфигурации или обновления образов контейнеров используется последовательность команд:

    docker compose pull
    docker compose up -d
    

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