4.7 KiB
		
	
	
	
	
	
			
		
		
	
	
			4.7 KiB
		
	
	
	
	
	
Развертывание HubGW
Инструкции по развертыванию FastAPI-шлюза HubGW.
Требования
- Python 3.11+
 - PostgreSQL 12+
 - Poetry (для управления зависимостями)
 
Установка
- Клонируйте репозиторий:
 
git clone <repository-url>
cd hubmc-datagw
- Установите зависимости:
 
poetry install
- Создайте файл 
.envна основе.env.example: 
cp .env.example .env
- Настройте переменные окружения в 
.env: 
APP_ENV=prod
APP_HOST=0.0.0.0
APP_PORT=8080
APP_LOG_LEVEL=INFO
DB_DSN=postgresql+asyncpg://user:password@localhost:5432/hubgw
DB_POOL_SIZE=10
DB_MAX_OVERFLOW=10
API_KEY=your-secure-api-key-here
RATE_LIMIT_PER_MIN=1000
Настройка базы данных
- Создайте базу данных PostgreSQL:
 
CREATE DATABASE hubgw;
CREATE USER hubgw_user WITH PASSWORD 'secure_password';
GRANT ALL PRIVILEGES ON DATABASE hubgw TO hubgw_user;
- Создайте таблицы (в будущем будет добавлена миграция):
 
-- Таблицы будут созданы автоматически при первом запуске
-- или можно использовать Alembic для миграций
Запуск
Разработка
poetry run hubgw
Продакшн с Gunicorn
poetry run gunicorn hubgw.main:create_app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080
Продакшн с Docker
FROM python:3.11-slim
WORKDIR /app
# Установка Poetry
RUN pip install poetry
# Копирование файлов
COPY pyproject.toml poetry.lock ./
COPY src/ ./src/
# Установка зависимостей
RUN poetry config virtualenvs.create false
RUN poetry install --no-dev
# Запуск приложения
CMD ["poetry", "run", "hubgw"]
Мониторинг
Логи
Логи сохраняются в директории logs/ в продакшне:
logs/hubgw.log- основные логи приложения- Ротация каждый день
 - Хранение 30 дней
 - Сжатие старых логов
 
Health Check
curl http://localhost:8080/api/v1/health/
Безопасность
- API Key: Используйте сильный, случайный API ключ
 - HTTPS: Настройте SSL/TLS в продакшне
 - Firewall: Ограничьте доступ к порту 8080
 - База данных: Используйте отдельного пользователя БД с минимальными правами
 
Масштабирование
Горизонтальное масштабирование
- Используйте load balancer (nginx, HAProxy)
 - Настройте sticky sessions если необходимо
 - Используйте внешний Redis для сессий
 
Вертикальное масштабирование
- Увеличьте 
DB_POOL_SIZEиDB_MAX_OVERFLOW - Настройте 
RATE_LIMIT_PER_MINпод нагрузку - Мониторьте использование памяти и CPU
 
Резервное копирование
- База данных: Регулярные бэкапы PostgreSQL
 - Конфигурация: Сохраните файл 
.envв безопасном месте - Логи: Архивируйте важные логи
 
Обновление
- Остановите приложение
 - Создайте бэкап базы данных
 - Обновите код
 - Установите новые зависимости: 
poetry install - Примените миграции (если есть)
 - Запустите приложение
 - Проверьте работоспособность
 
Устранение неполадок
Проблемы с подключением к БД
- Проверьте строку подключения в 
DB_DSN - Убедитесь, что PostgreSQL запущен
 - Проверьте права пользователя БД
 
Проблемы с API
- Проверьте правильность API ключа
 - Убедитесь, что заголовок 
X-API-Keyпередается - Проверьте логи приложения
 
Проблемы с производительностью
- Увеличьте размер пула БД
 - Проверьте индексы в базе данных
 - Мониторьте использование ресурсов