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"
|
||
|