Files
railwaysystem/deploy/restart-all.sh
T

74 lines
2.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ==============================================================================
# 铁路培训实训教学平台 - 全自动平滑部署与自检脚本
# 路径规范:/data2/wzb/deploy
# ==============================================================================
DEPLOY_ROOT="/data2/wzb/deploy"
BACKEND_DIR="$DEPLOY_ROOT/backend"
FRONTEND_DIR="$DEPLOY_ROOT/frontend"
LOG_DIR="$DEPLOY_ROOT/logs"
PID_FILE="$BACKEND_DIR/app.pid"
JAR_PATH="$BACKEND_DIR/ruoyi-admin.jar"
LOG_PATH="$LOG_DIR/backend.log"
JAVA_BIN="/data2/wzb/tools/jdk8/bin/java"
# 服务运行端口与数据库参数
SERVER_PORT=8092
DB_URL="jdbc:kingbase8://192.168.139.218:4321/training?currentSchema=public,sys_catalog&useUnicode=true&characterEncoding=utf8"
mkdir -p "$BACKEND_DIR" "$FRONTEND_DIR" "$LOG_DIR"
echo "=== 1. 检查并停止当前用户的旧后端进程 ==="
TARGET_PID=""
if [ -f "$PID_FILE" ]; then
SAVED_PID=$(cat "$PID_FILE")
if kill -0 "$SAVED_PID" 2>/dev/null; then
TARGET_PID="$SAVED_PID"
fi
fi
if [ -z "$TARGET_PID" ]; then
TARGET_PID=$(pgrep -u $(whoami) -f "$JAR_PATH" | head -n 1)
fi
if [ -n "$TARGET_PID" ]; then
echo "正在停止旧进程 PID: $TARGET_PID ..."
kill -15 $TARGET_PID 2>/dev/null
sleep 3
if kill -0 $TARGET_PID 2>/dev/null; then
echo "强制终止 PID: $TARGET_PID"
kill -9 $TARGET_PID 2>/dev/null
fi
fi
rm -f "$PID_FILE"
echo "=== 2. 启动新的后端服务(端口: $SERVER_PORT) ==="
if [ ! -f "$JAR_PATH" ]; then
echo "错误:未找到 $JAR_PATH"
exit 1
fi
nohup $JAVA_BIN -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m \
-Dfile.encoding=UTF-8 \
-jar "$JAR_PATH" \
--server.port=$SERVER_PORT \
--spring.datasource.druid.master.url="$DB_URL" > "$LOG_PATH" 2>&1 &
NEW_PID=$!
echo $NEW_PID > "$PID_FILE"
echo "后端已在后台启动,PID: $NEW_PID"
echo "实时日志: $LOG_PATH"
echo "等待服务启动与健康自检..."
for i in {1..35}; do
RES=$(curl -s "http://127.0.0.1:${SERVER_PORT}/captchaImage" 2>/dev/null)
if echo "$RES" | grep -q '"code":200'; then
echo "后端健康检查通过!验证码接口返回正常!服务已在端口 $SERVER_PORT 成功运行!"
exit 0
fi
sleep 2
done
echo "后端启动中或未在预期时间内完成自检,请检查日志: tail -n 50 $LOG_PATH"