Files
new_lottery_bot/docs/SERVER_DEPLOYMENT.md
Andrew K. Choi e1b4465f89
Some checks failed
continuous-integration/drone/pr Build is failing
feat: Add admin management system with super admin controls
- 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
2026-02-18 13:19:26 +09:00

375 lines
8.7 KiB
Markdown
Raw Permalink 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.

# Гайд развертывания на сервере 192.168.0.103
## 🚀 Быстрый старт (5 минут)
### Шаг 1: Подключитесь к серверу по SSH
```bash
ssh trevor@192.168.0.103
# Пароль: R0sebud
```
### Шаг 2: Перейдите в директорию проекта
```bash
cd ~/new_lottery_bot
```
### Шаг 3: Создайте файл .env
```bash
nano .env
```
Добавьте следующие переменные:
```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` на токен вашего бота из @BotFather
- `password` на пароль PostgreSQL пользователя `trevor`
- `123456789,987654321` на реальные Telegram ID администраторов
Сохраните файл: `Ctrl+X`, затем `Y`, затем `Enter`
### Шаг 4: Запустите скрипт развертывания
```bash
chmod +x scripts/deploy_server.sh
./scripts/deploy_server.sh
```
Скрипт автоматически:
- ✅ Проверит зависимости
- ✅ Создаст виртуальное окружение
- ✅ Установит dependencies из requirements.txt
- ✅ Проверит подключение к БД
- ✅ Запустит миграции
- ✅ Проверит конфигурацию
### Шаг 5: Запустите бота
```bash
# Активируем виртуальное окружение
source venv/bin/activate
# Запускаем бота
python3 main.py
```
Если видите "✅ Bot started successfully!", значит всё работает!
---
## 📊 Детальные инструкции
### 1. Подготовка сервера
#### 1.1 Установка необходимых пакетов
```bash
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv postgresql-client git
```
#### 1.2 Проверка Python
```bash
python3 --version
# Должно быть 3.8 или выше
```
### 2. Подготовка PostgreSQL
#### 2.1 Подключитесь к PostgreSQL
```bash
psql -h localhost -U postgres
```
#### 2.2 Создайте пользователя и БД
```sql
-- Создание пользователя (если еще не существует)
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 Проверьте подключение
```bash
psql -h localhost -U trevor -d lottery_bot -c "SELECT 1"
```
Должен вернуть результат без ошибок.
### 3. Клонирование/обновление приложения
```bash
# Если еще не скачно
git clone <ваш-репозиторий> new_lottery_bot
cd new_lottery_bot
# Или если уже есть, обновить
cd new_lottery_bot
git pull origin main
```
### 4. Конфигурация приложения
#### 4.1 Создайте .env файл
```bash
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
```bash
cat .env
```
### 5. Запуск развертывания
```bash
# Сделайте скрипт исполняемым
chmod +x scripts/deploy_server.sh
# Запустите скрипт
./scripts/deploy_server.sh
```
### 6. Запуск бота
#### Вариант 1: Директный запуск (тестирование)
```bash
source venv/bin/activate
python3 main.py
```
#### Вариант 2: Фоновый запуск (screen)
```bash
source venv/bin/activate
screen -S lottery-bot
python3 main.py
# Нажмите Ctrl+A, затем D для отключения от session
```
Для повторного подключения:
```bash
screen -r lottery-bot
```
#### Вариант 3: Systemd сервис (рекомендуется для production)
Создайте файл `/etc/systemd/system/lottery-bot.service`:
```bash
sudo nano /etc/systemd/system/lottery-bot.service
```
Содержимое:
```ini
[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
```
Запустите сервис:
```bash
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
```
---
## 🔍 Проверка и диагностика
### Проверка подключения к БД
```bash
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
```
### Проверка работы бота
```bash
# Отправьте сообщение боту
# Если бот отвечает - всё работает!
```
### Просмотр логов
```bash
# Разовый запуск с логами
source venv/bin/activate
python3 main.py 2>&1 | tee logs/bot.log
# На фоне (systemd)
sudo journalctl -u lottery-bot -n 50 -f
```
### Устранение проблем
#### Проблема: "ModuleNotFoundError"
```bash
source venv/bin/activate
pip3 install -r requirements.txt
```
#### Проблема: "Connection refused" (БД)
```bash
# Проверьте, работает ли PostgreSQL
sudo systemctl status postgresql
# Проверьте переменную DATABASE_URL в .env
cat .env | grep DATABASE_URL
```
#### Проблема: "Bot token is invalid"
```bash
# Проверьте токен в .env
cat .env | grep BOT_TOKEN
# Получите новый токен от @BotFather
```
---
## 📈 Масштабирование и Production
### Использование Docker (рекомендуется)
```bash
# Убедитесь, что Docker установлен
docker --version
docker-compose --version
# Запустите в Docker
docker-compose up -d
# Просмотр логов
docker-compose logs -f lottery-bot
# Остановка
docker-compose down
```
### Настройка reverse proxy (Nginx)
Для API или веб-интерфейса (если добавится):
```nginx
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;
}
}
```
### Резервное копирование БД
```bash
# Ежедневное резервное копирование
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` запущен успешно
- [ ] Миграции БД завершены
- [ ] Бот запущен и отвечает на сообщения
- [ ] Логирование работает
После завершения всех пунктов - приложение готово к использованию! 🎉