#!/usr/bin/env bash set -euo pipefail # shellcheck disable=SC1091 source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common.sh" ensure_runtime_dir PID_FILE="$RUNTIME_DIR/server.pid" if [[ -f "$PID_FILE" ]] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then echo "后端已在运行,PID $(cat "$PID_FILE")。"; exit 1 fi if ! mysql_query "$ELDER_DB_NAME" 'SELECT 1 FROM system_users LIMIT 1;' >/dev/null; then echo "无法连接已初始化的 MySQL 数据库 $ELDER_DB_NAME,请先运行 initialize.sh。" >&2 exit 1 fi MAVEN="$(resolve_maven)" if [[ "${SKIP_BUILD:-0}" != "1" ]]; then "$MAVEN" -B -ntp -pl yudao-server -am package -DskipTests fi JAR="$REPO_DIR/yudao-server/target/yudao-server.jar" [[ -f "$JAR" ]] || { echo "未找到 $JAR,请先完成 Maven 构建。" >&2; exit 1; } if (command -v lsof >/dev/null 2>&1 && lsof -nP -iTCP:"$ELDER_SERVER_PORT" -sTCP:LISTEN >/dev/null); then echo "端口 $ELDER_SERVER_PORT 已被占用。" >&2; exit 1 fi JAVA="$(resolve_java)" export ELDER_DB_HOST ELDER_DB_PORT ELDER_DB_NAME ELDER_DB_USER ELDER_DB_PASSWORD export ELDER_REDIS_HOST ELDER_REDIS_PORT ELDER_REDIS_DATABASE ELDER_REDIS_PASSWORD ELDER_SERVER_PORT export ELDER_LOG_FILE="$RUNTIME_DIR/application.log" nohup "$JAVA" -Xms256m -Xmx1024m -Dfile.encoding=UTF-8 -jar "$JAR" \ --spring.profiles.active=local,desktop >"$RUNTIME_DIR/stdout.log" 2>"$RUNTIME_DIR/stderr.log" & echo $! > "$PID_FILE" echo "后端已启动,PID $(cat "$PID_FILE")。健康检查:http://127.0.0.1:$ELDER_SERVER_PORT/actuator/health"