pre-deploy commit
This commit is contained in:
264
docs/PRODUCTION_DEPLOYMENT.md
Normal file
264
docs/PRODUCTION_DEPLOYMENT.md
Normal file
@@ -0,0 +1,264 @@
|
||||
# Инструкция по развертыванию Telegram Tinder Bot в Production
|
||||
|
||||
Это подробное руководство по развертыванию Telegram Tinder Bot в production-окружении с использованием Docker и Docker Compose.
|
||||
|
||||
## 📋 Требования
|
||||
|
||||
- **Операционная система**: Ubuntu 20.04 или выше (рекомендуется) / Windows Server с Docker
|
||||
- **Программное обеспечение**:
|
||||
- Docker (последняя версия)
|
||||
- Docker Compose (последняя версия)
|
||||
- Git
|
||||
|
||||
## 🚀 Быстрое развертывание
|
||||
|
||||
### 1. Клонирование репозитория
|
||||
|
||||
```bash
|
||||
git clone https://github.com/your-username/telegram-tinder-bot.git
|
||||
cd telegram-tinder-bot
|
||||
```
|
||||
|
||||
### 2. Настройка конфигурации
|
||||
|
||||
```bash
|
||||
# Создание файла конфигурации из шаблона
|
||||
cp .env.production .env
|
||||
|
||||
# Редактирование конфигурационного файла
|
||||
nano .env
|
||||
```
|
||||
|
||||
Важно указать следующие параметры:
|
||||
- `TELEGRAM_BOT_TOKEN`: токен от @BotFather
|
||||
- `DB_PASSWORD`: надежный пароль для базы данных
|
||||
- `JWT_SECRET`: случайная строка для JWT
|
||||
- `ENCRYPTION_KEY`: случайная строка для шифрования
|
||||
|
||||
### 3. Запуск деплоя
|
||||
|
||||
```bash
|
||||
# Сделайте скрипт исполняемым
|
||||
chmod +x deploy.sh
|
||||
|
||||
# Запустите деплой
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 🔧 Подробное руководство по установке
|
||||
|
||||
### Подготовка сервера Ubuntu
|
||||
|
||||
```bash
|
||||
# Обновление системы
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
|
||||
# Установка необходимых пакетов
|
||||
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common git
|
||||
|
||||
# Установка Docker
|
||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||
sudo sh get-docker.sh
|
||||
|
||||
# Добавление текущего пользователя в группу docker
|
||||
sudo usermod -aG docker ${USER}
|
||||
|
||||
# Установка Docker Compose
|
||||
sudo apt install -y docker-compose
|
||||
```
|
||||
|
||||
### Клонирование и настройка проекта
|
||||
|
||||
```bash
|
||||
# Создание директории для проекта
|
||||
mkdir -p /opt/telegram-tinder
|
||||
cd /opt/telegram-tinder
|
||||
|
||||
# Клонирование репозитория
|
||||
git clone https://github.com/your-username/telegram-tinder-bot.git .
|
||||
|
||||
# Настройка .env файла
|
||||
cp .env.production .env
|
||||
nano .env
|
||||
|
||||
# Создание директорий для данных и логов
|
||||
mkdir -p uploads logs
|
||||
chmod 777 uploads logs
|
||||
```
|
||||
|
||||
### Запуск проекта
|
||||
|
||||
```bash
|
||||
# Запуск в фоновом режиме
|
||||
docker-compose up -d
|
||||
|
||||
# Проверка статуса контейнеров
|
||||
docker-compose ps
|
||||
|
||||
# Просмотр логов
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
## 🔄 Обновление бота
|
||||
|
||||
Для обновления бота выполните:
|
||||
|
||||
```bash
|
||||
cd /путь/к/telegram-tinder-bot
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
Скрипт автоматически выполнит:
|
||||
1. Получение последних изменений из репозитория
|
||||
2. Перезапуск контейнеров с новой версией кода
|
||||
3. Применение миграций базы данных
|
||||
|
||||
## 🛡️ Обеспечение безопасности
|
||||
|
||||
### Настройка файрвола
|
||||
|
||||
```bash
|
||||
# Разрешение только необходимых портов
|
||||
sudo ufw allow 22/tcp
|
||||
sudo ufw allow 80/tcp
|
||||
sudo ufw allow 443/tcp
|
||||
sudo ufw enable
|
||||
```
|
||||
|
||||
### Настройка HTTPS с Let's Encrypt (опционально)
|
||||
|
||||
Для использования HTTPS с Let's Encrypt и Nginx:
|
||||
|
||||
```bash
|
||||
# Установка Certbot
|
||||
sudo apt install -y certbot python3-certbot-nginx
|
||||
|
||||
# Получение SSL-сертификата
|
||||
sudo certbot --nginx -d your-domain.com
|
||||
```
|
||||
|
||||
## 📊 Мониторинг и управление
|
||||
|
||||
### Просмотр логов
|
||||
|
||||
```bash
|
||||
# Логи всех контейнеров
|
||||
docker-compose logs -f
|
||||
|
||||
# Логи конкретного контейнера (например, бота)
|
||||
docker-compose logs -f bot
|
||||
|
||||
# Последние 100 строк логов
|
||||
docker-compose logs --tail=100 bot
|
||||
```
|
||||
|
||||
### Управление сервисами
|
||||
|
||||
```bash
|
||||
# Остановка всех контейнеров
|
||||
docker-compose down
|
||||
|
||||
# Перезапуск всех контейнеров
|
||||
docker-compose restart
|
||||
|
||||
# Перезапуск только бота
|
||||
docker-compose restart bot
|
||||
```
|
||||
|
||||
### Доступ к базе данных
|
||||
|
||||
```bash
|
||||
# Вход в консоль PostgreSQL
|
||||
docker-compose exec db psql -U postgres -d telegram_tinder_bot
|
||||
|
||||
# Резервное копирование базы данных
|
||||
docker-compose exec db pg_dump -U postgres telegram_tinder_bot > backup_$(date +%Y%m%d).sql
|
||||
|
||||
# Восстановление базы из резервной копии
|
||||
cat backup.sql | docker-compose exec -T db psql -U postgres -d telegram_tinder_bot
|
||||
```
|
||||
|
||||
## 🔍 Устранение неполадок
|
||||
|
||||
### Проверка работоспособности
|
||||
|
||||
```bash
|
||||
# Проверка API бота
|
||||
curl http://localhost:3000/health
|
||||
|
||||
# Проверка подключения к базе данных
|
||||
docker-compose exec bot node -e "const { Client } = require('pg'); const client = new Client({ host: 'db', port: 5432, database: 'telegram_tinder_bot', user: 'postgres', password: process.env.DB_PASSWORD }); client.connect().then(() => { console.log('Connected to DB!'); client.end(); }).catch(e => console.error(e));"
|
||||
```
|
||||
|
||||
### Общие проблемы и решения
|
||||
|
||||
**Проблема**: Бот не отвечает в Telegram
|
||||
**Решение**:
|
||||
- Проверьте валидность токена бота
|
||||
- Проверьте логи на наличие ошибок: `docker-compose logs -f bot`
|
||||
|
||||
**Проблема**: Ошибки подключения к базе данных
|
||||
**Решение**:
|
||||
- Проверьте настройки подключения в `.env`
|
||||
- Убедитесь, что контейнер с базой данных запущен: `docker-compose ps`
|
||||
- Проверьте логи базы данных: `docker-compose logs db`
|
||||
|
||||
**Проблема**: Недостаточно свободного места на диске
|
||||
**Решение**:
|
||||
- Очистите неиспользуемые Docker образы: `docker image prune -a`
|
||||
- Очистите неиспользуемые Docker тома: `docker volume prune`
|
||||
|
||||
## 🔁 Настройка автоматического обновления
|
||||
|
||||
### Настройка автообновления через Cron
|
||||
|
||||
```bash
|
||||
# Редактирование crontab
|
||||
crontab -e
|
||||
|
||||
# Добавление задачи (обновление каждую ночь в 3:00)
|
||||
0 3 * * * cd /путь/к/telegram-tinder-bot && ./deploy.sh > /tmp/tg-tinder-update.log 2>&1
|
||||
```
|
||||
|
||||
## 📝 Рекомендации по обслуживанию
|
||||
|
||||
1. **Регулярное резервное копирование**:
|
||||
```bash
|
||||
# Ежедневное резервное копирование через cron
|
||||
0 2 * * * docker-compose exec -T db pg_dump -U postgres telegram_tinder_bot > /path/to/backups/tg_$(date +\%Y\%m\%d).sql
|
||||
```
|
||||
|
||||
2. **Мониторинг использования ресурсов**:
|
||||
```bash
|
||||
# Просмотр использования ресурсов контейнерами
|
||||
docker stats
|
||||
```
|
||||
|
||||
3. **Обновление Docker образов**:
|
||||
```bash
|
||||
# Обновление образов
|
||||
docker-compose pull
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
4. **Проверка журналов на наличие ошибок**:
|
||||
```bash
|
||||
# Поиск ошибок в логах
|
||||
docker-compose logs | grep -i error
|
||||
docker-compose logs | grep -i exception
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 Контрольный список деплоя
|
||||
|
||||
- [ ] Установлены Docker и Docker Compose
|
||||
- [ ] Клонирован репозиторий
|
||||
- [ ] Настроен файл .env с реальными данными
|
||||
- [ ] Запущены контейнеры через docker-compose
|
||||
- [ ] Проверено подключение бота к Telegram API
|
||||
- [ ] Настроено резервное копирование
|
||||
- [ ] Настроен файрвол и безопасность сервера
|
||||
- [ ] Проверены и настроены логи
|
||||
- [ ] (Опционально) Настроен SSL для веб-интерфейса
|
||||
- [ ] (Опционально) Настроено автоматическое обновление
|
||||
Reference in New Issue
Block a user