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