#!/bin/bash # 编译 crmeb-admin、上传并重启 miao50 服务器上的 admin 服务(全自动,需先做一次性免密配置) # 一次性配置: ssh-copy-id -i ~/.ssh/id_ed25519_crmeb_deploy.pub root@101.37.253.50 # 使用: ./deploy-admin-miao50.sh set -e SSH_IDENTITY="${SSH_IDENTITY:-$HOME/.ssh/id_ed25519_crmeb_deploy}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" DEPLOY_CONF="$PROJECT_DIR/deploy.conf" # 解析 miao50 配置(deploy.conf 中 miao50 段的 KEY=value) get_conf() { grep -E "^${1}=" "$DEPLOY_CONF" | tail -1 | cut -d= -f2- } SERVER_HOST=$(get_conf SERVER_HOST) SERVER_USER=$(get_conf SERVER_USER) SERVER_PORT=$(get_conf SERVER_PORT) REMOTE_DIR=$(get_conf REMOTE_DIR) ADMIN_JAR_NAME=$(get_conf ADMIN_JAR_NAME) ADMIN_LOCAL_PORT=$(get_conf ADMIN_LOCAL_PORT) # 若未读到(可能不是 miao50 段),使用默认 [[ -z "$SERVER_HOST" ]] && SERVER_HOST=101.37.253.50 [[ -z "$REMOTE_DIR" ]] && REMOTE_DIR=/www/wwwroot/crmeb [[ -z "$ADMIN_JAR_NAME" ]] && ADMIN_JAR_NAME=miao-admin-2.2.jar [[ -z "$ADMIN_LOCAL_PORT" ]] && ADMIN_LOCAL_PORT=30032 [[ -z "$SERVER_USER" ]] && SERVER_USER=root [[ -z "$SERVER_PORT" ]] && SERVER_PORT=22 JAR_PATH="$PROJECT_DIR/crmeb-admin/target/$ADMIN_JAR_NAME" REMOTE_JAR="$REMOTE_DIR/$ADMIN_JAR_NAME" echo "=== 1. 编译 crmeb-admin ===" cd "$PROJECT_DIR" mvn clean package -pl crmeb-admin -am -DskipTests -q echo "已生成: $JAR_PATH" echo "" echo "=== 2. 上传到 $SERVER_USER@$SERVER_HOST:$REMOTE_DIR ===" [[ -f "$SSH_IDENTITY" ]] && SSH_OPTS=(-o "IdentityFile=$SSH_IDENTITY") || SSH_OPTS=() scp "${SSH_OPTS[@]}" -o StrictHostKeyChecking=accept-new -P "$SERVER_PORT" "$JAR_PATH" "$SERVER_USER@$SERVER_HOST:$REMOTE_DIR/" echo "上传完成." echo "" echo "=== 3. 远程停止并重启 admin (profile=miao50, port=$ADMIN_LOCAL_PORT) ===" ssh "${SSH_OPTS[@]}" -p "$SERVER_PORT" "$SERVER_USER@$SERVER_HOST" "cd $REMOTE_DIR && \ (pkill -f $ADMIN_JAR_NAME || true) && \ sleep 2 && \ nohup java -jar $ADMIN_JAR_NAME --spring.profiles.active=miao50 --server.port=$ADMIN_LOCAL_PORT > admin.log 2>&1 & \ sleep 3 && \ (pgrep -f $ADMIN_JAR_NAME && echo 'Admin 进程已启动' || echo '请检查 admin.log 启动是否失败')" echo "" echo "=== 部署完成 ==="