Alibaba cloud toolkit 自动部署

官方介绍:集开发、测试、诊断、部署为一体的免费本地 IDE 插件,帮助开发者真正实现一键式研发部署。提升研发部署速度数倍以上,大幅降低研发成本。
官方链接

1. IDEA 安装 Alibaba cloud toolkit

官方传送门
官方图文并茂,这里就不重复了。

2. 部署应用到Linux服务器

官方传送门
官方的截图可能是旧版本,所以这里就越俎代庖,写下自己的自动部署的一些步骤。

预计达到的效果:

  • Maven打包,过程中如果出现异常,直接退出。
  • 备份服务器的包,备份后缀使用时间(年月日时分秒),并且要记录备份的名称,异常时回滚使用。
  • 上传包到服务器
  • 终止正在运行的项目,使用最新的包启动项目,告知启动是否成功,未成功,回滚到上一版本启动。

2.1 添加服务器

操作步骤:

  • 在IntelliJ IDEA顶部菜单栏中选择Tools > Alibaba Cloud > Alibaba Cloud View > Host。
  • 在弹出的Host页签中单击Add Host。
  • 在Add Host对话框中设置Host List、Username、Password等参数,完成后单击Add。

添加主机

2.2 配置自动部署

操作:

  • 在IntelliJ IDEA顶部菜单中选择Alibaba Cloud > Deploy to Host…。
  • 在Deploy to Host对话框设置部署参数,然后单击Run

还记得我们的目标吗? 第一步是要备份原来的系统,方法是部署前,运行服务器上的备份脚本,设置参考如下图:

Cloud ToolKit 备份脚本
参考的备份脚本:

#!/bin/bash

# 源JAR包路径
SOURCE_JAR_PATH="/your/path/your_app.jar"

# 备份目录
BACKUP_DIR="/your/backup/path"

# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 备份JAR包
BACKUP_FILE="${BACKUP_DIR}/your_app.jar"
cp $SOURCE_JAR_PATH $BACKUP_FILE

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "JAR包备份成功: $BACKUP_FILE"
else
    echo "JAR包备份失败"
fi

第二步,打包上传最新的jar包,并且重启,配置参考如下图:
在这里插入图片描述
要注意两点:

  • 打包命令一定要确定好,否则会报错。 比如我的项目是聚合项目,发布的是fancoding-web
  • 部署后,运行的脚本或者命令根据自己的需求去编写,我的只是参考。

restart.sh 如下:

#!/bin/bash

# 1.停应用
JAR_NAME="fancoding.jar"

# Find the process ID (PID) of the JAR
pid=$(ps aux | grep "$JAR_NAME" | grep -v "grep" | awk '{print $2}')

# Check if the process is running
if [ -z "$pid" ]; then
    echo "No process found for $JAR_NAME"
else
    echo "Stopping process $JAR_NAME for $JAR_NAME"
    kill $pid
fi



# 2. 启应用

# your app info 
JAR_Path="/data/webapp/test/fancoding.jar"
JAR_LOG="/data/webapp/test/app.log"
JAR_PORT=9700

java -jar  ${JAR_Path} >> ${JAR_LOG} 2>&1  &

echo "正在启动${jar_name}应用 "

# 获取Java程序的进程ID
JAVA_PID=$!

# 等待Java程序启动完成,最多等待60秒
timeout=60

IS_START=1

while [ $timeout -gt 0 ]
do
  # 检查端口是否被监听
  if netstat -tuln | grep ":${JAR_PORT}" >/dev/null; then
          echo "${JAR_NAME}程序启动成功。(PID : $JAVA_PID)"
    break
  else
    if [ $timeout -eq 3 ];then
        echo "${JAR_NAME}程序启动超时,请稍后查看日志确定是否启动成功,日志路径 ${JAR_LOG}" 
        IS_START=0
    else
        echo "${JAR_NAME}程序正在启动...."
    fi
  fi
  sleep 3
  timeout=$((timeout - 3))
done



# 3.备份的应用重命名
# 当然可以没有这块
if [ ${IS_START} = 1 ]; then
        TIMESTAMP=$(date +%Y%m%d%H%M%S)
        SOURCE_FILE="/data/webapp/test/backup/fancoding.jar"
        TARGET_FILE="/data/webapp/test/backup/fancoding.jar.bak${TIMESTAMP}"
        mv ${SOURCE_FILE} ${TARGET_FILE}
        echo "备份成功"
else
        echo "项目可能启动失败,还原jar包"
        rm #{JAR_Path}
        cp ${SOURCE_FILE} #{JAR_Path}
        java -jar  ${JAR_Path} >> ${JAR_LOG} 2>&1  &
        rm ${SOURCE_FILE}
        ehco "已删除此备份"

fi

3. Alibaba cloud toolkit 帮你做了什么?

集成了自动打包、自动上传部署、自动运行。省略了手工打包,上传包,备份应用,重启应用。

节约时间,节约精力,降本增效!

备注:
restart.sh = start.sh + start.sh
如果需要单独的脚本参考,可以看看 用shell脚本启停项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值