Files
integral-shop/backend/shell/deploy-admin-miao50.sh

56 lines
2.2 KiB
Bash
Raw Normal View History

#!/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 "=== 部署完成 ==="