- 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.
10 KiB
10 KiB
🐧 Развертывание на 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 настроен
📞 Поддержка
Если возникли проблемы:
- Проверьте логи:
sudo journalctl -u ai-review -n 100 - Проверьте конфигурацию:
cat /opt/ai-review/backend/.env - Проверьте статус:
sudo systemctl status ai-review - Откройте issue в репозитории
🎉 Готово!
Сервис развернут и готов к работе!
Доступ:
- Local: http://localhost:8000
- External: http://your-domain.com
Управление:
sudo systemctl {start|stop|restart|status} ai-review
Логи:
sudo journalctl -u ai-review -f
Наслаждайтесь автоматическим ревью кода! 🚀