#!/bin/bash # # gmp-service 一键部署脚本 # 用法: ./deploy/deploy.sh # # 它会: 构建 -> 停止旧服务 -> 替换jar -> 启动新服务 set -e PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)" SERVICE_NAME="gmp-service" JAR_SRC="$PROJECT_DIR/target/gmp-service.jar" JAR_DST="/opt/$SERVICE_NAME/gmp-service.jar" LOG_DIR="/var/log/$SERVICE_NAME" echo "===== 1. Maven 构建 =====" cd "$PROJECT_DIR" mvn clean package -DskipTests if [ ! -f "$JAR_SRC" ]; then echo "构建失败,未生成 JAR 文件" exit 1 fi echo "===== 2. 停止旧服务 =====" if systemctl is-active --quiet "$SERVICE_NAME"; then sudo systemctl stop "$SERVICE_NAME" echo "旧服务已停止" else echo "服务未运行,跳过" fi echo "===== 3. 部署新 JAR =====" sudo mkdir -p /opt/$SERVICE_NAME "$LOG_DIR" sudo cp "$JAR_SRC" "$JAR_DST" sudo chmod 644 "$JAR_DST" echo "===== 4. 启动服务 =====" sudo systemctl daemon-reload sudo systemctl enable "$SERVICE_NAME" sudo systemctl start "$SERVICE_NAME" echo "===== 等待服务启动 =====" sleep 3 if systemctl is-active --quiet "$SERVICE_NAME"; then echo "服务已成功启动!" systemctl status "$SERVICE_NAME" --no-pager | head -15 else echo "服务启动失败,查看日志: sudo journalctl -u $SERVICE_NAME -n 50 --no-pager" exit 1 fi echo "" echo "部署完成!" echo " 服务: $SERVICE_NAME" echo " JAR: $JAR_DST" echo " 日志: journalctl -u $SERVICE_NAME -f" echo " 端口: $(grep 'server.port' "$PROJECT_DIR/src/main/resources/application.yml" 2>/dev/null || echo '6666')"