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
375 lines
8.7 KiB
Markdown
375 lines
8.7 KiB
Markdown
# Гайд развертывания на сервере 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` запущен успешно
|
||
- [ ] Миграции БД завершены
|
||
- [ ] Бот запущен и отвечает на сообщения
|
||
- [ ] Логирование работает
|
||
|
||
После завершения всех пунктов - приложение готово к использованию! 🎉
|