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

Инструкция по запуску и развертыванию приложения на cloud.ru

Локальный запуск

Клонирование репозитория

git clone https://github.com/AI-YP-24-6/img_classifier.git

Запуск компонентов

  • FastAPI сервер: Backend/app/main.py
  • Streamlit приложение: Frontend/run.py

Параллельный запуск FastAPI и Streamlit

Выполните команды в двух консолях:

# Установите PYTHONPATH
$env:PYTHONPATH="C:<path>\img_classifier"
# Запуск Streamlit
streamlit run .\Client\app_client.py --server.port=8081 --server.address=127.0.0.1
# Запуск FastAPI
uvicorn Backend.app.main:app --host=0.0.0.0 --port=54545

Развертывание через Docker

docker compose up -d --build

Описание: В compose-файле поднимаются два контейнера с FastAPI и Streamlit-приложениями.


Развертывание на VPS (Cloud.ru)

1. Создание виртуальной машины

  1. Перейдите на официальный сайт Cloud.ru
  2. Создайте ВМ с бесплатным тарифом (free tier)
  3. Выберите предустановленные компоненты по вашему усмотрению

2. Настройка SSH-доступа

Рекомендуется сразу настроить SSH-соединение для более удобного доступа к серверу. После завершения настройки вы сможете подключаться к машине двумя способами: либо напрямую через веб-интерфейс сайта, используя пароль, либо через SSH.

  • Подключение через SSH:
    ssh -i ~/.ssh/<cloudru-key> <login>@<ip>
    

По умолчанию там запускается -sh, которая не очень удобна для работы. Чтобы переключиться на стандартный Bash, выполните команду

  • Переключитесь на Bash:
    /bin/bash
    
    или
    chsh /bin/bash
    

3. Открытие портов

Следуйте инструкции: Настройка подсетей Cloud.ru

Пример правил входящего трафика:

Протокол Порт Источник
TCP 80:80 Ваш IP/32
TCP 9000:9000 Ваш IP/32
TCP 22:22 Ваш IP/32

Правила исходящего трафика:

  • Адресат: 0.0.0.0/0

4. Проверка доступности портов

  • Windows:
    Test-NetConnection <ip> -Port 54545
    

Она выведет результат проверки соединения, например: TcpTestSucceeded : False

  • Linux:
    telnet <ip> 54545
    
  • Тестовый запуск порта:
    netcat -l 8501
    

5. Развертывание приложения

# Клонирование репозитория
git clone -b <feature-fastapi> <progect_http_url>

# Запуск контейнеров
docker compose up -d --build

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

  • FastAPI: http://<host_ip>:54545
  • Streamlit: http://<host_ip>:8501

Дополнительные материалы

Архитектура приложения

  • FastAPI: Обработка запросов, обучение моделей, предсказание
  • Streamlit: Визуализация EDA, обучение моделей, инференс

Доступные API-методы

Метод Описание
/api/v1/dataset/load Загрузка датасета
/api/v1/models/fit Обучение новой модели
/api/v1/models/predict Предсказание класса изображения

Поддерживаемые форматы

  • Датасет: ZIP-архив с папками классов
  • Изображения: .jpeg, .png, .jpg

Метрики

  • Основная: accuracy
  • Вспомогательная: f1 macro