@@ -0,0 +1,82 @@
#!/bin/bash
# 编译并部署 miao-front( 用户端 API) 到 by80 云服务器
# 部署前在云服务器上备份原有 jar
# 使用: ./shell/deploy-front-by80.sh( 在 backend 目录下)
# 或指定密钥: SSH_IDENTITY=~/.ssh/your_key ./shell/deploy-front-by80.sh
set -e
ENV_NAME = "by80"
SSH_IDENTITY = " ${ SSH_IDENTITY :- $HOME /.ssh/id_ed25519_crmeb_deploy } "
SCRIPT_DIR = " $( cd " $( dirname " ${ BASH_SOURCE [0] } " ) " && pwd ) "
BACKEND_DIR = " $( cd " $SCRIPT_DIR /.. " && pwd ) "
DEPLOY_CONF = " $BACKEND_DIR /deploy.conf "
# 解析 by80 段配置( deploy.conf 中 by80 段到 miao33 段之前的 KEY=value)
get_conf( ) {
sed -n '1,/^miao33:/p' " $DEPLOY_CONF " | grep -E " ^ ${ 1 } = " | 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_JAR = $( get_conf REMOTE_DIR_JAR)
FRONT_JAR_NAME = $( get_conf FRONT_JAR_NAME)
FRONT_LOCAL_PORT = $( get_conf FRONT_LOCAL_PORT)
SPRING_PROFILE = "miao80"
[ [ -z " $SERVER_HOST " ] ] && SERVER_HOST = 123.56.214.80
[ [ -z " $REMOTE_DIR_JAR " ] ] && REMOTE_DIR_JAR = /www/wwwroot/crmeb
[ [ -z " $FRONT_JAR_NAME " ] ] && FRONT_JAR_NAME = miao-front-2.2.jar
[ [ -z " $FRONT_LOCAL_PORT " ] ] && FRONT_LOCAL_PORT = 30031
[ [ -z " $SERVER_USER " ] ] && SERVER_USER = root
[ [ -z " $SERVER_PORT " ] ] && SERVER_PORT = 22
JAR_PATH = " $BACKEND_DIR /crmeb-front/target/ $FRONT_JAR_NAME "
REMOTE_JAR = " $REMOTE_DIR_JAR / $FRONT_JAR_NAME "
[ [ -f " $SSH_IDENTITY " ] ] && SSH_OPTS = ( -o " IdentityFile= $SSH_IDENTITY " ) || SSH_OPTS = ( )
SSH_CMD = ( ssh " ${ SSH_OPTS [@] } " -o StrictHostKeyChecking = accept-new -p " $SERVER_PORT " " $SERVER_USER @ $SERVER_HOST " )
SCP_CMD = ( scp " ${ SSH_OPTS [@] } " -o StrictHostKeyChecking = accept-new -P " $SERVER_PORT " )
BACKUP_SUFFIX = " backup_ $( date +%Y%m%d_%H%M%S) "
echo " === 部署 miao-front( 用户端 API) 到 $ENV_NAME 云服务器 === "
echo " 服务器: $SERVER_USER @ $SERVER_HOST "
echo " 目标目录: $REMOTE_DIR_JAR "
echo " Profile: $SPRING_PROFILE "
echo ""
echo "=== 1. 编译 crmeb-front( miao-front-2.2.jar) ==="
cd " $BACKEND_DIR "
mvn clean package -pl crmeb-front -am -DskipTests -q
echo " 已生成: $JAR_PATH "
[ [ ! -f " $JAR_PATH " ] ] && { echo "错误: jar 未生成" ; exit 1; }
echo ""
echo "=== 2. 云服务器备份原有 jar ==="
" ${ SSH_CMD [@] } " "bash -s" << REMOTE_BACKUP
set -e
mkdir -p "$REMOTE_DIR_JAR/backups"
if [ -f "$REMOTE_JAR" ]; then
cp -a "$REMOTE_JAR" "$REMOTE_DIR_JAR/backups/${FRONT_JAR_NAME}.${BACKUP_SUFFIX}"
echo "已备份: $REMOTE_DIR_JAR/backups/${FRONT_JAR_NAME}.${BACKUP_SUFFIX}"
else
echo "远程无原有 jar, 跳过备份"
fi
REMOTE_BACKUP
echo ""
echo " === 3. 上传 $FRONT_JAR_NAME 到 $REMOTE_DIR_JAR === "
" ${ SCP_CMD [@] } " " $JAR_PATH " " $SERVER_USER @ $SERVER_HOST : $REMOTE_DIR_JAR / "
echo "jar 上传完成."
echo ""
echo " === 4. 远程重启 miao-front 服务 (profile= $SPRING_PROFILE , port= $FRONT_LOCAL_PORT ) === "
" ${ SSH_CMD [@] } " " cd $REMOTE_DIR_JAR && \
(pkill -f $FRONT_JAR_NAME || true) && \
sleep 2 && \
nohup java -Xms128m -Xmx256m -jar $FRONT_JAR_NAME --spring.profiles.active= $SPRING_PROFILE --server.port= $FRONT_LOCAL_PORT > front.log 2>&1 & \
sleep 3 && \
(pgrep -f $FRONT_JAR_NAME && echo 'miao-front 已启动' || (echo '启动可能失败,请检查 front.log'; tail -20 front.log)) "
echo ""
echo "=== miao-front 部署完成 ==="