# 🐧 Развертывание на 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 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 ``` **Наслаждайтесь автоматическим ревью кода! 🚀**