#!/bin/bash # Snowbike RAG - Запуск с автоперезапуском DIR="$(cd "$(dirname "$0")" && pwd)" LOG="$DIR/data/logs/flask.log" PIDFILE="$DIR/data/logs/flask.pid" # Проверить, не запущен ли уже Flask (по health endpoint) if curl -s http://localhost:5557/health > /dev/null 2>&1; then echo "✓ Flask уже запущен" exit 0 fi # Остановить старый bash-цикл если есть (чистим стale PID) if [ -f "$PIDFILE" ]; then OLD_PID=$(cat "$PIDFILE") kill "$OLD_PID" 2>/dev/null rm -f "$PIDFILE" fi # Запустить Meilisearch если не запущен if ! curl -s http://localhost:7700/health > /dev/null 2>&1; then nohup "$DIR/bin/meilisearch" \ --db-path "$DIR/data/meilisearch" \ --http-addr 127.0.0.1:7700 \ --no-analytics \ > "$DIR/data/logs/meilisearch.log" 2>&1 & sleep 2 fi # Запустить Flask с auto-restart nohup bash -c "while true; do cd '$DIR' '$DIR/venv/bin/python3' server.py >> '$LOG' 2>&1 echo '[\$(date)] Flask crashed, restarting in 3s...' >> '$LOG' sleep 3 done" > /dev/null 2>&1 & echo $! > "$PIDFILE" sleep 2 if curl -s http://localhost:5557/health > /dev/null 2>&1; then echo "✓ Snowbike RAG запущен" else echo "✗ Ошибка запуска, смотри $LOG" fi