Обзор развертывания RabbitMQ и Nginx-Certbot на сервере¶
Предпосылки и предварительные требования¶
Для корректной работы системы на сервере должны быть выполнены следующие условия: - Операционная система: Ubuntu. - Наличие прав суперпользователя (root) для установки пакетов и управления службами. - Доступ к интернету для обновления репозиториев и загрузки образов Docker. - Открытые порты для управления RabbitMQ (15672) и веб-сервера (80, 443).
Структура файлов и каталогов¶
Конфигурационные файлы и данные приложения размещаются в следующих директориях: - /root/nginx — каталог для запуска контейнеров Nginx и Certbot. - /root/nginx/compose.yml — файл конфигурации Docker Compose для веб-сервера. - /data/nginx/nginx-certbot.env — файл переменных окружения для Nginx. - /data/nginx/user_conf.d — директория с пользовательскими конфигурациями Nginx. - /etc/rabbitmq/rabbitmq.conf — файл конфигурации сервера RabbitMQ. - /etc/letsencrypt — точка монтирования для хранения SSL-сертификатов (через том nginx_secrets).
Процесс установки приложения¶
Установка компонентов выполняется в два этапа: настройка брокера сообщений и развертывание веб-сервера в контейнере.
Установка RabbitMQ¶
- Обновление кэша пакетов системы.
- Установка пакета
rabbitmq-serverчерез менеджер пакетовapt. - Автоматический запуск и включение службы
rabbitmq-serverв автозагрузку. - Активация плагина управления
rabbitmq_management. - Настройка конфигурационного файла
/etc/rabbitmq/rabbitmq.confдля прослушивания интерфейса127.0.0.1на порту15672. - Создание пользователя администратора и назначение ему роли
administrator. - Создание виртуального хоста (vhost) и настройка прав доступа для администратора.
Развертывание Nginx и Certbot¶
- Установка Docker на сервере.
- Создание директории
/root/nginx. - Генерация файла
compose.ymlв директории/root/nginx. - Обновление конфигурации Nginx в файле
/data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.confпутем добавления правилаproxy_passдля перенаправления трафика на внутренний порт. - Запуск контейнеров через Docker Compose.
Контейнеры Docker и их запуск¶
Веб-сервер и инструмент для получения сертификатов развернуты в виде контейнеров Docker.
Используемый образ: jonasal/nginx-certbot:latest.
Конфигурация контейнера включает следующие параметры: - Режим сети: host. - Политика перезапуска: unless-stopped. - Переменная окружения CERTBOT_EMAIL установлена в значение hkadm@hostkey.com. - Файл переменных окружения: /data/nginx/nginx-certbot.env. - Монтирование тома nginx_secrets в директорию /etc/letsencrypt для хранения сертификатов. - Монтирование локальной директории /data/nginx/user_conf.d в /etc/nginx/user_conf.d внутри контейнера.
Для запуска контейнеров используется команда:
Команда выполняется из директории/root/nginx. Базы данных¶
В системе используется брокер сообщений RabbitMQ в качестве базы данных очередей.
Параметры подключения и настройки: - Адрес прослушивания: 127.0.0.1. - Порт управления: 15672. - Виртуальный хост: настраивается динамически через переменные развертывания. - Пользователь: создается администратор с полными правами (.* на чтение, запись и конфигурацию) на указанном виртуальном хосте.
Прокси серверы¶
В качестве прокси-сервера используется контейнер Nginx с поддержкой автоматического получения SSL-сертификатов через Certbot.
Настройки проксирования: - Трафик перенаправляется на внутренний адрес 127.0.0.1 и порт, указанный в конфигурации ({{ internal_port }}). - Конфигурация проксирования добавляется в блок location / файла конфигурации хоста. - Сертификаты хранятся в томе nginx_secrets, который монтируется в /etc/letsencrypt.
Права доступа и безопасность¶
Права на файлы и директории настроены следующим образом: - Директория /root/nginx имеет владельца root и группу root с правами 0755. - Файл /root/nginx/compose.yml имеет владельца root и группу root с правами 0644. - Файл конфигурации /etc/rabbitmq/rabbitmq.conf имеет владельца root и группу root с правами 0644. - Плагин управления RabbitMQ настроен на прослушивание только локального интерфейса (127.0.0.1), что ограничивает доступ к панели управления внешними сетями.
Запуск, остановка и обновление¶
Управление службами осуществляется следующими способами:
RabbitMQ¶
- Запуск и остановка службы выполняются через системный менеджер служб:
- Управление пользователями и виртуальными хостами выполняется через утилиту
rabbitmqctl.
Nginx и Certbot¶
- Запуск контейнеров: Команда выполняется из директории
/root/nginx. - Остановка контейнеров:
- Обновление конфигурации требует пересоздания файла
compose.ymlи перезапуска контейнеров.