# 🚀 Быстрое обновление на Ubuntu ## Важно! ⚠️ Скрипт `redeploy-ubuntu.sh` **требует bash**, не используйте `sh`. ## ✅ Правильный способ запуска: ```bash # Вариант 1: Через bash явно cd ~/code-review-agent # или /opt/ai-review sudo bash redeploy-ubuntu.sh # Вариант 2: Сделать исполняемым chmod +x redeploy-ubuntu.sh sudo ./redeploy-ubuntu.sh ``` ## ❌ Неправильно: ```bash sudo sh redeploy-ubuntu.sh # НЕ ИСПОЛЬЗУЙТЕ sh! ``` ## 🔧 Что исправлено: 1. ✅ Проверка наличия bash 2. ✅ Работа из любой директории проекта (не обязательно /opt/ai-review) 3. ✅ Backup создается в локальной директории `./backups/` 4. ✅ Работает без systemd сервиса (для dev окружения) 5. ✅ Не требует интерактивного подтверждения для non-git репозиториев 6. ✅ Более надежная обработка ошибок ## 📋 Workflow обновления: ### 1. Подготовка (на локальной машине): ```bash # Внести изменения в код git add . git commit -m "Update feature" git push ``` ### 2. На сервере: ```bash # Зайти на сервер ssh user@your-server # Перейти в директорию проекта cd ~/code-review-agent # или где у вас установлен проект # Обновить код (если git) git pull # ИЛИ скопировать новые файлы вручную: # scp -r ./backend user@server:~/code-review-agent/ # scp -r ./frontend user@server:~/code-review-agent/ # Запустить redeploy sudo bash redeploy-ubuntu.sh ``` ### 3. Проверка: ```bash # Проверить статус systemctl status ai-review # Или если без systemd: ps aux | grep uvicorn # Проверить логи journalctl -u ai-review -f # Или: tail -f nohup.out ``` ## 🐛 Troubleshooting: ### Ошибка: "This script requires bash" ```bash # Используйте bash явно sudo bash redeploy-ubuntu.sh ``` ### Ошибка: Permission denied при создании backup Это нормально - скрипт создаст backup в локальной директории `./backups/` ### Ошибка: Service не найден Это нормально если вы не устанавливали systemd сервис. Скрипт все равно соберет проект. ### Frontend не собрался ```bash cd frontend rm -rf node_modules npm install npm run build ``` ### Backend зависимости не установились ```bash cd backend source venv/bin/activate pip install --upgrade pip pip install -r requirements.txt ``` ## 📊 Что делает скрипт: 1. **Останавливает сервис** (если установлен в systemd) 2. **Создает backup БД** в `./backups/backup-YYYYMMDD-HHMMSS/` 3. **Обновляет код** через git pull (если это git репозиторий) 4. **Обновляет зависимости backend** (Python пакеты) 5. **Применяет миграции БД** (создает новые таблицы) 6. **Собирает frontend** (React → static files) 7. **Запускает сервис** (если установлен в systemd) ## 🎯 Быстрые команды: ```bash # Полное обновление cd ~/code-review-agent && git pull && sudo bash redeploy-ubuntu.sh # Только пересборка (без git pull) cd ~/code-review-agent && sudo bash redeploy-ubuntu.sh # Откат к предыдущей версии cd ~/code-review-agent sudo systemctl stop ai-review sudo cp backups/backup-YYYYMMDD-HHMMSS/review.db backend/ git reset --hard HEAD~1 sudo bash redeploy-ubuntu.sh ``` ## ✅ Готово! Скрипт теперь работает: - ✅ С bash (не sh) - ✅ Из любой директории проекта - ✅ Без интерактивных вопросов - ✅ С локальными backups - ✅ С или без systemd