IDEA自动部署jar包到Linux服务器

789 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

0.背景

通常,我们在开发过程中,需要部署各类可执行的jar包。通常情况下,我们都会使用mvn命令进行打包,然后将jar包发送到服务器,然后启动。这样的过程每天都在进行重复,但其实阿里云插件给出了一个解决方案。

1.安装插件

2.添加服务器地址

在这里插入图片描述

3.配置自动部署

这里我们只需要配置一次部署的步骤,便可以一劳永逸了。

在这里插入图片描述

这里我们选择部署到Host:

例如,我们需要部署包到192.168.32.57/data/StatisticsController目录下,但是这样只是把jar包发到了服务器,我们还要做两件事,一件事是备份原有的jar包,然后删除掉当前目录下所有jar包,然后启动jar包。所以前后要执行两个脚本,前面的脚本去删除影响启动的jar包,后一个进行jar包启动。官方示例当然也是类似的。

这里我们执行完后,马上就要看日志,我们可以使用阿里云工具箱自带的终端,我们在Open Terminal配置的就是这一部分。

你会有疑问,究竟Before deploysh /root/sh/common-before.sh /data/StatisticsControllerAfter deploysh /root/sh/common-after.sh /data/StatisticsController 9087具体对应什么脚本呢?

4.common-before.sh

cd "$1"
if [ ! -d "./backup" ]; then
  mkdir backup
fi
cp *.jar backup
rm -f *.jar

正如你看到的,这个通用脚本需要输入jar包应当所在的目录,保证后续操作的正确。这个脚本备份之前的jar包,然后删除当前目录下所有的jar包,保证后续启动的时候只是有最新的jar包。当然了,这也要求您每一次部署的时候包名尽量保证不同。

5.common-after.sh

source /etc/profile
cd $1
netstat -tnlp |grep $2 |awk '{print $7}' |awk -F/ '{print $1}' |xargs kill -9
nohup java -jar *.jar > nohup.log 2>&1 &

本脚本需要输入目录和端口号,一般情况下,一台服务器上各个服务之间端口号不会重复,故使用端口号定位进程然后杀死。这里,我们规定,用这种方式启动的日志文件命名为nohup.log,后续人员看到后,一看不是nohup.out就知道是某个人用这种方式进行了自动部署。

上面两个脚本,如无特殊情况,请放在/root/sh下,这样方便大家进行配置。

总结

如此一来,后端人员不需要掌握Jenkins,也无需维护一个庞大的Jenkins,就可以进行日常jar包的自动部署,节省了开发时间。