快速部署tomcat项目的Shell脚本

工作需要负责项目的打包发布,一直手敲命令进行发布,费时费力。今天抽空学习了下shell脚本,以他人博客上的例子为参考,编写了两个shell脚本用于快速部署tomcat项目。

学习的博客原文链接如下:

点击打开链接

========================================================================

使用方法,将两个shell脚本置于tomcat的bin目录下,chmod +x 为两个脚本给上可执行权限,直接用./deploy.sh或./restart.sh执行即可。

具体实现功能:

1.deploy.sh首先删除webapps目录下项目war包(tomcat会自动删除war包解压出来的文件夹)。

2.shutdown关闭tomcat,如若3s后还未关闭使用kill -9 杀死该进程。

3.将已上传到指定位置的war包部署到tomcat并通过restart.sh重启tomcat。

下面附上代码:

deploy.sh

#! /bin/sh

bin=$(cd `dirname $0`;pwd)
pid=`ps aux | grep tomcat | grep -v grep | grep -v deploy |grep ${bin} |awk '{printf $2}'`
war=/data/kmss/resource/war/jl_server.war

if [ ! -f "${war}" ]; then 
	echo '请部署jl_server.war包至/data/kmss/resource/war/目录下';
fi

echo "Deploy ${war##*/}..."

if [ -f "${bin}/../webapps/jl_server.war" ];then 
	echo "========rm jl_server.war========="
	rm -rf ${bin}/../webapps/jl_server.war
fi

#关闭本项目的tomcat进程
if [ -n "${pid}" ];then 
	echo "==========shutdown.sh============"
	${bin}/shutdown.sh
	sleep 3
	
	pid=`ps aux |grep tomcat | grep -v grep | grep -v deploy | grep ${bin} |awk '{printf $2}'`
	if [ -n "${pid}" ]; then 
	echo "==========kill tomcat============"
	kill -9 ${pid}
	fi
fi

sleep 5

if [  -d "${bin}/../webapps/jl_server" ]; then 
	echo "==========rm jl_server==========="
	rm -rf ${bin}/../webapps/jl_server
fi

#部署war包到tomcat
mv ${war} ${bin}/../webapps

echo "Restart tomcat..."
exec ${bin}/restart.sh

tomcat启动时若war包被删除,tomcat会自动删除war包解压出来的文件夹,但若在删除过程中tomcat进程被关闭则文件夹可能未来得及被删除,所以在关闭进程后确认文件夹是否被删除。

参考博文中博主使用$1实现在输入命令时  使用参数定位war包位置,因为本项目只有单个war包需要上传所以直接在脚本中固定war包位置。如有需要可参考文章头部链接内博主博文。



restart.sh

#!/bin/sh

echo "===========restart jl tomcat=============";
bin=$(cd `dirname $0`;pwd)
pid=`ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} |awk '{printf $2}'`
dat=`date '+%Y-%m-%d %H:%M:%S'`

echo "now time: $dat"
echo "$pid"

if [ -n "$pid" ]; then 
{
	echo ============shutdown.sh ================
	$bin/shutdown.sh
	sleep 3
	pid=`ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} |awk '{printf $2}'`
	if [ -n "$pid" ];then 
		echo ============kill tomcat=================
		kill -9 $pid
	fi
	echo ============startup.sh =================
	$bin/startup.sh
}
else
	echo ============startup.sh =================
	${bin}/startup.sh

fi
# $1代表在命令后输入的第一个参数
if [ "$1" == "-v"  ]; then 
	tail -f ${bin}/../logs/catalina.out
fi

restart.sh启动使用./restart.sh用于重启tomcat,若tomcat进程原本关闭则直接启动。

在命令后加上-v 参数即可打印tomcat日志。  ./restart.sh -v

使用deploy.sh一键部署tomcat项目:


猜你喜欢

转载自blog.csdn.net/qq_38439885/article/details/79993389