Files
Cyrene_v2/start.sh
T
Aska 78c5f0f1b0 chore: add cross-platform startup scripts
- start.sh: Linux/macOS一键启动 (编译+后端+前端+健康检查)
- start.bat: Windows批处理 (两个终端窗口)
- Ctrl+C优雅退出,环境变量可覆盖
2026-08-12 17:36:22 +08:00

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