chore: add cross-platform startup scripts
- start.sh: Linux/macOS一键启动 (编译+后端+前端+健康检查) - start.bat: Windows批处理 (两个终端窗口) - Ctrl+C优雅退出,环境变量可覆盖
This commit is contained in:
1 parent
e8b5679cf4
commit
78c5f0f1b0
2 files changed
+109
No files matched your search
@@ -0,0 +1,36 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd /d "%~dp0"
|
||||
|
||||
set LLM_API_KEY=sk-test
|
||||
set JWT_SECRET=cyrene-v2-dev-secret-key-32bytes!!
|
||||
set ADMIN_PASSWORD=admin12345
|
||||
|
||||
echo ============================================
|
||||
echo Cyrene v2 — Windows 启动脚本
|
||||
echo ============================================
|
||||
|
||||
echo [1/2] 编译后端...
|
||||
cd backend
|
||||
go build -o cyrene.exe ./cmd/cyrene/
|
||||
if %errorlevel% neq 0 (
|
||||
echo 后端编译失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [1/2] 启动后端 (http://localhost:8080)...
|
||||
start "Cyrene Backend" cmd /c "set LLM_API_KEY=%LLM_API_KEY% && set JWT_SECRET=%JWT_SECRET% && set ADMIN_PASSWORD=%ADMIN_PASSWORD% && cyrene.exe"
|
||||
|
||||
cd ..\frontend\web
|
||||
|
||||
echo [2/2] 启动前端 (http://localhost:5173)...
|
||||
start "Cyrene Frontend" cmd /c "npx vite --host 0.0.0.0"
|
||||
|
||||
echo.
|
||||
echo Cyrene v2 启动完成
|
||||
echo 前端: http://localhost:5173
|
||||
echo 后端: http://localhost:8080
|
||||
echo 账号: admin / %ADMIN_PASSWORD%
|
||||
echo.
|
||||
pause
|
||||
@@ -0,0 +1,73 @@
|
||||
#!/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
|
||||
Reference in new issue
Block a user