Обзор развертывания Drupal на сервере¶
Предварительные требования¶
Для корректной работы приложения необходимы следующие параметры системы и сетевые настройки:
-
Операционная система: Ubuntu.
-
Права доступа: Права суперпользователя (root) для установки системных пакетов и управления Docker.
-
Доменное имя: Настройка DNS должна указывать на IP сервера.
-
Порты:
-
80(HTTP) — для получения SSL-сертификатов. -
443(HTTPS) — для доступа к приложению через защищенное соединение. -
8080(внутренний) — для взаимодействия контейнера приложения с прокси-сервером.
FDQN итоговой панели на домене hostkey.in¶
Для работы веб-интерфейса используется следующий шаблон доменного имени:
| Параметр | Значение |
|---|---|
| Префикс | drupal |
| Домен | hostkey.in |
| Полный шаблон | drupal{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
В процессе развертывания создаются следующие директории для управления конфигурациями и сертификатами:
-
/root/nginx— рабочая директория для прокси-сервера и Docker Compose. -
/data/nginx/user_conf.d— директория с конфигурационными файлами Nginx. -
/data/nginx/nginx-certbot.env— файл переменных окружения для Certbot.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: Установка Docker и создание изолированной сети
drupal-net. -
Запуск базы данных: Развертывание контейнера MariaDB с настройкой пользователя
rootи базы данныхdrupal. -
Развертывание приложения: Запуск основного контейнера Drupal, который подключается к базе данных через внутреннюю сеть Docker.
-
Настройка проксирования и SSL:
-
Создание конфигурационного файла
compose.ymlв директории/root/nginx. -
Запуск контейнера Nginx с использованием Certbot для автоматического получения и обновления SSL-сертификатов через механизм
network_mode: host.
Контейнеры Docker и их запуск¶
Приложение работает в составе нескольких контейнеров, объединенных в сеть drupal-net (для базы данных и приложения) или использующих хостовую сеть (для прокси).
MariaDB¶
-
Имя образа:
mariadb:latest -
Имя контейнера:
drupal_db -
Переменные окружения:
-
MYSQL_ROOT_PASSWORD— пароль администратора БД. -
MYSQL_DATABASE— имя базы данных (drupal). -
MYSQL_USER— пользователь (root). -
MYSQL_PASSWORD— пароль пользователя. -
Политика перезапуска:
always.
Drupal¶
-
Имя образа:
drupal:latest -
Имя контейнера:
drupal -
Порты:
8080:80(проброс порта 8080 хоста на 80 порт контейнера). -
Переменные окружения:
-
DRUPAL_DB_HOST:drupal_db -
DRUPAL_DB_NAME:drupal -
DRUPAL_DB_USER:root -
DRUPAL_DB_PASSWORD: пароль БД. -
DRUPAL_DB_PORT:3306. -
Политика перезапуска:
always.
Nginx (Certbot Proxy)¶
-
Имя образа:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt— хранение SSL-сертификатов. -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d— пользовательские конфигурации Nginx. -
Политика перезапуска:
unless-stopped.
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
-
Перейти в директорию с конфигурацией прокси:
-
Обновить образы и перезапустить контейнеры: