Some checks failed
continuous-integration/drone/pr Build is failing
- Implemented two-level admin hierarchy (super admin from .env and assigned admins) - Only super admins (from ADMIN_IDS in .env) can manage admin assignments - Added admin management menu to settings (visible only for super admins) - Admins can add/remove other admins through the bot interface - Protected super admins from deletion - Added CLI tool for admin management (scripts/manage_admins.py) - Added database check script (scripts/check_db.py) - Added deployment scripts for server setup - Added comprehensive documentation on admin management system - Added backup and server deployment guides
8.7 KiB
8.7 KiB
Гайд развертывания на сервере 192.168.0.103
🚀 Быстрый старт (5 минут)
Шаг 1: Подключитесь к серверу по SSH
ssh trevor@192.168.0.103
# Пароль: R0sebud
Шаг 2: Перейдите в директорию проекта
cd ~/new_lottery_bot
Шаг 3: Создайте файл .env
nano .env
Добавьте следующие переменные:
# Telegram Bot
BOT_TOKEN=your_bot_token_here
# Database (PostgreSQL на этом же сервере)
DATABASE_URL=postgresql://trevor:password@localhost:5432/lottery_bot
# Администраторы (Telegram ID через запятую)
ADMIN_IDS=123456789,987654321
# Redis (опционально)
REDIS_URL=redis://localhost:6379/0
# Логирование
LOG_LEVEL=INFO
Важно: замените:
your_bot_token_hereна токен вашего бота из @BotFatherpasswordна пароль PostgreSQL пользователяtrevor123456789,987654321на реальные Telegram ID администраторов
Сохраните файл: Ctrl+X, затем Y, затем Enter
Шаг 4: Запустите скрипт развертывания
chmod +x scripts/deploy_server.sh
./scripts/deploy_server.sh
Скрипт автоматически:
- ✅ Проверит зависимости
- ✅ Создаст виртуальное окружение
- ✅ Установит dependencies из requirements.txt
- ✅ Проверит подключение к БД
- ✅ Запустит миграции
- ✅ Проверит конфигурацию
Шаг 5: Запустите бота
# Активируем виртуальное окружение
source venv/bin/activate
# Запускаем бота
python3 main.py
Если видите "✅ Bot started successfully!", значит всё работает!
📊 Детальные инструкции
1. Подготовка сервера
1.1 Установка необходимых пакетов
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv postgresql-client git
1.2 Проверка Python
python3 --version
# Должно быть 3.8 или выше
2. Подготовка PostgreSQL
2.1 Подключитесь к PostgreSQL
psql -h localhost -U postgres
2.2 Создайте пользователя и БД
-- Создание пользователя (если еще не существует)
CREATE USER trevor WITH PASSWORD 'your_secure_password';
-- Создание базы данных
CREATE DATABASE lottery_bot OWNER trevor;
-- Даем права
GRANT ALL PRIVILEGES ON DATABASE lottery_bot TO trevor;
GRANT ALL PRIVILEGES ON SCHEMA public TO trevor;
-- Выход
\q
2.3 Проверьте подключение
psql -h localhost -U trevor -d lottery_bot -c "SELECT 1"
Должен вернуть результат без ошибок.
3. Клонирование/обновление приложения
# Если еще не скачно
git clone <ваш-репозиторий> new_lottery_bot
cd new_lottery_bot
# Или если уже есть, обновить
cd new_lottery_bot
git pull origin main
4. Конфигурация приложения
4.1 Создайте .env файл
cat > .env << 'EOL'
BOT_TOKEN=your_bot_token
DATABASE_URL=postgresql://trevor:password@localhost:5432/lottery_bot
ADMIN_IDS=123456789
LOG_LEVEL=INFO
EOL
4.2 Проверьте содержимое .env
cat .env
5. Запуск развертывания
# Сделайте скрипт исполняемым
chmod +x scripts/deploy_server.sh
# Запустите скрипт
./scripts/deploy_server.sh
6. Запуск бота
Вариант 1: Директный запуск (тестирование)
source venv/bin/activate
python3 main.py
Вариант 2: Фоновый запуск (screen)
source venv/bin/activate
screen -S lottery-bot
python3 main.py
# Нажмите Ctrl+A, затем D для отключения от session
Для повторного подключения:
screen -r lottery-bot
Вариант 3: Systemd сервис (рекомендуется для production)
Создайте файл /etc/systemd/system/lottery-bot.service:
sudo nano /etc/systemd/system/lottery-bot.service
Содержимое:
[Unit]
Description=Lottery Bot Telegram
After=network.target postgresql.service
[Service]
Type=simple
User=trevor
WorkingDirectory=/home/trevor/new_lottery_bot
Environment="PATH=/home/trevor/new_lottery_bot/venv/bin"
ExecStart=/home/trevor/new_lottery_bot/venv/bin/python3 main.py
Restart=on-failure
RestartSec=10
StandardOutput=append:/home/trevor/new_lottery_bot/logs/bot.log
StandardError=append:/home/trevor/new_lottery_bot/logs/bot.log
[Install]
WantedBy=multi-user.target
Запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable lottery-bot
sudo systemctl start lottery-bot
# Проверьте статус
sudo systemctl status lottery-bot
# Просмотр логов
sudo journalctl -u lottery-bot -f
🔍 Проверка и диагностика
Проверка подключения к БД
source venv/bin/activate
python3 << 'EOF'
from src.core.database import async_session_maker
from sqlalchemy import text
import asyncio
async def test():
async with async_session_maker() as session:
result = await session.execute(text("SELECT 1"))
print("✅ БД работает!")
asyncio.run(test())
EOF
Проверка работы бота
# Отправьте сообщение боту
# Если бот отвечает - всё работает!
Просмотр логов
# Разовый запуск с логами
source venv/bin/activate
python3 main.py 2>&1 | tee logs/bot.log
# На фоне (systemd)
sudo journalctl -u lottery-bot -n 50 -f
Устранение проблем
Проблема: "ModuleNotFoundError"
source venv/bin/activate
pip3 install -r requirements.txt
Проблема: "Connection refused" (БД)
# Проверьте, работает ли PostgreSQL
sudo systemctl status postgresql
# Проверьте переменную DATABASE_URL в .env
cat .env | grep DATABASE_URL
Проблема: "Bot token is invalid"
# Проверьте токен в .env
cat .env | grep BOT_TOKEN
# Получите новый токен от @BotFather
📈 Масштабирование и Production
Использование Docker (рекомендуется)
# Убедитесь, что Docker установлен
docker --version
docker-compose --version
# Запустите в Docker
docker-compose up -d
# Просмотр логов
docker-compose logs -f lottery-bot
# Остановка
docker-compose down
Настройка reverse proxy (Nginx)
Для API или веб-интерфейса (если добавится):
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Резервное копирование БД
# Ежедневное резервное копирование
0 3 * * * /home/trevor/new_lottery_bot/scripts/backup_db.sh
🆘 Контакты и помощь
- Документация проекта:
docs/директория - Система управления администраторами:
docs/ADMIN_MANAGEMENT_SYSTEM.md - Логи приложения:
logs/директория
✅ Чек-лист развертывания
- Python 3 установлен
- PostgreSQL установлен и работает
- БД
lottery_botсоздана - Пользователь
trevorсоздан с правами - Проект клонирован/обновлен
- Файл
.envсоздан с корректными данными - Скрипт
deploy_server.shзапущен успешно - Миграции БД завершены
- Бот запущен и отвечает на сообщения
- Логирование работает
После завершения всех пунктов - приложение готово к использованию! 🎉