code-review-agent/UBUNTU_DEPLOYMENT.md
Primakov Alexandr Alexandrovich 48fbb5bcb3 Add deployment script and documentation for Ubuntu setup
- Introduced `deploy-ubuntu.sh` for automated deployment of the AI Code Review Platform on Ubuntu with systemd.
- Added `UBUNTU_DEPLOYMENT.md` for detailed deployment instructions and requirements.
- Updated `README.md` to include quick deployment instructions and features of the new script.
- Created `uninstall-ubuntu.sh` for easy removal of the platform and its components.
- Enhanced logging and configuration setup within the deployment script.
2025-10-12 23:39:59 +03:00

10 KiB
Raw Permalink Blame History

🐧 Развертывание на Ubuntu с Systemd

Руководство по развертыванию AI Code Review Platform на Ubuntu Server с systemd.


🚀 Быстрая установка

Одна команда:

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. Клонирование репозитория

cd ~
git clone <repository-url>
cd platform/review

2. Подготовка скрипта

chmod +x deploy-ubuntu.sh
chmod +x uninstall-ubuntu.sh

3. Запуск установки

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:

sudo nano /opt/ai-review/backend/.env

Обязательно настройте:

# 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=...

После изменений:

sudo systemctl restart ai-review

🔄 Управление сервисом

Systemd команды:

# Статус
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 журнал:

# Последние 50 строк
sudo journalctl -u ai-review -n 50

# В реальном времени
sudo journalctl -u ai-review -f

# Только ошибки
sudo journalctl -u ai-review -p err

Файлы логов:

# 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

Проверка состояния:

# Health check
curl http://localhost:8000/health

# API
curl http://localhost:8000/api/repositories

# Статус процесса
ps aux | grep uvicorn

🌐 Nginx как Reverse Proxy

Конфигурация создается автоматически:

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:

# Редактировать конфиг
sudo nano /etc/nginx/sites-available/ai-review

# Проверить синтаксис
sudo nginx -t

# Перезагрузить nginx
sudo systemctl reload nginx

🔒 SSL/HTTPS с Let's Encrypt

Установка Certbot:

sudo apt-get install certbot python3-certbot-nginx

Получение сертификата:

sudo certbot --nginx -d yourdomain.com

Certbot автоматически настроит nginx для HTTPS!

Автопродление:

# Проверка таймера
sudo systemctl status certbot.timer

# Тестовое продление
sudo certbot renew --dry-run

🔥 Firewall

UFW (Ubuntu Firewall):

# Разрешить SSH
sudo ufw allow 22

# Разрешить HTTP
sudo ufw allow 80

# Разрешить HTTPS
sudo ufw allow 443

# Включить firewall
sudo ufw enable

# Статус
sudo ufw status

🔧 Troubleshooting

Сервис не запускается:

# Проверить логи
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

База данных не создается:

# Проверить права на директорию
sudo chown -R $USER:$USER /opt/ai-review/backend/

# Пересоздать БД
rm /opt/ai-review/backend/review.db
sudo systemctl restart ai-review

Ollama недоступен:

# Проверить Ollama
curl http://localhost:11434/api/version

# Установить Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Скачать модель
ollama pull mistral:7b

Nginx ошибка:

# Проверить конфигурацию
sudo nginx -t

# Проверить логи nginx
sudo tail -f /var/log/nginx/error.log

# Проверить что backend работает
curl http://localhost:8000/health

Нет места на диске:

# Проверить место
df -h

# Очистить старые логи
sudo journalctl --vacuum-time=7d

# Очистить логи приложения
sudo truncate -s 0 /var/log/ai-review/*.log

📦 Обновление

Автоматическое обновление:

cd /opt/ai-review
sudo git pull
sudo ./deploy-ubuntu.sh

Ручное обновление:

# 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

🗑️ Удаление

Полное удаление:

sudo ./uninstall-ubuntu.sh

Это удалит:

  • Systemd service
  • Все файлы в /opt/ai-review
  • Nginx конфигурацию
  • Логи

📊 Мониторинг производительности

Использование ресурсов:

# CPU и память
top -p $(pgrep -f "uvicorn app.main")

# Детальная информация
htop

# Использование диска
du -sh /opt/ai-review/*

Systemd ресурсы:

# Статистика сервиса
systemctl show ai-review --property=CPUUsageNSec
systemctl show ai-review --property=MemoryCurrent

🔄 Backup

Создание резервной копии:

#!/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:

# Редактировать 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 в репозитории

🎉 Готово!

Сервис развернут и готов к работе!

Доступ:

Управление:

sudo systemctl {start|stop|restart|status} ai-review

Логи:

sudo journalctl -u ai-review -f

Наслаждайтесь автоматическим ревью кода! 🚀