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

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

  • Запуск приложения:

    cd /opt/redmine
    docker compose up -d
    

  • Остановка приложения:

    cd /opt/redmine
    docker compose down
    

  • Обновление или перезапуск служб:

    cd /opt/redmine
    docker compose up -d
    

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

    cd /opt/redmine
    docker compose logs -f
    

  • Перезапуск конкретного контейнера:

    docker restart redmine-mysql
    docker restart redmine
    docker restart redmine-nginx
    

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