Обзор развертывания hallo3 на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu версии 22.04. Система должна быть обновлена до последних версий пакетов.
Требуется наличие видеокарты NVIDIA с установленными драйверами. Для работы приложения необходимы следующие компоненты: - Утилиты NVIDIA версии 550-server. - Комплект CUDA Toolkit. - Компилятор GCC. - Пакет ffmpeg. - Docker с поддержкой NVIDIA (nvidia-docker2).
Приложение запускается на порту 7860. Для работы веб-интерфейса через прокси требуется доступ к портам 80 и 443 для Nginx и Certbot.
Структура файлов и каталогов¶
Основные компоненты системы размещаются в следующих директориях:
/opt/hallo3— каталог с исходным кодом приложения, клонированный из репозитория./opt/hallo3/pretrained_models— директория для хранения предобученных моделей, загружаемых из Hugging Face./opt/miniconda3— корневая директория установки Miniconda./opt/miniconda3/envs/hallo— среда выполнения Python для приложения./root/nginx— каталог конфигурации для Docker-контейнера Nginx./root/nginx/compose.yml— файл конфигурации Docker Compose для прокси-сервера./data/nginx/user_conf.d— директория для пользовательских конфигурационных файлов Nginx./data/nginx/nginx-certbot.env— файл переменных окружения для Nginx и Certbot./etc/letsencrypt— точка монтирования для сертификатов SSL (через томnginx_secrets).
Процесс установки приложения¶
Установка выполняется вручную или через скрипт, который подготавливает систему и устанавливает необходимые зависимости.
-
Обновление системы и установка базовых пакетов:
-
Установка компилятора GCC и драйверов NVIDIA:
-
Установка CUDA Toolkit и ключей репозитория NVIDIA:
-
Настройка переменных окружения для CUDA в файле
~/.bashrc: -
Инициализация модулей ядра NVIDIA:
-
Установка Miniconda в директорию
/opt/miniconda3: -
Добавление Miniconda в системный путь и инициализация:
-
Клонирование репозитория приложения:
-
Создание и настройка среды Python:
-
Установка дополнительных зависимостей:
-
Загрузка предобученных моделей:
Контейнеры Docker и их запуск¶
Для работы прокси-сервера используется Docker Compose. Конфигурация хранится в файле /root/nginx/compose.yml.
Файл конфигурации содержит следующие параметры: - Образ контейнера: jonasal/nginx-certbot:latest. - Режим сети: host. - Переменные окружения: CERTBOT_EMAIL=hkadm@hostkey.com. - Монтирование тома nginx_secrets в /etc/letsencrypt для хранения сертификатов. - Монтирование директории /data/nginx/user_conf.d в /etc/nginx/user_conf.d для конфигураций.
Запуск контейнеров выполняется командой:
Прокси серверы¶
Прокси-сервер Nginx развернут в Docker-контейнере с поддержкой автоматического получения SSL-сертификатов через Certbot.
Конфигурация прокси-сервера включает: - Перенаправление трафика на порт 7860 локального хоста. - Использование пользовательской конфигурации из директории /data/nginx/user_conf.d. - Поддержка HTTPS через сертификаты Let's Encrypt.
В конфигурационном файле прокси-сервера добавляется директива пересылки запросов:
Эта директива размещается внутри блокаlocation /. Запуск, остановка и обновление¶
Запуск приложения hallo3 выполняется из директории /opt/hallo3 с активированной средой Conda:
source /opt/miniconda3/etc/profile.d/conda.sh
conda activate hallo
cd /opt/hallo3
python hallo3/app.py
Процесс запускается в фоновом режиме. Приложение слушает порт 7860.
Для управления контейнером прокси-сервера используются команды Docker Compose: - Запуск: docker compose up -d в директории /root/nginx. - Остановка: docker compose down. - Перезапуск: docker compose restart.
Обновление приложения требует повторного клонирования репозитория, обновления зависимостей в среде Conda и перезапуска процесса Python.