shell实现tomcat自动备份重启

运行环境:
    Tomcat:Apache Tomcat Version 7.0.25
    Server:CentOS release 6.2


作为一名web程序员或测试人员,需要经常发布程序到线上环境或测试环境中。
每次向线上或者测试环境发布新war包的时候,我一般都这么做
1、put xxx.war 到 tomcat_xxx(一台服务器上有多个tomcat,比如项目名称是xxx,tomcat一般命名为tomcat_xxx)
2、ps -ef | grep tomcat_xxx 找到对应的tomcat进程
3、kill tomcat进程
4、rm掉 webapps下的xxx目录(在tomcat启动时由xxx.war生成的)
5、mv xxx.war 到指定的备份目录中
7、mv 新上传的xxx.war 到 webapps中
8、执行startup.sh,启动tomcat
9、tail -f catalina.out 查看启动日志输出,确保启动成功。

现在有了auto_deploy.sh,将auto_deploy.sh放在tomcat的bin目录下,
只需要以下两步(以我的环境为例)
1、put xxx.war 到 /work/tomcat_xxx
2、执行auto_deploy.sh

auto_deploy.sh全部代码如下:(注意:首次运行需要指定PRO_NAME

#!/bin/sh

#项目名称,一般是war包的名称,例如xxx.war,则PRO_NAME="xxx"
PRO_NAME=""

#shell 文件所在目录
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

#tomcat 根目录
TOMCAT_HOME="$(dirname ${BIN_DIR})"

#tomcat 进程名称,一般是ps -ef |grep xxx 中的xxx
PRG="$(basename ${TOMCAT_HOME})"

DATE=`date +%Y%m%d%H%M%S`

if [ "$PRO_NAME" = "" ]; then
    echo "ERROR:未配置项目名称,请配置 PRO_NAME 参数值!!!"
    exit 0
fi

#kill tomcat 进程
ps -ef |grep "$PRG" | grep "jdk" | awk '{print "kill -9 " $2}' | sh

#生成一个备份目录
if [ ! -d "$TOMCAT_HOME/bak" ]; then
    mkdir $TOMCAT_HOME/bak
fi

#部署新war包,同时将旧war包备份并删除旧的程序文件
if [ -f "$TOMCAT_HOME/$PRO_NAME.war" ]; then
    if [ -f "$TOMCAT_HOME/webapps/$PRO_NAME.war" ]; then
        mv $TOMCAT_HOME/webapps/$PRO_NAME.war $TOMCAT_HOME/bak/${PRO_NAME}_$DATE.war
    fi
    rm -rf $TOMCAT_HOME/webapps/$PRO_NAME
    mv $TOMCAT_HOME/$PRO_NAME.war $TOMCAT_HOME/webapps/
fi

#启动tomcat
nohup $TOMCAT_HOME/bin/startup.sh > $TOMCAT_HOME/logs/catalina.out &

#打印启动日志
tail -f $TOMCAT_HOME/logs/catalina.out

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值