希望有一天大家都能在借鉴中创新
关键词:
接口服务;自动部署;快速开发
主题:
对于前后端分离的项目往往需要在开发完成一个迭代周期的时候更新部署的服务,常规的操作往往是:clean -> package -> xshell -> sftp -> start。
简单的项目往往每天都需要进行这种操作N次,如果开发支持jenkins环境,可以配置自动脚本进行打包部署,甚至是完成各种复杂的脚本操作。
然后导致你重复的原因往往是没有合适环境(恕我直言,就算是有环境多半也会翻车)
姿势必备:
- 开发工具:idea-2018.2(不依赖特殊版本)
- 插件名称:Alibaba Cloud Toolkit (2019.6.2)【新版本 功能可能会有改动】
可以直接在插件商店中直接找到:
我们这里面只进行远程主机的部署,因此这里面只需要用到截图中这个配置即可
配置
- 配置Host
打开配置host的页面,可以看到需要我们配置的信息,可以依次按照图中的配置一步步操作:
添加主机信息
查看添加的主机列表,可以直接在此处进行上传文件以及操作命令行
实际需求
设置之后我们只需点击即可实现:
打包本地项目-----部署------重启项目-------查看控制台日志
配置项目位置,以及打包结束之后上传文件的位置:
这里着重需要编辑脚本中的内容,前面都是傻瓜式的操作,一次不行多试几次就行了(可以看出工具也支持docker镜像项目的部署,以后会介绍相关docker服务的部署的配置):
脚本逻辑:
暂停之前的进程--------》备份之前的jar文件---------》重命名上传的jar文件----------》重新启动项目
脚本内容:
#!/bin/bash
#author lcz
# date 2019-09-26
# upload package name
NAMEDEPLOY='service-bj-demographics-new.jar'
# exists package name
NAMEBEFORE='service-bj-demographics.jar'
# mark the time as
ymd=`date +%Y-%m-%d-%H-%M-%S`;
historyTime=$(date "+%Y-%m-%d-%H-%M-%S" -d '2 month ago')
# stop the process before
ID=`ps -ef | grep "$NAMEBEFORE" | grep -v "grep" | awk '{print $2}'`
echo The process pid is $ID
for id in $ID
do
kill -9 $id
echo killed $id
done
# backup package
mv $NAMEBEFORE $NAMEBEFORE.bak-$ymd
mv $NAMEDEPLOY $NAMEBEFORE
nohup java -jar $NAMEBEFORE > nohup.out &
- 定制化配置
不同的项目需要编写执行不同的脚本文件,则更改脚本文件就行了;
上面在脚本嫁接到本地的方式可以更改项目中的NAME属性定位到自己项目的名字即可:
# upload package name
NAMEDEPLOY='service-bj-demographics-new.jar'
# exists package name
NAMEBEFORE='service-bj-demographics.jar'
NAMEDEPLOY: 本地打包上传的文件名字
NAMEBEFORE: 项目运行时需要的文件的名字
运行方式
像运行SpringBoot的启动类一样,轻轻点击一下瞬间完成:
打包以及上传过程演示:
如有兴趣欢迎关注:码农的技术分享