mirror of
https://github.com/FerraSoft/bottohelp.git
synced 2026-08-06 21:55:03 +00:00
Подготовка к релизу
This commit is contained in:
+315
@@ -0,0 +1,315 @@
|
||||
# 🚀 Руководство по развертыванию телеграм-бота
|
||||
|
||||
## 📋 Содержание
|
||||
- [Быстрый старт](#быстрый-старт)
|
||||
- [Конфигурация](#конфигурация)
|
||||
- [Запуск](#запуск)
|
||||
- [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*
|
||||
Reference in New Issue
Block a user