166 lines
3.3 KiB
Markdown
166 lines
3.3 KiB
Markdown
|
|
# Установка и запуск Python Moderation Backend
|
|||
|
|
|
|||
|
|
## Быстрая установка
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd moderation/backend-py
|
|||
|
|
./start.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Скрипт автоматически:
|
|||
|
|
1. Создаст виртуальное окружение
|
|||
|
|
2. Установит зависимости
|
|||
|
|
3. Запустит сервер
|
|||
|
|
|
|||
|
|
## Ручная установка
|
|||
|
|
|
|||
|
|
### 1. Python 3.11+
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 --version
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Если версия < 3.11, установите новую версию.
|
|||
|
|
|
|||
|
|
### 2. Виртуальное окружение
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd moderation/backend-py
|
|||
|
|
python3 -m venv venv
|
|||
|
|
source venv/bin/activate
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Зависимости
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Настройка email
|
|||
|
|
|
|||
|
|
В корневом `.env` (`nakama/.env`) добавьте:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
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
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Получение пароля приложения Yandex:**
|
|||
|
|
1. https://id.yandex.ru/security
|
|||
|
|
2. "Пароли и вход" → "Пароли приложений"
|
|||
|
|
3. Создать для "Почта"
|
|||
|
|
4. Скопировать в `YANDEX_SMTP_PASSWORD`
|
|||
|
|
|
|||
|
|
### 5. Создайте админа
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// В mongosh
|
|||
|
|
use nakama;
|
|||
|
|
|
|||
|
|
// Найти вашего пользователя
|
|||
|
|
const user = db.users.findOne({ username: "ваш_username" });
|
|||
|
|
|
|||
|
|
// Обновить email и роль
|
|||
|
|
db.users.updateOne(
|
|||
|
|
{ _id: user._id },
|
|||
|
|
{
|
|||
|
|
$set: {
|
|||
|
|
email: "ваш_email@yandex.ru",
|
|||
|
|
emailVerified: true,
|
|||
|
|
role: "admin"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// Проверить
|
|||
|
|
db.users.findOne({ email: "ваш_email@yandex.ru" });
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. Запуск
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python main.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Или:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
uvicorn main:app --reload --host 0.0.0.0 --port 3001
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7. Проверка
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Health check
|
|||
|
|
curl http://localhost:3001/health
|
|||
|
|
|
|||
|
|
# Должен вернуть:
|
|||
|
|
# {"status":"ok","service":"moderation","version":"2.0.0-python"}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Тестирование email
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# В Python консоли
|
|||
|
|
python3
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
import asyncio
|
|||
|
|
from utils.email_service import send_verification_code
|
|||
|
|
|
|||
|
|
async def test():
|
|||
|
|
await send_verification_code("ваш_email@yandex.ru", "123456")
|
|||
|
|
print("✅ Email отправлен!")
|
|||
|
|
|
|||
|
|
asyncio.run(test())
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Если ошибка - проверьте настройки SMTP в `.env`.
|
|||
|
|
|
|||
|
|
## Переключение с Node.js
|
|||
|
|
|
|||
|
|
1. Остановите Node.js версию:
|
|||
|
|
```bash
|
|||
|
|
pm2 stop moderation-backend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Запустите Python версию:
|
|||
|
|
```bash
|
|||
|
|
cd moderation/backend-py
|
|||
|
|
./start.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Фронтенд работает без изменений!
|
|||
|
|
|
|||
|
|
## Production
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# С PM2
|
|||
|
|
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
|
|||
|
|
|
|||
|
|
# Или с Docker
|
|||
|
|
docker-compose -f docker-compose.moderation-py.yml up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Логи
|
|||
|
|
|
|||
|
|
Все логи в stdout:
|
|||
|
|
- `[Email]` - email операции
|
|||
|
|
- `[ModerationAuth]` - аутентификация
|
|||
|
|
- `[ModApp]` - модерация
|
|||
|
|
- `[WebSocket]` - WebSocket
|
|||
|
|
|
|||
|
|
## Помощь
|
|||
|
|
|
|||
|
|
См. `README.md` и `MIGRATION.md` для подробностей.
|
|||
|
|
|