Files
siemens_ragas/start.sh

95 lines
3.0 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# start.sh — 启动 Siemens RAGAS Web 服务(后台运行)
# 前提:已执行过 deploy.sh.venv 和依赖均已就绪)
# 用法bash start.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# ── 颜色输出 ──────────────────────────────────────────────────────
if [ -t 1 ]; then
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; CYAN='\033[0;36m'; NC='\033[0m'
else
GREEN=''; YELLOW=''; RED=''; CYAN=''; NC=''
fi
ok() { echo -e "${GREEN}[OK]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
err() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
echo ""
echo -e "${CYAN}============================================================${NC}"
echo -e "${CYAN} Siemens RAGAS Console — 启动服务${NC}"
echo -e "${CYAN}============================================================${NC}"
echo ""
# 检查虚拟环境
if [ ! -f ".venv/bin/python" ]; then
err "未找到 .venv请先执行部署bash deploy.sh"
exit 1
fi
PYTHON=".venv/bin/python"
# 检查 .env
if [ ! -f ".env" ]; then
warn ".env 不存在,请先复制并编辑配置:"
warn " cp .env.example .env && nano .env"
fi
if grep -q "your-api-key" .env 2>/dev/null; then
warn ".env 中仍包含默认占位符,部分功能(评估执行)将不可用"
fi
# 检查是否已有运行中的进程
if [ -f ".server.pid" ]; then
EXISTING_PID=$(cat .server.pid)
if kill -0 "$EXISTING_PID" 2>/dev/null; then
warn "服务已在运行 (PID=$EXISTING_PID),无需重复启动"
warn "如需重启请先执行bash stop.sh"
exit 0
else
# PID 文件残留,清理
rm -f .server.pid
fi
fi
# 创建必要目录
mkdir -p logs
# 端口检测
PORT=8800
if ss -tlnp 2>/dev/null | grep -q ":$PORT " || netstat -tlnp 2>/dev/null | grep -q ":$PORT "; then
warn "端口 $PORT 已被占用,尝试 8801..."
PORT=8801
if ss -tlnp 2>/dev/null | grep -q ":$PORT " || netstat -tlnp 2>/dev/null | grep -q ":$PORT "; then
err "端口 8800 和 8801 均被占用,请手动指定端口:"
err " .venv/bin/python webmain.py --host 0.0.0.0 --port <PORT>"
exit 1
fi
fi
# 后台启动
nohup "$PYTHON" webmain.py --host 0.0.0.0 --port "$PORT" >> logs/server.log 2>&1 &
SERVER_PID=$!
echo "$SERVER_PID" > .server.pid
# 等待 3 秒验证进程存活
sleep 3
if kill -0 "$SERVER_PID" 2>/dev/null; then
ok "服务已启动 (PID=$SERVER_PID)"
echo ""
echo -e "${CYAN} 访问地址: http://$(hostname -I | awk '{print $1}'):${PORT}${NC}"
echo -e "${CYAN} 本机访问: http://127.0.0.1:${PORT}${NC}"
echo -e "${CYAN} 查看日志: tail -f logs/server.log${NC}"
echo -e "${CYAN} 停止服务: bash stop.sh${NC}"
echo ""
else
err "服务启动失败,请查看日志:"
err " tail -20 logs/server.log"
rm -f .server.pid
exit 1
fi