107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | ||
| 
 | ||
| # Скрипт для исправления systemd service (python -> python3)
 | ||
| 
 | ||
| set -e
 | ||
| 
 | ||
| # Проверка sudo
 | ||
| if [ "$EUID" -ne 0 ]; then 
 | ||
|     echo "❌ Этот скрипт должен быть запущен с sudo"
 | ||
|     echo "Используйте: sudo bash fix-service-python3.sh"
 | ||
|     exit 1
 | ||
| fi
 | ||
| 
 | ||
| echo "🔧 Исправление ai-review.service..."
 | ||
| 
 | ||
| # Получаем реального пользователя
 | ||
| REAL_USER=${SUDO_USER:-$USER}
 | ||
| REAL_HOME=$(eval echo ~$REAL_USER)
 | ||
| 
 | ||
| # Определяем директорию установки
 | ||
| INSTALL_DIR=""
 | ||
| 
 | ||
| if [ -f "/etc/systemd/system/ai-review.service" ]; then
 | ||
|     # Извлекаем путь из существующего service файла
 | ||
|     INSTALL_DIR=$(grep "WorkingDirectory=" /etc/systemd/system/ai-review.service | cut -d'=' -f2 | sed 's|/backend||')
 | ||
|     echo "📂 Найдена директория установки: $INSTALL_DIR"
 | ||
| else
 | ||
|     echo "❌ Service файл не найден"
 | ||
|     exit 1
 | ||
| fi
 | ||
| 
 | ||
| # Проверяем что директория существует
 | ||
| if [ ! -d "$INSTALL_DIR" ]; then
 | ||
|     echo "❌ Директория $INSTALL_DIR не существует"
 | ||
|     exit 1
 | ||
| fi
 | ||
| 
 | ||
| # Проверяем что venv существует
 | ||
| if [ ! -f "$INSTALL_DIR/backend/venv/bin/python3" ]; then
 | ||
|     echo "❌ Python3 в venv не найден: $INSTALL_DIR/backend/venv/bin/python3"
 | ||
|     echo ""
 | ||
|     echo "Создайте venv заново:"
 | ||
|     echo "  cd $INSTALL_DIR/backend"
 | ||
|     echo "  python3 -m venv venv"
 | ||
|     echo "  source venv/bin/activate"
 | ||
|     echo "  pip install -r requirements.txt"
 | ||
|     exit 1
 | ||
| fi
 | ||
| 
 | ||
| echo "✅ venv найден"
 | ||
| 
 | ||
| # Создаем новый service файл
 | ||
| echo "📝 Создание нового service файла..."
 | ||
| 
 | ||
| cat > /etc/systemd/system/ai-review.service << EOF
 | ||
| [Unit]
 | ||
| Description=AI Code Review Platform
 | ||
| After=network.target
 | ||
| 
 | ||
| [Service]
 | ||
| Type=simple
 | ||
| User=$REAL_USER
 | ||
| Group=$REAL_USER
 | ||
| WorkingDirectory=$INSTALL_DIR/backend
 | ||
| Environment="PATH=$INSTALL_DIR/backend/venv/bin:/usr/local/bin:/usr/bin:/bin"
 | ||
| ExecStart=$INSTALL_DIR/backend/venv/bin/python3 -m uvicorn app.main:app --host 0.0.0.0 --port 8000
 | ||
| Restart=always
 | ||
| RestartSec=10
 | ||
| StandardOutput=append:/var/log/ai-review/access.log
 | ||
| StandardError=append:/var/log/ai-review/error.log
 | ||
| 
 | ||
| [Install]
 | ||
| WantedBy=multi-user.target
 | ||
| EOF
 | ||
| 
 | ||
| echo "✅ Service файл создан"
 | ||
| 
 | ||
| # Перезагружаем systemd
 | ||
| echo "🔄 Перезагрузка systemd..."
 | ||
| systemctl daemon-reload
 | ||
| 
 | ||
| # Перезапускаем сервис
 | ||
| echo "🔄 Перезапуск ai-review.service..."
 | ||
| systemctl restart ai-review
 | ||
| 
 | ||
| # Ждем немного
 | ||
| sleep 3
 | ||
| 
 | ||
| # Проверяем статус
 | ||
| if systemctl is-active --quiet ai-review; then
 | ||
|     echo ""
 | ||
|     echo "✅ Сервис успешно запущен!"
 | ||
|     echo ""
 | ||
|     systemctl status ai-review --no-pager
 | ||
| else
 | ||
|     echo ""
 | ||
|     echo "❌ Ошибка запуска сервиса"
 | ||
|     echo ""
 | ||
|     echo "Логи:"
 | ||
|     journalctl -u ai-review -n 30 --no-pager
 | ||
| fi
 | ||
| 
 | ||
| echo ""
 | ||
| echo "Для просмотра логов в реальном времени:"
 | ||
| echo "  sudo journalctl -u ai-review -f"
 | ||
| 
 |