centos部署tomcat项目Shell脚本配置

将两个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

原创地址:https://blog.csdn.net/qq_38439885/article/details/79993389

 

 

另一种网上部署脚本,和上面两个独立,原创地址

#Tomcat根目录
TOMCAT_HOME="/usr/local/tomcat/apache-tomcat-9.0.0.M4"
#端口
TOMCAT_PORT=8080
#TOMCAT_PID用于检测Tomcat是否在运行
TOMCAT_PID=`lsof -n -P -t -i :${TOMCAT_PORT}`
 
#如果Tomcat还在运行
if [ -n "${TOMCAT_PID}" ]; then
 #关闭Tomcat
 ${TOMCAT_HOME}/bin/shutdown.sh
 #循环检查Tomcat是否关闭完成
 while [ -n "${TOMCAT_PID}" ]
 do
  #等待1秒
  sleep 1
  #获取8080端口运行进程PID,如果PID为空则表示Tomcat已经关闭
  TOMCAT_PID=`lsof -n -P -t -i :${TOMCAT_PORT}`
  echo "正在关闭Tomcat["${TOMCAT_PORT}"]..."
 done
 echo "成功关闭Tomcat."
fi
 
warPath="${TOMCAT_HOME}/webapps/war包名称/"
warFile="${TOMCAT_HOME}/webapps/war包名称.war"
 
#如果文件或者文件夹存在则删除
deleteWhenExist(){
 if [ -e $1 ]; then
  rm -rf $1
 fi
}
 
deleteWhenExist ${warPath}
deleteWhenExist ${warFile}
 
#拷贝新编译的包到Tomcat
cp 项目名称/target/war包名称.war ${TOMCAT_HOME}/webapps/
 
${TOMCAT_HOME}/bin/startup.sh
echo "正在启动Tomcat["${TOMCAT_PORT}"]..."
 
#检测Tomcat是否启动完成
while [ -z "${TOMCAT_PID}" ]
do
 sleep 1
 #echo "TOMCAT_PID["${TOMCAT_PID}"]"
 TOMCAT_PID=`lsof -n -P -t -i :${TOMCAT_PORT}`
 echo "正在启动Tomcat["${TOMCAT_PORT}"]..."
done
 
echo "成功启动Tomcat."

 

你可能感兴趣的:(Linux,工具)