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

Обзор развертывания 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.

Шаги развертывания

  1. Установка Docker: Убедитесь, что Docker установлен на хосте Ubuntu.

  2. Создание сети: Создается выделенная мостовая сеть Docker с именем drupal-net для обеспечения взаимодействия между контейнерами.

  3. Инициализация базы данных: Запускается контейнер MariaDB со следующими параметрами:

    • Имя контейнера: drupal_db

    • Образ: mariadb:latest

    • Политика перезапуска: always

  4. Инициализация 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:

    docker compose up -d
    

  • Управление контейнерами: Отдельными контейнерами (drupal и drupal_db) можно управлять с помощью стандартных команд CLI Docker:

    • Для остановки контейнера: docker stop <container_name>

    • Для запуска контейнера: docker start <container_name>

    • Для перезапуска контейнера: docker restart <container_name>

    • Для обновления образа: Загрузите новый образ и воссоздайте контейнер.

Все контейнеры настроены с параметром restart_policy: always (или unless-stopped для прокси), что гарантирует их автоматический перезапуск после перезагрузки системы или сбоя сервиса.

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