142 lines
3.9 KiB
Markdown
142 lines
3.9 KiB
Markdown
|
|
# Миграция с Node.js на Python
|
|||
|
|
|
|||
|
|
## Зачем переходить на Python?
|
|||
|
|
|
|||
|
|
1. **Email работает из коробки** - нативная поддержка SMTP без проблем с AWS SDK
|
|||
|
|
2. **Проще настройка** - меньше зависимостей и конфликтов версий
|
|||
|
|
3. **Лучшая типизация** - Pydantic для валидации
|
|||
|
|
4. **Совместимость** - использует ту же MongoDB, API полностью совместимо
|
|||
|
|
|
|||
|
|
## Шаги миграции
|
|||
|
|
|
|||
|
|
### 1. Остановите Node.js версию
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Если запущено через PM2
|
|||
|
|
pm2 stop moderation-backend
|
|||
|
|
|
|||
|
|
# Если запущено через Docker
|
|||
|
|
docker stop nakama-moderation-backend
|
|||
|
|
|
|||
|
|
# Если запущено вручную
|
|||
|
|
# Найдите процесс и остановите его
|
|||
|
|
ps aux | grep "moderation/backend"
|
|||
|
|
kill <PID>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Установите Python зависимости
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd moderation/backend-py
|
|||
|
|
python3 -m venv venv
|
|||
|
|
source venv/bin/activate
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Проверьте .env
|
|||
|
|
|
|||
|
|
Убедитесь, что в корневом `.env` (`nakama/.env`) настроены:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# Email (обязательно!)
|
|||
|
|
EMAIL_PROVIDER=yandex
|
|||
|
|
YANDEX_SMTP_HOST=smtp.yandex.ru
|
|||
|
|
YANDEX_SMTP_PORT=465
|
|||
|
|
YANDEX_SMTP_SECURE=true
|
|||
|
|
YANDEX_SMTP_USER=ваш_email@yandex.ru
|
|||
|
|
YANDEX_SMTP_PASSWORD=ваш_пароль_приложения
|
|||
|
|
EMAIL_FROM=noreply@nakama.guru
|
|||
|
|
OWNER_EMAIL=admin@example.com
|
|||
|
|
|
|||
|
|
# Модерация
|
|||
|
|
MODERATION_PORT=3001
|
|||
|
|
MODERATION_BOT_TOKEN=ваш_токен
|
|||
|
|
MODERATION_OWNER_USERNAMES=glpshchn00
|
|||
|
|
|
|||
|
|
# MongoDB (та же база!)
|
|||
|
|
MONGODB_URI=mongodb://103.80.87.247:27017/nakama
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Запустите Python версию
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Development
|
|||
|
|
python main.py
|
|||
|
|
|
|||
|
|
# Или с auto-reload
|
|||
|
|
uvicorn main:app --reload --host 0.0.0.0 --port 3001
|
|||
|
|
|
|||
|
|
# Production
|
|||
|
|
uvicorn main:app --host 0.0.0.0 --port 3001 --workers 4
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. Проверьте работу
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Health check
|
|||
|
|
curl http://localhost:3001/health
|
|||
|
|
|
|||
|
|
# API
|
|||
|
|
curl http://localhost:3001/api/moderation-auth/config
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. Обновите PM2 (опционально)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pm2 delete moderation-backend
|
|||
|
|
|
|||
|
|
pm2 start "uvicorn main:app --host 0.0.0.0 --port 3001 --workers 2" \
|
|||
|
|
--name moderation-backend-py \
|
|||
|
|
--cwd /path/to/nakama/moderation/backend-py \
|
|||
|
|
--interpreter python3
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Откат на Node.js
|
|||
|
|
|
|||
|
|
Если нужно вернуться:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Остановите Python версию
|
|||
|
|
pm2 stop moderation-backend-py
|
|||
|
|
|
|||
|
|
# Запустите Node.js версию
|
|||
|
|
cd moderation/backend
|
|||
|
|
npm start
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Проверка совместимости
|
|||
|
|
|
|||
|
|
Фронтенд модерации работает с обеими версиями без изменений:
|
|||
|
|
- API endpoints идентичны
|
|||
|
|
- Формат данных совместим
|
|||
|
|
- WebSocket протокол тот же
|
|||
|
|
|
|||
|
|
## Решение проблем
|
|||
|
|
|
|||
|
|
### Email не отправляется
|
|||
|
|
|
|||
|
|
Проверьте:
|
|||
|
|
1. Используете ли пароль приложения Yandex (не основной пароль)
|
|||
|
|
2. Правильность email адреса в `YANDEX_SMTP_USER`
|
|||
|
|
3. Логи при запуске - должна быть строка `[Email] Настройка SMTP`
|
|||
|
|
|
|||
|
|
### 401 Unauthorized
|
|||
|
|
|
|||
|
|
- JWT токены те же, что и в Node.js версии
|
|||
|
|
- Cookies с теми же именами
|
|||
|
|
- Проверьте `JWT_ACCESS_SECRET` в `.env`
|
|||
|
|
|
|||
|
|
### MongoDB connection error
|
|||
|
|
|
|||
|
|
- Используется та же `MONGODB_URI` из `.env`
|
|||
|
|
- Проверьте доступность MongoDB: `mongosh <MONGODB_URI>`
|
|||
|
|
|
|||
|
|
## Производительность
|
|||
|
|
|
|||
|
|
Python версия с uvicorn и 4 workers показывает сопоставимую или лучшую производительность по сравнению с Node.js.
|
|||
|
|
|
|||
|
|
## Поддержка
|
|||
|
|
|
|||
|
|
При проблемах создайте issue или обратитесь к администратору.
|
|||
|
|
|