Files
siemens_ragas/start.sh

95 lines
3.0 KiB
Bash
Raw Permalink Normal View History

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