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

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

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

  • Операционная система: Ubuntu (следует из задач установки)

  • Права доступа: Для управления Docker и системными службами требуются права root или sudo.

  • Конфигурация домена: Приложение настроено на использование зоны hostkey.in с определенным префиксом.

  • Сетевые настройки: Движок Docker (Docker Engine) должен быть установлен и запущен.

  • Порты:

    • Порт 8080: Внутренний порт службы Joomla.

    • Порт 443: Внешний доступ через HTTPS.

    • Порт 3306: Внутренний порт службы MySQL (привязан к хосту).

FQDN финальной панели

Приложение доступно по следующему полному доменному имени (Fully Qualified Domain Name, FQDN), где SERVER_ID заменяется на уникальный идентификатор сервера:

joomla.hostkey.in:443

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

Для развертывания используются определенные директории для конфигурации, хранения данных и управления прокси:

  • Директория конфигурации Nginx: /root/nginx

    • Содержит файл Docker Compose для стека прокси.
  • Пользовательская конфигурация Nginx: /data/nginx/user_conf.d

    • Здесь хранятся файлы конфигурации конкретных сайтов, например joomla<SERVER_ID>.hostkey.in.conf.
  • Секреты Nginx: Монтируются из внешнего тома nginx_secrets, расположенного в /etc/letsencrypt внутри контейнера.

  • Тома данных (Data Volumes):

    • Данные MySQL хранятся в именованном томе Docker mysql_data, отображаемом в /var/lib/mysql внутри контейнера.

    • Данные Joomla хранятся в именованном томе Docker joomla_data, отображаемом в /var/www/html внутри контейнера.

Процесс установки приложения

Приложение развертывается с использованием контейнеров Docker. Используются следующие образы и версии:

  • Образ Joomla: joomla:latest

  • Образ MySQL: mysql:8.0

Развертывание включает запуск двух основных контейнеров:

  1. Контейнер MySQL:

    • Имя: joomla_db

    • База данных: joomla

    • Пользователь: joomla_user

    • Контейнер настроен с политикой перезапуска restart_policyalways.

  2. Контейнер Joomla:

    • Имя: joomla

    • Связан с контейнером MySQL как mysql.

    • Контейнер настроен с политикой перезапуска restart_policyalways.

    • Отображение портов открывает внутренний порт 80 на порт хоста 8080.

Контейнеры Docker и их развертывание

Стек приложения состоит из трех служб Docker, управляемых через специальные конфигурации.

Контейнер базы данных:

  • Имя: joomla_db

  • Образ: mysql:8.0

  • Переменные окружения:

    • MYSQL_ROOT_PASSWORD: Задается как пароль SSH хоста.

    • MYSQL_DATABASE: joomla

    • MYSQL_USER: joomla_user

    • MYSQL_PASSWORD: Задается как пароль SSH хоста.

  • Тома: mysql_data монтируется в /var/lib/mysql.

  • Порты: Порт хоста 3306 отображается на порт контейнера 3306.

Контейнер приложения:

  • Имя: joomla

  • Образ: joomla:latest

  • Переменные окружения:

    • JOOMLA_DB_HOST: joomla_db

    • JOOMLA_DB_NAME: joomla

    • JOOMLA_DB_USER: joomla_user

    • JOOMLA_DB_PASSWORD: Задается как пароль SSH хоста.

  • Тома: joomla_data монтируется в /var/www/html.

  • Порты: Порт хоста 8080 отображается на порт контейнера 80.

  • Связи (Links): Подключен к joomla_db с псевдонимом mysql.

Стек контейнеров прокси: Nginx-прокси с поддержкой Certbot управляется через файл Docker Compose, расположенный по адресу /root/nginx/compose.yml.

Параметр Значение
Образ службы jonasal/nginx-certbot:latest
Политика перезапуска unless-stopped
Режим сети host
Email для Certbot hkadm@hostkey.com
Файл окружения /data/nginx/nginx-certbot.env
Том секретов nginx_secrets, отображается в /etc/letsencrypt
Том пользовательской конфигурации /data/nginx/user_conf.d, отображается в /etc/nginx/user_conf.d

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

Nginx развернут как обратный прокси с автоматическим управлением SSL-сертификатами через Certbot.

  • Цель прокси: Прокси перенаправляет трафик во внутреннюю службу Joomla по адресу http://127.0.0.1:8080.

  • Файл конфигурации: Конфигурация для конкретного сайта находится в /data/nginx/user_conf.d/joomla<SERVER_ID>.hostkey.in.conf.

  • Маршрутизация:

    • Входящие запросы к FQDN на порт 443 маршрутизируются на контейнер Nginx.

    • Контейнер Nginx перенаправляет запросы в контейнер Joomla на порт 8080.

    • Терминация SSL обрабатывается контейнером Nginx с использованием сертификатов, хранящихся в томе nginx_secrets.

Базы данных

  • Метод подключения: Контейнер Joomla подключается к базе данных через внутреннюю сеть Docker, используя имя службы joomla_db (ссылается как mysql через связь контейнеров).

  • Место хранения: Персистентность (сохранение) базы данных обеспечивается именованным томом Docker mysql_data, который отображается в /var/lib/mysql внутри контейнера joomla_db.

  • Настройки подключения:

    • Хост: joomla_db

    • База данных: joomla

    • Пользователь: joomla_user

    • Пароль: Совпадает с паролем SSH хоста.

Настройки разрешений

  • Директория Nginx: /root/nginx принадлежит root:root с правами 0755.

  • Файл Compose: /root/nginx/compose.yml принадлежит root:root с правами 0644.

  • Владение контейнерами:

    • Тома контейнера Nginx монтируются из корневых или данных директорий хоста.

    • Внутренние права доступа к файлам внутри контейнеров Joomla и MySQL управляются их соответствующими конфигурациями по умолчанию.

Доступные порты для подключения

Порт Служба Описание
443 Nginx Безопасный доступ HTTPS к приложению Joomla.
8080 Joomla Внутренний порт службы (недоступен напрямую из внешних сетей без прокси).
3306 MySQL Внутренний порт базы данных (привязан к хосту для коммуникации контейнеров).

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

Контейнеры Joomla и MySQL: Эти контейнеры управляются отдельно с помощью команд командной строки Docker (CLI) на хосте.

  • Запуск: docker start joomla и docker start joomla_db

  • Остановка: docker stop joomla и docker stop joomla_db

  • Перезапуск: docker restart joomla и docker restart joomla_db

  • Обновление образов: docker pull joomla:latest и docker pull mysql:8.0

Стек прокси (Nginx/Certbot): Стек прокси управляется через Docker Compose в директории /root/nginx.

  • Запуск/Обновление: docker compose up -d (выполняется в /root/nginx)

  • Остановка: docker compose down (выполняется в /root/nginx)

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