Initial commit
This commit is contained in:
105
script/start.sh
Executable file
105
script/start.sh
Executable file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env bash
|
||||
# ZP2 Startup Script for macOS/Linux / ZP2 macOS/Linux 启动脚本
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
BACKEND_DIR="$PROJECT_DIR/backend"
|
||||
FRONTEND_DIR="$PROJECT_DIR/frontend"
|
||||
|
||||
# Colors / 颜色
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||
error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||
|
||||
# Check prerequisites / 检查依赖
|
||||
check_prereqs() {
|
||||
info "Checking prerequisites / 检查依赖..."
|
||||
|
||||
if ! command -v java &>/dev/null; then
|
||||
error "Java not found. Please install Java 17+. / 未找到 Java,请安装 Java 17+。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAVA_VER=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | cut -d'.' -f1)
|
||||
if [ "$JAVA_VER" -lt 17 ]; then
|
||||
error "Java 17+ required, found Java $JAVA_VER / 需要 Java 17+,当前为 Java $JAVA_VER"
|
||||
exit 1
|
||||
fi
|
||||
info "Java $JAVA_VER OK"
|
||||
|
||||
if ! command -v mvn &>/dev/null; then
|
||||
error "Maven not found. Please install Maven. / 未找到 Maven,请安装 Maven。"
|
||||
exit 1
|
||||
fi
|
||||
info "Maven OK"
|
||||
|
||||
if ! command -v node &>/dev/null; then
|
||||
error "Node.js not found. Please install Node.js. / 未找到 Node.js,请安装 Node.js。"
|
||||
exit 1
|
||||
fi
|
||||
info "Node.js $(node -v) OK"
|
||||
}
|
||||
|
||||
# Build backend / 构建后端
|
||||
build_backend() {
|
||||
info "Building backend / 构建后端..."
|
||||
cd "$BACKEND_DIR"
|
||||
mvn package -q
|
||||
info "Backend built successfully / 后端构建成功"
|
||||
}
|
||||
|
||||
# Start backend / 启动后端
|
||||
start_backend() {
|
||||
info "Starting backend server on port 8080 / 启动后端服务器 (端口 8080)..."
|
||||
cd "$PROJECT_DIR"
|
||||
nohup java -jar backend/target/zombie-crisis-server-1.0.0.jar > "$PROJECT_DIR/backend.log" 2>&1 &
|
||||
BACKEND_PID=$!
|
||||
echo "$BACKEND_PID" > "$PROJECT_DIR/.backend.pid"
|
||||
info "Backend started (PID: $BACKEND_PID) / 后端已启动 (PID: $BACKEND_PID)"
|
||||
}
|
||||
|
||||
# Start frontend / 启动前端
|
||||
start_frontend() {
|
||||
info "Starting frontend dev server / 启动前端开发服务器..."
|
||||
cd "$FRONTEND_DIR"
|
||||
|
||||
if [ ! -d "node_modules" ]; then
|
||||
info "Installing frontend dependencies / 安装前端依赖..."
|
||||
npm install
|
||||
fi
|
||||
|
||||
info "Frontend dev server starting at http://localhost:3000 / 前端开发服务器地址: http://localhost:3000"
|
||||
npm run dev
|
||||
}
|
||||
|
||||
# Handle Ctrl+C / 处理 Ctrl+C
|
||||
cleanup() {
|
||||
if [ -f "$PROJECT_DIR/.backend.pid" ]; then
|
||||
PID=$(cat "$PROJECT_DIR/.backend.pid")
|
||||
info "Stopping backend (PID: $PID) / 停止后端 (PID: $PID)..."
|
||||
kill "$PID" 2>/dev/null || true
|
||||
rm -f "$PROJECT_DIR/.backend.pid"
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
trap cleanup INT TERM
|
||||
|
||||
# Main / 主流程
|
||||
echo "=================================="
|
||||
echo " ZP2 Game Server Launcher"
|
||||
echo " ZP2 游戏服务器启动器"
|
||||
echo "=================================="
|
||||
echo ""
|
||||
|
||||
check_prereqs
|
||||
build_backend
|
||||
start_backend
|
||||
start_frontend
|
||||
Reference in New Issue
Block a user