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

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

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

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

  • Операционная система: Дистрибутив Linux, совместимый с Docker Engine.

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

  • Домен: Приложение настроено для работы в зоне hostkey.in.

  • Порты: Внешний доступ предоставляется через порт 443 (HTTPS) и порт 80 (HTTP для перенаправления SSL).

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

Приложение доступно по следующему формату полного доменного имени (FQDN):

  • redmine<Server ID>.hostkey.in:443

Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера.

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

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

  • /opt/redmine: Содержит файл конфигурации Docker Compose.

  • /data/nginx/user_conf.d: Хранит файлы конфигурации блоков сервера Nginx.

  • /etc/letsencrypt: Хранит SSL-сертификаты и ключи, управляемые Certbot.

  • /data/nginx/nginx-certbot.env: Файл окружения для конфигурации Nginx-Certbot.

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

Приложение развертывается с использованием контейнеров Docker, оркестрируемых через Docker Compose. Установка включает следующие компоненты:

  • База данных: MySQL версии 8.0.

  • Приложение: Redmine (образ по умолчанию).

  • Прокси: Nginx с интеграцией Certbot (jonasal/nginx-certbot:latest).

Развертывание инициируется запуском команды Docker Compose в каталоге /opt/redmine.

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

Система состоит из трех основных контейнеров, определенных в файле docker-compose.yml, расположенном по пути /opt/redmine/docker-compose.yml.

Имя контейнера Образ Описание
redmine-mysql mysql:8.0 Служба базы данных для Redmine.
redmine redmine Основная служба приложения Redmine.
redmine-nginx jonasal/nginx-certbot:latest Обратный прокси и завершение SSL-соединений.

Контейнеры настроены со следующими политиками перезапуска:

  • redmine-mysql: always

  • redmine: always

  • redmine-nginx: unless-stopped

Зависимости настроены так, что контейнер redmine запускается только после того, как redmine-mysql станет здоровым, а redmine-nginx — только после того, как redmine станет здоровым.

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

Приложение использует контейнер обратного прокси Nginx (redmine-nginx) для обработки входящего трафика.

  • SSL/TLS: Включено через сертификаты Let's Encrypt, управляемые Certbot.

  • Путь к сертификату: Сертификаты монтируются из тома nginx_secrets в /etc/letsencrypt.

  • Конфигурация: Блок сервера определен в файле /data/nginx/user_conf.d/redmine<Server ID>.hostkey.in.conf.

  • Настройки прокси:

  • Слушает порты 443 (SSL) и 80.

  • Пересылает трафик в контейнер Redmine по адресу http://redmine:3000.

  • Поддерживает апгрейд WebSocket.

  • Заголовки X-Forwarded-Host, X-Forwarded-Server, X-Real-IP и X-Forwarded-For передаются на бэкенд.

Базы данных

Приложение использует базу данных MySQL для хранения данных.

  • Метод подключения: Внутренняя сетевая коммуникация Docker.

  • Имя базы данных: redmine

  • Хост: db (внутреннее имя контейнера)

  • Аутентификация: Управляется через переменные окружения (MYSQL_ROOT_PASSWORD, REDMINE_DB_PASSWORD).

  • Проверка состояния (Health Check): Контейнер базы данных выполняет проверку состояния с помощью команды mysqladmin ping каждые 30 секунд.

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

Следующие порты открыты для внешнего и внутреннего взаимодействия:

  • Порт 443: Трафик HTTPS (основной доступ).

  • Порт 80: Трафик HTTP (используется для перенаправления SSL и валидации Let's Encrypt).

  • Порт 3000: Внутренний порт, используемый контейнером Redmine (не открыт для внешнего доступа).

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

Управление службами осуществляется с помощью команд Docker Compose, выполняемых в каталоге /opt/redmine.

  • Запуск/Перезапуск служб:

    docker compose up -d
    

  • Остановка служб:

    docker compose down
    

  • Просмотр логов:

    docker compose logs -f
    

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

    docker compose pull
    docker compose up -d
    

Расположение файлов конфигурации и данных

Ключевые файлы конфигурации и места хранения данных указаны ниже:

  • Docker Compose: /opt/redmine/docker-compose.yml

  • Конфигурация Nginx: /data/nginx/user_conf.d/redmine<Server ID>.hostkey.in.conf

  • SSL-сертификаты: /etc/letsencrypt/live/redmine<Server ID>.hostkey.in/

  • Окружение Nginx: /data/nginx/nginx-certbot.env

Настройки прав доступа

Каталоги развертывания и файлы принадлежат пользователю и группе root со следующими правами доступа:

  • /opt/redmine: 0644 (Каталог создан с правами владельца root).

  • /opt/redmine/docker-compose.yml: 0644.

  • /data/nginx/user_conf.d/*.conf: 0644.

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