Обзор развертывания Drupal на сервере¶
Предварительные требования и основные условия¶
Для успешного развертывания приложения Drupal необходимо выполнить следующие системные требования:
-
Операционная система: Дистрибутив Ubuntu Linux.
-
Привилегии: Требуется доступ с правами
rootили правамиsudoдля управления Docker и конфигурации системы. -
Docker Engine: На хосте должна быть установлена и работоспособна среда выполнения Docker.
-
Сетевая конфигурация: Сервер должен разрешать трафик на определенных внешних и внутренних портах.
-
Конфигурация домена: Сервер работает в зоне
hostkey.in.
Точка доступа к приложению¶
Конечная панель управления и приложение доступны по следующему формату Полного Квалифицированного Имени Домена (FQDN) в домене hostkey.in:
-
Шаблон FQDN:
drupal<Server ID>.hostkey.in -
Порт:
443(HTTPS)
Замените <Server ID> на конкретный идентификатор, назначенный вашему экземпляру.
Процесс установки приложения¶
Приложение развертывается с использованием контейнеров Docker. Установка включает инициализацию сети Docker и запуск двух основных сервисов: контейнера базы данных и веб-приложения Drupal.
Шаги развертывания¶
-
Установка Docker: Убедитесь, что Docker установлен на хосте Ubuntu.
-
Создание сети: Создается выделенная мостовая сеть Docker с именем
drupal-netдля обеспечения взаимодействия между контейнерами. -
Инициализация базы данных: Запускается контейнер MariaDB со следующими параметрами:
-
Имя контейнера:
drupal_db -
Образ:
mariadb:latest -
Политика перезапуска:
always
-
-
Инициализация Drupal: Запускается контейнер Drupal со следующими параметрами:
-
Имя контейнера:
drupal -
Образ:
drupal:latest -
Политика перезапуска:
always -
Маппинг портов: Порт хоста
8080сопоставляется с портом контейнера80.
-
Базы данных¶
Приложение использует базу данных MariaDB для хранения данных, работающую внутри изолированного контейнера Docker.
-
Тип базы данных: MariaDB
-
Метод подключения: Внутреннее сетевое взаимодействие Docker.
-
Имя контейнера:
drupal_db -
Имя базы данных:
drupal -
Пользователь:
root -
Порт:
3306(внутренний) -
Место хранения данных: Данные хранятся во внутреннем томе контейнера, управляемом движком Docker.
Контейнер Drupal подключается к базе данных, используя имя хоста drupal_db внутри сети drupal-net.
Контейнеры Docker и их развертывание¶
Развертывание использует два различных контейнера, оркестрируемых с помощью команд Docker.
Спецификации контейнеров¶
| Параметр | Контейнер Drupal | Контейнер MariaDB |
|---|---|---|
| Имя | drupal | drupal_db |
| Образ | drupal:latest | mariadb:latest |
| Сеть | drupal-net | drupal-net |
| Политика перезапуска | always | always |
| Порт хоста | 8080 | Не экспонируется напрямую |
Переменные окружения¶
Контейнер Drupal настроен со следующими переменными окружения для установления подключения к базе данных:
-
DRUPAL_DB_HOST:drupal_db -
DRUPAL_DB_NAME:drupal -
DRUPAL_DB_USER:root -
DRUPAL_DB_PASSWORD: Настроено через интеграцию паролей системы. -
DRUPAL_DB_PORT:3306
Прокси-серверы¶
Трафик управляется прокси-сервером, отвечающим за завершение соединений SSL и маршрутизацию. Это реализовано с использованием стека Docker Compose, расположенного в /root/nginx.
Конфигурация прокси¶
-
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Режим сети:
host -
Электронная почта для Certbot:
hkadm@hostkey.com -
Том конфигурации: Пользовательские конфигурации монтируются в
/data/nginx/user_conf.dвнутри контейнера (/etc/nginx/user_conf.d). -
Том секретов SSL: Внешний том
nginx_secretsмонтируется в/etc/letsencryptдля хранения сертификатов Let's Encrypt. -
Файл переменных окружения: Конфигурация загружается из
/data/nginx/nginx-certbot.env.
Прокси обрабатывает внешний порт 443 (HTTPS) и пересылает трафик на внутренний сервис Drupal.
Структура файлов и директорий¶
Развертывание создает специфические директории в файловой системе хоста для управления конфигурациями и данными:
-
Корневая директория Nginx:
/root/nginx-
Назначение: Хранит определение Docker Compose для сервиса прокси.
-
Права доступа: Владелец
root, группаroot, режим0755.
-
-
Файл Compose:
/root/nginx/compose.yml-
Назначение: Определяет сервис Nginx-Certbot и тома.
-
Права доступа: Владелец
root, группаroot, режим0644.
-
-
Директория пользовательской конфигурации:
/data/nginx/user_conf.d- Назначение: Хранит пользовательские файлы конфигурации Nginx для домена приложения.
Доступные порты для подключения¶
В архитектуре развертывания используются следующие порты:
-
Внешний порт:
443(HTTPS) — Используется для безопасного доступа через FQDN. -
Внутренний порт:
8080(HTTP) — Открыт контейнером Drupal на хосте для внутреннего взаимодействия прокси. -
Порт базы данных:
3306(MySQL/MariaDB) — Используется внутренне в сети Docker для взаимодействия между контейнерами Drupal и Базы данных.
Запуск, остановка и обновление¶
Управление сервисами осуществляется с помощью команд Docker.
-
Запуск сервиса прокси: Выполните следующую команду из директории
/root/nginx: -
Управление контейнерами: Отдельными контейнерами (
drupalиdrupal_db) можно управлять с помощью стандартных команд CLI Docker:-
Для остановки контейнера:
docker stop <container_name> -
Для запуска контейнера:
docker start <container_name> -
Для перезапуска контейнера:
docker restart <container_name> -
Для обновления образа: Загрузите новый образ и воссоздайте контейнер.
-
Все контейнеры настроены с параметром restart_policy: always (или unless-stopped для прокси), что гарантирует их автоматический перезапуск после перезагрузки системы или сбоя сервиса.