#!/bin/bash # 部署脚本:从远程仓库下载代码,打包并启动lark-panel的各个模块 # 使用pm2进行进程管理,确保重启后服务自动启动 # 设置变量 REPO_URL="http://47.121.181.112:3000/wonder/lark-panel.git" WORK_DIR="/tmp/lark-panel-deploy" DEPLOY_DIR="/opt/lark-panel" LOG_DIR="/var/log/lark-panel" # 创建必要的目录 mkdir -p $DEPLOY_DIR mkdir -p $LOG_DIR # 清理旧的工作目录 if [ -d "$WORK_DIR" ]; then rm -rf $WORK_DIR fi # 克隆代码仓库 echo "正在从远程仓库下载代码..." git clone $REPO_URL $WORK_DIR if [ $? -ne 0 ]; then echo "错误:无法克隆代码仓库" exit 1 fi # 进入工作目录 cd "$WORK_DIR" || { echo "无法进入工作目录"; exit 1; } # 打包各个模块 echo "正在打包各个模块..." # 清理整个项目 echo "清理项目..." mvn clean # 打包common模块(依赖) echo "打包common模块..." mvn install -pl common -am -DskipTests # 打包movie模块 echo "打包movie模块..." mvn package -pl movie -am -DskipTests # 打包weather模块 echo "打包weather模块..." mvn package -pl weather -am -DskipTests # 打包lark模块 echo "打包lark模块..." mvn package -pl lark -am -DskipTests if [ $? -ne 0 ]; then echo "错误:打包失败" exit 1 fi # 清理旧部署文件 echo "清理旧部署文件..." rm -f "$DEPLOY_DIR/lark.jar" "$DEPLOY_DIR/movie.jar" "$DEPLOY_DIR/weather.jar" # 复制jar包到部署目录 echo "复制jar包到部署目录..." cp movie/target/movie-*.jar $DEPLOY_DIR/movie.jar cp weather/target/weather-*.jar $DEPLOY_DIR/weather.jar cp lark/target/lark-*.jar $DEPLOY_DIR/lark.jar # 停止并删除现有的pm2进程(如果存在) echo "停止现有进程..." pm2 stop movie weather lark 2>/dev/null || true pm2 delete movie weather lark 2>/dev/null || true # 使用pm2启动各个模块 echo "使用pm2启动各个模块..." # 启动movie模块 pm2 start "java -jar $DEPLOY_DIR/movie.jar" --name movie --log $LOG_DIR/movie.log --restart-delay 5000 # 启动weather模块 pm2 start "java -jar $DEPLOY_DIR/weather.jar" --name weather --log $LOG_DIR/weather.log --restart-delay 5000 # 启动lark模块 pm2 start "java -jar $DEPLOY_DIR/lark.jar" --name lark --log $LOG_DIR/lark.log --restart-delay 5000 # 保存pm2配置,确保重启后自动启动 pm2 save pm2 startup echo "部署完成!所有模块已启动并使用pm2管理。" echo "使用 'pm2 list' 查看进程状态" echo "使用 'pm2 logs [module_name]' 查看日志" # 清理临时目录 cd / rm -rf $WORK_DIR exit 0