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

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

  1. Обновление кэша пакетов системы.
  2. Установка пакета rabbitmq-server через менеджер пакетов apt.
  3. Автоматический запуск и включение службы rabbitmq-server в автозагрузку.
  4. Активация плагина управления rabbitmq_management.
  5. Настройка конфигурационного файла /etc/rabbitmq/rabbitmq.conf для прослушивания интерфейса 127.0.0.1 на порту 15672.
  6. Создание пользователя администратора и назначение ему роли administrator.
  7. Создание виртуального хоста (vhost) и настройка прав доступа для администратора.

Развертывание Nginx и Certbot

  1. Установка Docker на сервере.
  2. Создание директории /root/nginx.
  3. Генерация файла compose.yml в директории /root/nginx.
  4. Обновление конфигурации Nginx в файле /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf путем добавления правила proxy_pass для перенаправления трафика на внутренний порт.
  5. Запуск контейнеров через 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 внутри контейнера.

Для запуска контейнеров используется команда:

docker compose up -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

  • Запуск и остановка службы выполняются через системный менеджер служб:
    systemctl start rabbitmq-server
    systemctl stop rabbitmq-server
    systemctl restart rabbitmq-server
    
  • Управление пользователями и виртуальными хостами выполняется через утилиту rabbitmqctl.

Nginx и Certbot

  • Запуск контейнеров:
    docker compose up -d
    
    Команда выполняется из директории /root/nginx.
  • Остановка контейнеров:
    docker compose down
    
  • Обновление конфигурации требует пересоздания файла compose.yml и перезапуска контейнеров.
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×