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