feat: Add review events persistence, version display, and auto-versioning system

This commit is contained in:
Primakov Alexandr Alexandrovich
2025-10-13 14:18:37 +03:00
parent cfba28f913
commit 2db1225618
56 changed files with 750 additions and 436 deletions
+522
View File
@@ -0,0 +1,522 @@
# 🐧 Развертывание на Ubuntu с Systemd
Руководство по развертыванию AI Code Review Platform на Ubuntu Server с systemd.
---
## 🚀 Быстрая установка
### Одна команда:
```bash
sudo ./deploy-ubuntu.sh
```
Скрипт автоматически:
- ✅ Установит зависимости (Python, Node.js)
- ✅ Соберет frontend
- ✅ Создаст systemd service
- ✅ Настроит логирование
- ✅ Запустит сервис
- ✅ (Опционально) Настроит nginx
---
## 📋 Требования
### Системные требования:
- **OS:** Ubuntu 20.04+ / Debian 11+
- **Python:** 3.10+
- **Node.js:** 18+
- **RAM:** минимум 2GB
- **Disk:** минимум 5GB
### Права:
Скрипт должен быть запущен с **sudo**
---
## 🔧 Пошаговая установка
### 1. Клонирование репозитория
```bash
cd ~
git clone <repository-url>
cd platform/review
```
### 2. Подготовка скрипта
```bash
chmod +x deploy-ubuntu.sh
chmod +x uninstall-ubuntu.sh
```
### 3. Запуск установки
```bash
sudo ./deploy-ubuntu.sh
```
### 4. Следуйте инструкциям
Скрипт спросит:
- Установить ли nginx?
- Доменное имя (для nginx)
---
## 📁 Структура после установки
```
/opt/ai-review/ # Основная директория
├── backend/
│ ├── app/
│ ├── public/ # Frontend build
│ ├── venv/ # Python venv
│ ├── .env # Конфигурация
│ └── review.db # База данных
├── frontend/
└── ...
/var/log/ai-review/ # Логи
├── access.log
└── error.log
/etc/systemd/system/ # Systemd
└── ai-review.service
/etc/nginx/ # Nginx (опционально)
└── sites-available/
└── ai-review
```
---
## ⚙️ Конфигурация
### Редактирование .env:
```bash
sudo nano /opt/ai-review/backend/.env
```
**Обязательно настройте:**
```bash
# Ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:7b
# Мастер токены
MASTER_GITEA_TOKEN=your_token_here
MASTER_GITHUB_TOKEN=your_token_here
# Ключ шифрования (уже создан)
ENCRYPTION_KEY=...
```
**После изменений:**
```bash
sudo systemctl restart ai-review
```
---
## 🔄 Управление сервисом
### Systemd команды:
```bash
# Статус
sudo systemctl status ai-review
# Запуск
sudo systemctl start ai-review
# Остановка
sudo systemctl stop ai-review
# Перезапуск
sudo systemctl restart ai-review
# Автозапуск при загрузке
sudo systemctl enable ai-review
# Отключить автозапуск
sudo systemctl disable ai-review
```
---
## 📊 Мониторинг
### Просмотр логов:
**Systemd журнал:**
```bash
# Последние 50 строк
sudo journalctl -u ai-review -n 50
# В реальном времени
sudo journalctl -u ai-review -f
# Только ошибки
sudo journalctl -u ai-review -p err
```
**Файлы логов:**
```bash
# Access log
tail -f /var/log/ai-review/access.log
# Error log
tail -f /var/log/ai-review/error.log
# Последние 100 строк
tail -n 100 /var/log/ai-review/error.log
```
### Проверка состояния:
```bash
# Health check
curl http://localhost:8000/health
# API
curl http://localhost:8000/api/repositories
# Статус процесса
ps aux | grep uvicorn
```
---
## 🌐 Nginx как Reverse Proxy
### Конфигурация создается автоматически:
```nginx
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /ws {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
```
### Ручная настройка nginx:
```bash
# Редактировать конфиг
sudo nano /etc/nginx/sites-available/ai-review
# Проверить синтаксис
sudo nginx -t
# Перезагрузить nginx
sudo systemctl reload nginx
```
---
## 🔒 SSL/HTTPS с Let's Encrypt
### Установка Certbot:
```bash
sudo apt-get install certbot python3-certbot-nginx
```
### Получение сертификата:
```bash
sudo certbot --nginx -d yourdomain.com
```
Certbot автоматически настроит nginx для HTTPS!
### Автопродление:
```bash
# Проверка таймера
sudo systemctl status certbot.timer
# Тестовое продление
sudo certbot renew --dry-run
```
---
## 🔥 Firewall
### UFW (Ubuntu Firewall):
```bash
# Разрешить SSH
sudo ufw allow 22
# Разрешить HTTP
sudo ufw allow 80
# Разрешить HTTPS
sudo ufw allow 443
# Включить firewall
sudo ufw enable
# Статус
sudo ufw status
```
---
## 🔧 Troubleshooting
### Сервис не запускается:
```bash
# Проверить логи
sudo journalctl -u ai-review -n 100
# Проверить статус
sudo systemctl status ai-review
# Проверить права
ls -la /opt/ai-review/backend/
# Проверить .env
cat /opt/ai-review/backend/.env
```
### База данных не создается:
```bash
# Проверить права на директорию
sudo chown -R $USER:$USER /opt/ai-review/backend/
# Пересоздать БД
rm /opt/ai-review/backend/review.db
sudo systemctl restart ai-review
```
### Ollama недоступен:
```bash
# Проверить Ollama
curl http://localhost:11434/api/version
# Установить Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Скачать модель
ollama pull mistral:7b
```
### Nginx ошибка:
```bash
# Проверить конфигурацию
sudo nginx -t
# Проверить логи nginx
sudo tail -f /var/log/nginx/error.log
# Проверить что backend работает
curl http://localhost:8000/health
```
### Нет места на диске:
```bash
# Проверить место
df -h
# Очистить старые логи
sudo journalctl --vacuum-time=7d
# Очистить логи приложения
sudo truncate -s 0 /var/log/ai-review/*.log
```
---
## 📦 Обновление
### Автоматическое обновление:
```bash
cd /opt/ai-review
sudo git pull
sudo ./deploy-ubuntu.sh
```
### Ручное обновление:
```bash
# 1. Остановить сервис
sudo systemctl stop ai-review
# 2. Обновить код
cd /opt/ai-review
sudo git pull
# 3. Пересобрать frontend
cd frontend
npm install
npm run build
# 4. Обновить Python зависимости
cd ../backend
source venv/bin/activate
pip install -r requirements.txt
deactivate
# 5. Запустить сервис
sudo systemctl start ai-review
```
---
## 🗑️ Удаление
### Полное удаление:
```bash
sudo ./uninstall-ubuntu.sh
```
Это удалит:
- Systemd service
- Все файлы в `/opt/ai-review`
- Nginx конфигурацию
- Логи
---
## 📊 Мониторинг производительности
### Использование ресурсов:
```bash
# CPU и память
top -p $(pgrep -f "uvicorn app.main")
# Детальная информация
htop
# Использование диска
du -sh /opt/ai-review/*
```
### Systemd ресурсы:
```bash
# Статистика сервиса
systemctl show ai-review --property=CPUUsageNSec
systemctl show ai-review --property=MemoryCurrent
```
---
## 🔄 Backup
### Создание резервной копии:
```bash
#!/bin/bash
# backup.sh
BACKUP_DIR="/backup/ai-review"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# Резервная копия БД
cp /opt/ai-review/backend/review.db \
"$BACKUP_DIR/review_$DATE.db"
# Резервная копия .env
cp /opt/ai-review/backend/.env \
"$BACKUP_DIR/env_$DATE"
# Сжать старые бэкапы
find "$BACKUP_DIR" -name "*.db" -mtime +7 -exec gzip {} \;
echo "Backup создан: $BACKUP_DIR/review_$DATE.db"
```
### Автоматический backup через cron:
```bash
# Редактировать crontab
sudo crontab -e
# Добавить строку (каждый день в 3:00)
0 3 * * * /opt/ai-review/backup.sh
```
---
## ✅ Checklist после установки
- [ ] Сервис запущен (`systemctl status ai-review`)
- [ ] Health check работает (`curl localhost:8000/health`)
- [ ] Frontend открывается в браузере
- [ ] Настроен .env с токенами
- [ ] Ollama запущен и модель скачана
- [ ] Nginx настроен (если используется)
- [ ] SSL сертификат получен (если нужен)
- [ ] Firewall настроен
- [ ] Логи пишутся (`tail -f /var/log/ai-review/access.log`)
- [ ] Автозапуск включен (`systemctl is-enabled ai-review`)
- [ ] Backup настроен
---
## 📞 Поддержка
Если возникли проблемы:
1. Проверьте логи: `sudo journalctl -u ai-review -n 100`
2. Проверьте конфигурацию: `cat /opt/ai-review/backend/.env`
3. Проверьте статус: `sudo systemctl status ai-review`
4. Откройте issue в репозитории
---
## 🎉 Готово!
Сервис развернут и готов к работе!
**Доступ:**
- Local: http://localhost:8000
- External: http://your-domain.com
**Управление:**
```bash
sudo systemctl {start|stop|restart|status} ai-review
```
**Логи:**
```bash
sudo journalctl -u ai-review -f
```
**Наслаждайтесь автоматическим ревью кода! 🚀**