Files
bottohelp/DEPLOYMENT.md
T

7.8 KiB
Raw Permalink Blame History

🚀 Руководство по развертыванию телеграм-бота

📋 Содержание

🏃‍♂️ Быстрый старт

1. Получите токен бота

  1. Создайте бота через @BotFather в Telegram
  2. Сохраните токен в безопасном месте

2. Настройте конфигурацию

# Скопируйте пример конфигурации
cp .env.example .env

# Откройте .env и заполните реальные значения
nano .env

Обязательные настройки:

BOT_TOKEN=123456789:ВАШ_РЕАЛЬНЫЙ_ТОКЕН_ЗДЕСЬ
ADMIN_IDS=123456789
DEVELOPER_CHAT_ID=123456789

Опциональные API ключи:

OPENWEATHER_API_KEY=ваш_ключ_погоды
NEWS_API_KEY=ваш_ключ_новостей
OPENAI_API_KEY=ваш_ключ_openai

3. Запустите бота

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

🎯 Запуск

Локальный запуск

# Установка зависимостей
pip install -r requirements.txt

# Запуск бота
python run_production.py

Запуск в фоновом режиме

# Linux/macOS
nohup python run_production.py > logs/bot.log 2>&1 &

# Windows
pythonw run_production.py

Системный сервис (Linux)

# Создать сервис
sudo nano /etc/systemd/system/telegram-bot.service

Содержимое service файла:

[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

Управление сервисом:

sudo systemctl enable telegram-bot
sudo systemctl start telegram-bot
sudo systemctl status telegram-bot
sudo systemctl restart telegram-bot

🐳 Docker развертывание

Сборка и запуск

# Сборка образа
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

# Скопировать пример .env
cp .env.example .env

# Заполнить .env реальными значениями
nano .env

# Запуск
docker-compose up -d

# Просмотр логов
docker-compose logs -f

# Остановка
docker-compose down

Production Docker

# Сборка для продакшена
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

📊 Мониторинг

Логи

# Просмотр логов в реальном времени
tail -f logs/bot.log

# Docker логи
docker-compose logs -f telegram-bot

Статус бота

# Проверка работоспособности
curl -f http://localhost:8080/health || echo "Health check failed"

Мониторинг ресурсов

# Docker статистика
docker stats telegram-bot

# Системные ресурсы
htop

💾 Резервное копирование

Автоматическое резервное копирование

#!/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"

Восстановление из бэкапа

# Остановка бота
docker-compose down

# Восстановление базы данных
cp backups/bot_backup_YYYYMMDD.db telegram_bot.db

# Запуск бота
docker-compose up -d

🔧 Обновление

Обновление кода

# Остановка бота
docker-compose down

# Получение обновлений
git pull

# Пересборка образа
docker-compose build --no-cache

# Запуск с обновлениями
docker-compose up -d

Проверка обновлений

# Проверка статуса
docker-compose ps

# Проверка логов после обновления
docker-compose logs -f

🚨 Устранение неисправностей

Проблемы с запуском

# Проверка логов
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')"

Проблемы с токеном

# Проверка токена
curl -s "https://api.telegram.org/bot$BOT_TOKEN/getMe" | jq .

# Проверка прав бота в группе
# Добавьте бота в группу и дайте права администратора

Проблемы с памятью

# Очистка Docker
docker system prune -a

# Перезапуск контейнера
docker-compose restart

📞 Поддержка

Полезные команды

# Статус всех сервисов
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