- start.sh: Linux/macOS一键启动 (编译+后端+前端+健康检查) - start.bat: Windows批处理 (两个终端窗口) - Ctrl+C优雅退出,环境变量可覆盖
74 lines
2.2 KiB
Bash
Executable File
74 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
cd "$(dirname "$0")"
|
|
|
|
# ============================================
|
|
# Cyrene v2 — 一键启动脚本
|
|
# ============================================
|
|
|
|
# 默认环境变量(可通过 .env 或命令行覆盖)
|
|
export LLM_API_KEY="${LLM_API_KEY:-sk-test}"
|
|
export JWT_SECRET="${JWT_SECRET:-cyrene-v2-dev-secret-key-32bytes!!}"
|
|
export ADMIN_PASSWORD="${ADMIN_PASSWORD:-admin12345}"
|
|
|
|
BACKEND_DIR="./backend"
|
|
FRONTEND_DIR="./frontend/web"
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log() { echo -e "${GREEN}[cyrene]${NC} $1"; }
|
|
warn() { echo -e "${RED}[cyrene]${NC} $1"; }
|
|
|
|
# 清理函数
|
|
cleanup() {
|
|
log "正在关闭服务..."
|
|
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null
|
|
wait $BACKEND_PID $FRONTEND_PID 2>/dev/null
|
|
log "已退出"
|
|
}
|
|
trap cleanup EXIT INT TERM
|
|
|
|
# ---------- 后端 ----------
|
|
log "编译后端..."
|
|
cd "$BACKEND_DIR"
|
|
export PATH="/usr/lib/go-1.26/bin:$PATH"
|
|
go build -o cyrene ./cmd/cyrene/ 2>&1 || { warn "后端编译失败"; exit 1; }
|
|
|
|
log "启动后端 (http://localhost:8080)..."
|
|
./cyrene &
|
|
BACKEND_PID=$!
|
|
sleep 2
|
|
|
|
# 检查后端健康
|
|
if ! curl -s http://localhost:8080/api/v1/health > /dev/null 2>&1; then
|
|
warn "后端启动失败,请检查日志"
|
|
exit 1
|
|
fi
|
|
log "后端启动成功 ✓"
|
|
|
|
# ---------- 前端 ----------
|
|
cd "$OLDPWD/$FRONTEND_DIR"
|
|
log "安装前端依赖..."
|
|
npm install --registry=https://registry.npmmirror.com --silent 2>/dev/null || true
|
|
|
|
log "启动前端 (http://localhost:5173)..."
|
|
npx vite --host 0.0.0.0 &
|
|
FRONTEND_PID=$!
|
|
sleep 3
|
|
|
|
echo ""
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo -e "${BLUE} Cyrene v2 启动完成${NC}"
|
|
echo -e "${BLUE} 前端: http://localhost:5173${NC}"
|
|
echo -e "${BLUE} 后端: http://localhost:8080${NC}"
|
|
echo -e "${BLUE} 账号: admin / ${ADMIN_PASSWORD}${NC}"
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo ""
|
|
echo "按 Ctrl+C 停止所有服务"
|
|
|
|
# 等待任意进程退出
|
|
wait -n $BACKEND_PID $FRONTEND_PID 2>/dev/null
|