开启掘金成长之旅!这是我参与「掘金日新计划 · 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 deploy的sh /root/sh/common-before.sh /data/StatisticsController和After deploy的sh /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包的自动部署,节省了开发时间。