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` передается
 | 
						||
- Проверьте логи приложения
 | 
						||
 | 
						||
### Проблемы с производительностью
 | 
						||
- Увеличьте размер пула БД
 | 
						||
- Проверьте индексы в базе данных
 | 
						||
- Мониторьте использование ресурсов
 |