Files
bottohelp/DEPLOYMENT.md
T

315 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 Руководство по развертыванию телеграм-бота
## 📋 Содержание
- [Быстрый старт](#быстрый-старт)
- [Конфигурация](#конфигурация)
- [Запуск](#запуск)
- [Docker развертывание](#docker-развертывание)
- [Мониторинг](#мониторинг)
- [Резервное копирование](#резервное-копирование)
## 🏃‍♂️ Быстрый старт
### 1. Получите токен бота
1. Создайте бота через [@BotFather](https://t.me/botfather) в Telegram
2. Сохраните токен в безопасном месте
### 2. Настройте конфигурацию
```bash
# Скопируйте пример конфигурации
cp .env.example .env
# Откройте .env и заполните реальные значения
nano .env
```
**Обязательные настройки:**
```env
BOT_TOKEN=123456789:ВАШ_РЕАЛЬНЫЙ_ТОКЕН_ЗДЕСЬ
ADMIN_IDS=123456789
DEVELOPER_CHAT_ID=123456789
```
**Опциональные API ключи:**
```env
OPENWEATHER_API_KEY=ваш_ключ_погоды
NEWS_API_KEY=ваш_ключ_новостей
OPENAI_API_KEY=ваш_ключ_openai
```
### 3. Запустите бота
```bash
python run_production.py
```
## ⚙️ Конфигурация
### Файлы конфигурации
- `config_prod.py` - продакшн конфигурация
- `.env` - переменные окружения
- `.env.example` - пример конфигурации
### Основные настройки
| Параметр | Описание | Значение по умолчанию |
|----------|----------|----------------------|
| BOT_TOKEN | Токен телеграм-бота | Обязателен |
| ADMIN_IDS | ID администраторов | Обязателен |
| OPENWEATHER_API_KEY | API ключ для погоды | Опционален |
| NEWS_API_KEY | API ключ для новостей | Опционален |
| LOG_LEVEL | Уровень логирования | INFO |
| DATABASE_URL | Путь к БД | telegram_bot.db |
## 🎯 Запуск
### Локальный запуск
```bash
# Установка зависимостей
pip install -r requirements.txt
# Запуск бота
python run_production.py
```
### Запуск в фоновом режиме
```bash
# Linux/macOS
nohup python run_production.py > logs/bot.log 2>&1 &
# Windows
pythonw run_production.py
```
### Системный сервис (Linux)
```bash
# Создать сервис
sudo nano /etc/systemd/system/telegram-bot.service
```
**Содержимое service файла:**
```ini
[Unit]
Description=Telegram Bot Service
After=network.target
[Service]
Type=simple
User=bot
WorkingDirectory=/path/to/telegram_bot
ExecStart=/usr/bin/python3 run_production.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
```
**Управление сервисом:**
```bash
sudo systemctl enable telegram-bot
sudo systemctl start telegram-bot
sudo systemctl status telegram-bot
sudo systemctl restart telegram-bot
```
## 🐳 Docker развертывание
### Сборка и запуск
```bash
# Сборка образа
docker build -t telegram-bot .
# Запуск контейнера
docker run -d \
--name telegram-bot \
-e BOT_TOKEN=ваш_токен \
-e OPENWEATHER_API_KEY=ваш_ключ \
-v ./data:/app/data \
telegram-bot
```
### Docker Compose
```bash
# Скопировать пример .env
cp .env.example .env
# Заполнить .env реальными значениями
nano .env
# Запуск
docker-compose up -d
# Просмотр логов
docker-compose logs -f
# Остановка
docker-compose down
```
### Production Docker
```bash
# Сборка для продакшена
docker build -t telegram-bot:prod .
# Запуск с переменными окружения
docker run -d \
--name telegram-bot-prod \
--restart unless-stopped \
-e BOT_TOKEN=${BOT_TOKEN} \
-e OPENWEATHER_API_KEY=${OPENWEATHER_API_KEY} \
-e NEWS_API_KEY=${NEWS_API_KEY} \
-v /opt/telegram_bot/data:/app/data \
telegram-bot:prod
```
## 📊 Мониторинг
### Логи
```bash
# Просмотр логов в реальном времени
tail -f logs/bot.log
# Docker логи
docker-compose logs -f telegram-bot
```
### Статус бота
```bash
# Проверка работоспособности
curl -f http://localhost:8080/health || echo "Health check failed"
```
### Мониторинг ресурсов
```bash
# Docker статистика
docker stats telegram-bot
# Системные ресурсы
htop
```
## 💾 Резервное копирование
### Автоматическое резервное копирование
```bash
#!/bin/bash
# Скрипт резервного копирования
BACKUP_DIR="backups"
DATE=$(date +%Y%m%d_%H%M%S)
# Создание директории если не существует
mkdir -p $BACKUP_DIR
# Копирование базы данных
cp telegram_bot.db "$BACKUP_DIR/bot_backup_$DATE.db"
# Упаковка логов
tar -czf "$BACKUP_DIR/logs_backup_$DATE.tar.gz" logs/
# Очистка старых бэкапов (старше 30 дней)
find $BACKUP_DIR -type f -name "*.db" -mtime +30 -delete
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +30 -delete
echo "Backup completed: $DATE"
```
### Восстановление из бэкапа
```bash
# Остановка бота
docker-compose down
# Восстановление базы данных
cp backups/bot_backup_YYYYMMDD.db telegram_bot.db
# Запуск бота
docker-compose up -d
```
## 🔧 Обновление
### Обновление кода
```bash
# Остановка бота
docker-compose down
# Получение обновлений
git pull
# Пересборка образа
docker-compose build --no-cache
# Запуск с обновлениями
docker-compose up -d
```
### Проверка обновлений
```bash
# Проверка статуса
docker-compose ps
# Проверка логов после обновления
docker-compose logs -f
```
## 🚨 Устранение неисправностей
### Проблемы с запуском
```bash
# Проверка логов
docker-compose logs telegram-bot
# Проверка переменных окружения
docker-compose exec telegram-bot env
# Проверка подключения к БД
docker-compose exec telegram-bot python -c "from database import UserRepository; print('DB OK')"
```
### Проблемы с токеном
```bash
# Проверка токена
curl -s "https://api.telegram.org/bot$BOT_TOKEN/getMe" | jq .
# Проверка прав бота в группе
# Добавьте бота в группу и дайте права администратора
```
### Проблемы с памятью
```bash
# Очистка Docker
docker system prune -a
# Перезапуск контейнера
docker-compose restart
```
## 📞 Поддержка
### Полезные команды
```bash
# Статус всех сервисов
docker-compose ps
# Логи всех сервисов
docker-compose logs
# Перезапуск всех сервисов
docker-compose restart
# Остановка всех сервисов
docker-compose down
# Очистка неиспользуемых ресурсов
docker system prune
```
### Мониторинг
- **Health check**: `GET /health`
- **Логи**: `logs/bot.log`
- **Метрики**: Интегрируйте с Prometheus/Grafana для продакшена
---
*Последнее обновление: 2025-01-20*
*Версия бота: 2.0.0*