一、前言

由于经常部署war到tomccat上,经常有一些重复的工作要做:停服务、备份war包、上传新的war包、启动服务。索性就写了一个自动部署的脚本。

二、自动脚本

脚本如下autoDeploy.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#! /bin/sh
echo '####################开始自动部署####################'
path=`pwd` #当前路径
tomcatPath=tomcat-7 #指定tomcat文件目录名称
cd ../$tomcatPath/bin #进入tomcat的bin目录
PID=$(ps -fu `whoami`|grep tomcat|grep -v grep|awk '{print $2}')
if [ -z "$PID" ];then
echo "no tomcat process"
else
./shutdown.sh #停止tomcat服务
fi
sleep 1 #休眠1s
cd ../webapps #进入tomcat的webapps目录
rm -fr test #删除test文件目录
mv test.war test.war.$(date +%Y%m%d) #备份webapps下的test16 cp $path/test.war ./ #复制test.war到webapps路径下
sleep 1 #休眠1s
cd ../bin
./startup.sh #启动tomcat服务
echo '####################部署结束####################'

三、启动与关闭脚本分离

3.1 关停脚本stop.sh:

1
2
3
4
5
6
7
8
PID=`ps -ef | grep sms-2.0.jar | grep -v grep | awk '{print $2}'`
if [ -z "$PID" ]
then
echo Application is already stopped
else
echo kill $PID
kill -9 $PID
fi

3.2 重启脚本run.sh:

1
2
3
4
echo stop application
source stop.sh
echo start application
source start.sh

3.3 说明:

1.新建一个目录autoDeploy与tomcat目录放在同级目录下
  (1)autoDeploy.sh放在autoDeploy目录下
  (2)需要部署的test.war放在autoDeploy目录下(test.war为需要部署的到tomcat上的war包)
2.tomcatPath=tomcat-7(指定tomcat文件目录名称,tomcat-7改为自己tomcat的目录名称)
3.执行autoDepoy.sh即可实现自动部署
  新建的autoDepoy.sh若没有执行权限,需要执行:chmod +x autoDeploy.sh