Bladeren bron

feat: 添加服务器端 redeploy.sh 重新部署脚本

何文松 1 maand geleden
bovenliggende
commit
3fdeb75869
1 gewijzigde bestanden met toevoegingen van 209 en 0 verwijderingen
  1. 209 0
      redeploy.sh

+ 209 - 0
redeploy.sh

@@ -0,0 +1,209 @@
+#!/bin/bash
+
+# ============================================
+# 灵越智报 - 服务器端重新部署脚本
+# 在服务器上直接运行,用于更新后重启应用
+# ============================================
+
+set -e
+
+# 颜色定义
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m'
+
+# ========== 配置 ==========
+PROJECT_DIR="/mnt/win_home/lingyue-zhibao"
+MAVEN_REPO="/mnt/win_home/.m2/repository"
+LOG_FILE="/var/log/lingyue.log"
+JAR_NAME="lingyue-starter.jar"
+JAR_PATH="${PROJECT_DIR}/backend/lingyue-starter/target/${JAR_NAME}"
+APP_PORT=5232
+
+# JVM 参数
+JVM_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError"
+# ===========================
+
+log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
+log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
+log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
+
+# 停止应用
+stop_app() {
+    log_info "停止应用..."
+    pkill -f "${JAR_NAME}" 2>/dev/null || true
+    sleep 2
+    
+    if pgrep -f "${JAR_NAME}" > /dev/null 2>&1; then
+        log_warn "强制终止..."
+        pkill -9 -f "${JAR_NAME}" 2>/dev/null || true
+        sleep 1
+    fi
+    
+    log_info "应用已停止"
+}
+
+# 编译
+build() {
+    log_info "编译项目..."
+    cd ${PROJECT_DIR}/backend
+    rm -rf lingyue-starter/target 2>/dev/null || true
+    mvn clean package -DskipTests -q -Dmaven.repo.local=${MAVEN_REPO}
+    log_info "编译完成"
+}
+
+# 启动应用(前台)
+start_foreground() {
+    log_info "启动应用(前台模式)..."
+    cd ${PROJECT_DIR}/backend
+    echo ""
+    echo -e "${GREEN}================================================${NC}"
+    echo -e "${GREEN}  灵越智报 2.0${NC}"
+    echo -e "${GREEN}  访问地址: http://localhost:${APP_PORT}${NC}"
+    echo -e "${GREEN}  按 Ctrl+C 停止${NC}"
+    echo -e "${GREEN}================================================${NC}"
+    echo ""
+    java ${JVM_OPTS} -jar ${JAR_PATH}
+}
+
+# 启动应用(后台)
+start_background() {
+    log_info "启动应用(后台模式)..."
+    cd ${PROJECT_DIR}/backend
+    nohup java ${JVM_OPTS} -jar ${JAR_PATH} > ${LOG_FILE} 2>&1 &
+    
+    sleep 5
+    
+    if pgrep -f "${JAR_NAME}" > /dev/null 2>&1; then
+        local pid=$(pgrep -f "${JAR_NAME}")
+        log_info "应用启动成功 (PID: $pid)"
+        log_info "访问地址: http://localhost:${APP_PORT}"
+        log_info "日志文件: ${LOG_FILE}"
+    else
+        log_error "启动失败,查看日志: tail -100 ${LOG_FILE}"
+        exit 1
+    fi
+}
+
+# 查看状态
+status() {
+    if pgrep -f "${JAR_NAME}" > /dev/null 2>&1; then
+        local pid=$(pgrep -f "${JAR_NAME}")
+        log_info "应用运行中 (PID: $pid)"
+        log_info "端口: ${APP_PORT}"
+        
+        # 健康检查
+        local health=$(curl -s http://localhost:${APP_PORT}/actuator/health 2>/dev/null || echo "")
+        if [ -n "$health" ]; then
+            echo "$health"
+        fi
+    else
+        log_warn "应用未运行"
+    fi
+}
+
+# 查看日志
+logs() {
+    if [ -f ${LOG_FILE} ]; then
+        tail -${1:-100} ${LOG_FILE}
+    else
+        log_warn "日志文件不存在"
+    fi
+}
+
+# 实时日志
+tail_logs() {
+    if [ -f ${LOG_FILE} ]; then
+        tail -f ${LOG_FILE}
+    else
+        log_warn "日志文件不存在"
+    fi
+}
+
+# 显示帮助
+show_help() {
+    cat <<EOF
+灵越智报 - 服务器端重新部署脚本
+
+用法: ./redeploy.sh [命令]
+
+命令:
+    (无参数)    重新编译并前台启动
+    -d          重新编译并后台启动
+    start       仅启动(不编译),前台模式
+    start -d    仅启动(不编译),后台模式
+    stop        停止应用
+    restart     重启应用(不重新编译)
+    status      查看状态
+    logs [n]    查看最近 n 行日志(默认100)
+    tail        实时查看日志
+    build       仅编译(不启动)
+    help        显示帮助
+
+示例:
+    ./redeploy.sh           # 重新编译并前台启动
+    ./redeploy.sh -d        # 重新编译并后台启动
+    ./redeploy.sh restart   # 快速重启
+    ./redeploy.sh logs 200  # 查看最近200行日志
+
+EOF
+}
+
+# 主函数
+main() {
+    case "${1:-}" in
+        "")
+            stop_app
+            build
+            start_foreground
+            ;;
+        -d|--daemon)
+            stop_app
+            build
+            start_background
+            ;;
+        start)
+            stop_app
+            if [ "${2:-}" = "-d" ]; then
+                start_background
+            else
+                start_foreground
+            fi
+            ;;
+        stop)
+            stop_app
+            ;;
+        restart)
+            stop_app
+            if [ "${2:-}" = "-d" ]; then
+                start_background
+            else
+                start_foreground
+            fi
+            ;;
+        status)
+            status
+            ;;
+        logs)
+            logs ${2:-100}
+            ;;
+        tail)
+            tail_logs
+            ;;
+        build)
+            build
+            ;;
+        help|--help|-h)
+            show_help
+            ;;
+        *)
+            log_error "未知命令: $1"
+            show_help
+            exit 1
+            ;;
+    esac
+}
+
+main "$@"