乐趣区

tomcat一键发布

1. 场景描述

linux 下 tomcat 一键发布,包含停用服务、删除 war 包、拷贝 war 包及备份、重启服务等,以前的版本还包含 svn 更新及打包,后来在生产上怕出问题,改成本地打 war 包后,ftp 上传到指定目录的方式。

2. 解决方案

2.1 真实代码

文件名称做了隐藏更改处理,修改文件路径后可使用。

#!/bin/sh
#1
instance="apache-tomcat-8.0.53";
tomcat_progrm="/home/laowang/programs/apache-tomcat-8.0.53";
target_home="/home/laowang/programs/dist";
target_home_back="/home/laowang/programs/dist/back";

function running(){
b=""
for ((i=0;i<=100;i+=2))
do
printf "progress:[%-50s]%d%%\r" $b $i
sleep 0.2
b=#$b
done
echo
}
#2
pid=`(ps -ef | grep $tomcat_progrm | grep -v "grep") | awk '{print $2}'`
kill -9 $pid
running ;
ps aux | grep $instance | grep -v grep;
#3
rm -rf ${tomcat_progrm}/webapps/laowang* ;
#4
mkdir ${target_home_back}/$(date +%Y%m%d%H%M%S)
cp ${target_home}/*.war  ${target_home_back}/$(date +%Y%m%d%H%M%S)/

cp ${target_home}/*.war ${tomcat_progrm}/webapps/laowang-web.war
echo ${tomcat_progrm}/bin/startup.sh ;
#5
nohup ${tomcat_progrm}/bin/startup.sh;
running;
#6
tail -f ${tomcat_progrm}/logs/catalina.out ;

2.2 代码说明

2.2.1 定义变量

三个变量分别为 tomcat 解压目录,tomcat 的 war 包是上传目录(可以任意定,只要有操作权限就行)、tomcat 的 war 包子目录,备份用,也可以自己定义。

#1
instance="apache-tomcat-8.0.53";
tomcat_progrm="/home/laowang/programs/apache-tomcat-8.0.53";
target_home="/home/laowang/programs/dist";
target_home_back="/home/laowang/programs/dist/back";
2.2.2 查找现有 tomcat 进程并停用掉。
#2
pid=`(ps -ef | grep $tomcat_progrm | grep -v "grep") | awk '{print $2}'`
kill -9 $pid
running ;
ps aux | grep $instance | grep -v grep;
2.2.3 删除 tomcat 下历史 war 包
#3
rm -rf ${tomcat_progrm}/webapps/laowang* ;
2.2.4 新建备份文件夹,备份最新 war 包,并将最新 war 拷贝到 tomcat 的启动目录(webapps)
#4
mkdir ${target_home_back}/$(date +%Y%m%d%H%M%S)
cp ${target_home}/*.war  ${target_home_back}/$(date +%Y%m%d%H%M%S)/

cp ${target_home}/*.war ${tomcat_progrm}/webapps/laowang-web.war
echo ${tomcat_progrm}/bin/startup.sh ;
2.2.5 启动 tomcat 服务
#5
nohup ${tomcat_progrm}/bin/startup.sh;
2.2.6 实时查看下日志,检验是否有错误。
#6
tail -f ${tomcat_progrm}/logs/catalina.out ;

2.3 最后说明

假如根据日志看没啥问题,或者有信心没问题,可直接按 ctrl+ c 退出。


I’m 软件老王,如果觉得还可以的话,点个赞呗!

如有不准确的地方或疑问,可通过讨论区、QQ 沟通,多谢!

退出移动版