157 lines
4.7 KiB
Markdown
157 lines
4.7 KiB
Markdown
# Развертывание HubGW
|
||
|
||
Инструкции по развертыванию FastAPI-шлюза HubGW.
|
||
|
||
## Требования
|
||
|
||
- Python 3.11+
|
||
- PostgreSQL 12+
|
||
- Poetry (для управления зависимостями)
|
||
|
||
## Установка
|
||
|
||
1. Клонируйте репозиторий:
|
||
```bash
|
||
git clone <repository-url>
|
||
cd hubmc-datagw
|
||
```
|
||
|
||
2. Установите зависимости:
|
||
```bash
|
||
poetry install
|
||
```
|
||
|
||
3. Создайте файл `.env` на основе `.env.example`:
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
4. Настройте переменные окружения в `.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
|
||
```
|
||
|
||
## Настройка базы данных
|
||
|
||
1. Создайте базу данных PostgreSQL:
|
||
```sql
|
||
CREATE DATABASE hubgw;
|
||
CREATE USER hubgw_user WITH PASSWORD 'secure_password';
|
||
GRANT ALL PRIVILEGES ON DATABASE hubgw TO hubgw_user;
|
||
```
|
||
|
||
2. Создайте таблицы (в будущем будет добавлена миграция):
|
||
```sql
|
||
-- Таблицы будут созданы автоматически при первом запуске
|
||
-- или можно использовать Alembic для миграций
|
||
```
|
||
|
||
## Запуск
|
||
|
||
### Разработка
|
||
```bash
|
||
poetry run hubgw
|
||
```
|
||
|
||
### Продакшн с Gunicorn
|
||
```bash
|
||
poetry run gunicorn hubgw.main:create_app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080
|
||
```
|
||
|
||
### Продакшн с Docker
|
||
```dockerfile
|
||
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
|
||
```bash
|
||
curl http://localhost:8080/api/v1/health/
|
||
```
|
||
|
||
## Безопасность
|
||
|
||
1. **API Key**: Используйте сильный, случайный API ключ
|
||
2. **HTTPS**: Настройте SSL/TLS в продакшне
|
||
3. **Firewall**: Ограничьте доступ к порту 8080
|
||
4. **База данных**: Используйте отдельного пользователя БД с минимальными правами
|
||
|
||
## Масштабирование
|
||
|
||
### Горизонтальное масштабирование
|
||
- Используйте load balancer (nginx, HAProxy)
|
||
- Настройте sticky sessions если необходимо
|
||
- Используйте внешний Redis для сессий
|
||
|
||
### Вертикальное масштабирование
|
||
- Увеличьте `DB_POOL_SIZE` и `DB_MAX_OVERFLOW`
|
||
- Настройте `RATE_LIMIT_PER_MIN` под нагрузку
|
||
- Мониторьте использование памяти и CPU
|
||
|
||
## Резервное копирование
|
||
|
||
1. **База данных**: Регулярные бэкапы PostgreSQL
|
||
2. **Конфигурация**: Сохраните файл `.env` в безопасном месте
|
||
3. **Логи**: Архивируйте важные логи
|
||
|
||
## Обновление
|
||
|
||
1. Остановите приложение
|
||
2. Создайте бэкап базы данных
|
||
3. Обновите код
|
||
4. Установите новые зависимости: `poetry install`
|
||
5. Примените миграции (если есть)
|
||
6. Запустите приложение
|
||
7. Проверьте работоспособность
|
||
|
||
## Устранение неполадок
|
||
|
||
### Проблемы с подключением к БД
|
||
- Проверьте строку подключения в `DB_DSN`
|
||
- Убедитесь, что PostgreSQL запущен
|
||
- Проверьте права пользователя БД
|
||
|
||
### Проблемы с API
|
||
- Проверьте правильность API ключа
|
||
- Убедитесь, что заголовок `X-API-Key` передается
|
||
- Проверьте логи приложения
|
||
|
||
### Проблемы с производительностью
|
||
- Увеличьте размер пула БД
|
||
- Проверьте индексы в базе данных
|
||
- Мониторьте использование ресурсов
|