Обзор развертывания Redmine на сервере¶
Предварительные требования и базовые условия¶
-
Операционная система: Дистрибутив Linux, совместимый с Docker.
-
Привилегии: Для управления службами Docker и системными директориями требуются права root или привилегии
sudo. -
Домен: Развертывание использует зону
hostkey.in. -
Порты: Внешний интерфейс работает на порту
443для HTTPS-трафика. Порт80используется для перенаправления HTTP и валидации сертификата Let's Encrypt.
Конечный адрес доступа¶
Полное доменное имя (FQDN) для доступа к панели Redmine имеет следующий формат: redmine<Server ID>.hostkey.in:443
Замените <Server ID> на конкретный идентификатор, назначенный вашему экземпляру сервера. Путь по умолчанию — /.
Структура файлов и директорий¶
Приложение и связанные с ним компоненты организованы в следующих местах:
-
Данные и конфигурация приложения:
/opt/redmine -
Файл Docker Compose:
/opt/redmine/docker-compose.yml -
Конфигурация пользователя Nginx:
/data/nginx/user_conf.d/redmine<Server ID>.hostkey.in.conf -
SSL-сертификаты: Хранятся внутри тома
nginx_secrets, привязанного на/etc/letsencryptвнутри контейнера Nginx. -
Переменные окружения Nginx:
/data/nginx/nginx-certbot.env
Процесс установки приложения¶
Redmine разворачивается с использованием контейнеров Docker, управляемых через Docker Compose. Установка включает три основные компоненты:
-
База данных: Контейнер
mysql:8.0с именемredmine-mysql. -
Приложение: Контейнер
redmineс именемredmine. -
Обратный прокси: Контейнер
jonasal/nginx-certbot:latestс именемredmine-nginx.
Процесс развертывания включает создание необходимой структуры директорий, генерацию файла docker-compose.yml с переменными окружения и выполнение команды Docker Compose для запуска служб.
Контейнеры Docker и их развертывание¶
Система использует три контейнера Docker, определенных в файле /opt/redmine/docker-compose.yml:
-
redmine-mysql:
-
Образ:
mysql:8.0 -
Имя базы данных:
redmine -
Проверка работоспособности: Использует
mysqladmin pingдля проверки доступности базы данных. -
Политика перезапуска:
always -
redmine:
-
Образ:
redmine -
Зависимости: Ожидает исправного состояния контейнера
redmine-mysql. -
Переменные окружения: Подключается к сервису
db, использует специфичный пароль базы данных и базовый ключ секретности. -
Проверка работоспособности: Использует
wgetдля сканированияhttp://localhost:3000. -
Политика перезапуска:
always -
redmine-nginx:
-
Образ:
jonasal/nginx-certbot:latest -
Зависимости: Ожидает исправного состояния контейнера
redmine. -
Политика перезапуска:
unless-stopped -
Окружение: Загружает адрес электронной почты сертификата и конфигурацию Nginx из внешних файлов.
-
Тома: Монтирует
nginx_secretsдля сертификатов Let's Encrypt и директорию пользовательской конфигурации.
Проксисерверы и конфигурация SSL¶
Обратный прокси-сервер Nginx обрабатывает весь входящий трафик и управляет завершением SSL с использованием Let's Encrypt (Certbot).
-
Конфигурация SSL: Сертификаты автоматически генерируются и хранятся в томе
nginx_secrets. -
Имя сервера: Настроено на отклик на домен
redmine<Server ID>.hostkey.in. -
Слушаемые порты: Работает на портах
443(HTTPS) и80(HTTP). -
Заголовки прокси: Конфигурация Nginx пересылает заголовки
X-Forwarded-Host,X-Forwarded-Server,X-Real-IPиX-Forwarded-Forв контейнер Redmine на стороне бэкенда. -
Поддержка WebSocket: В конфигурацию включены заголовки
UpgradeиConnectionдля поддержки соединений WebSocket. -
Целевой бэкенд: Трафик перенаправляется на
http://redmine:3000.
Базы данных¶
Приложение использует базу данных MySQL 8.0, работающую внутри контейнера Docker.
-
Метод подключения: Внутренняя сетевая коммуникация Docker между контейнерами
redmineиredmine-mysql. -
Имя базы данных:
redmine -
Хранение данных: Данные сохраняются во внутреннем томе контейнера Docker или на маунте хоста, определенном движком Docker.
-
Учетные данные:
-
Пароль root: Определяется переменной
REDMINE_MYSQL_PASSWORD. -
Пользователь базы данных:
root(используется для начального подключения и проверки пароля).
Доступные порты для подключения¶
На сервере-хосте открыты следующие порты:
-
443: HTTPS (Безопасный доступ к интерфейсу Redmine).
-
80: HTTP (Используется для перенаправления на HTTPS и запросов на обновление SSL-сертификата).
-
3000: Только для внутреннего использования, доступен только из сети Docker прокси-серверу Nginx.
Запуск, остановка и обновление¶
Управление службами осуществляется с помощью команд Docker Compose, выполняемых из директории /opt/redmine.
-
Запуск приложения:
-
Остановка приложения:
-
Обновление или перезапуск служб:
-
Просмотр логов:
-
Перезапуск конкретного контейнера: