shell脚本自动化部署
由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了。
一、纯人工部署是这样的:
1. 本地打包:一般 maven clean package
2. 借助xftp上传到服务器对应目录
3. 借助 xshell连接到服务器
4.开始部署:
a、找到程序运行的进程id:ps -ef | grep java
b、杀死进程: kill -9 pid
c、启动新的jar包: java -jar 包名 –spring.profiles.active=test &
二、使用shell脚本自动化部署
1. 脚本
#!/bin/bash # 将 jarName 换成jar包名 可以不带版本那部分 jarName=$1 jarfile=$(find $jarName*jar) echo "关闭正在运行的……" kill -9 $(ps -ef | grep $jarfile | grep -v grep | awk '{print $2}') echo "关闭完成!" echo "检查是否在运行……" var=$(ps -ef | grep $jarfile | grep -v grep | awk '{print $2}') len=${#var} if test $[len] -gt 0 then echo '正在运行' else echo '已停止' fi echo "开始启动……" java -jar $jarfile --spring.profiles.active=test &
2. 只需要把文件命名 deploy.sh,保存到jar包相同目录下
3. 启动命令:
a、切换到jar包目录
b、启动:./deploy.sh jar包名
比如包名 ticket-gateway-1.0.1-SNAPSHOT-f3dbc36.jar
输入 ./deploy.sh ticket-gateway-1.0.1-SNAPSHOT-f3dbc36
然后回车键
c、如果目录下一个服务有多个jar,那么jar包名需要精确,如果只有一个jar包,输入前面一部分能区分即可。
4. 如果是线上环境,就新建一个文件 deploy-prod.sh,修改脚本最后一行:
java -jar $jarfile --spring.profiles.active=prod &
三、使用shell脚本依然需要自己打包、上传,后续研究下Jenkins+git+maven自动化部署~