shell 实现war包的配置更新和自动发布

此脚本主要用来实现非maven tomcat项目的war包手动发布,

1、将测试war包上传至指定目录

2、备份目前生产代码

3、自动配置文件替换

4、新版本代码的发布

#!/bin/bash

############Setup basic path and configuration file name #########################
date=`date +%Y%m%d`
tomcat_home=/usr/local/kencery/tomcat
app_name=bqjr_fss
backup_home=~/appbak
app_home=$tomcat_home/webapps/$app_name
upload_war_home=/home/bqadm/deploy_directory
declare -a config_file=(WEB-INF/classes/dbconfig.properties WEB-INF/classes/global.properties WEB-INF/classes/mq.properties WEB-INF/classes/sso.properties WEB-INF/classes/config.properties WEB-INF/classes/log4j.properties WEB-INF/classes/quartz.properties WEB-INF/classes/uncheckedspxinfotemplate.xlsx )

#config_file主要用于配置需要替换的配置文件;

#################################################################################
process_check(){
count=`ps -ef |grep $1 |grep -v "grep" |wc -l`
if [ $count -eq 1 ];then
id=`ps -ef|grep $1 |grep -v "grep"|awk '{print $2}'`
echo -e "$1 is running,and PID is $id.\n"
elif [ $count -eq 0 ]; then
echo -e "$1 is Not running , start later\n"
return 41
fi
}

tomcat_stop(){
log_directory=`pwd`
echo -e "Start to stop tomcat:\n"
/bin/sh /$1/bin/shutdown.sh >> $log_directory/stop.log
i=0
while [ `ps -ef|grep $1|grep -v grep|wc -l` -eq 1 ]; do
echo -e "..........................\n"
if [ $(($i+1)) -gt 3 ]; then
echo "Stop tomcat failed,Kill tomcat\n"
PID=`ps -ef|grep $1|grep -v grep|awk '{print $2}'`
kill -9 $PID
break
fi
sleep 10
done
if [ `ps -ef|grep $1|grep -v grep|wc -l` -eq 0 ]; then
echo -e "Success to stop `basename $1`: \033[41;36m [OK] \033[0m\n"
else
echo -e "Failed to stop `basename $1`: \033[41;36m [Faild] \033[0m\n"
fi
}

tomcat_start(){
log_directory=`pwd`
echo -e "Start to start tomcat:\n"
echo -e "..........................\n"
/bin/sh /$1/bin/startup.sh >> $log_directory/start.log
rm -rf $1/webapps/*
cp -r $upload_war_home/$app_name.war $1/webapps/
j=0
while [ `ps -ef|grep $tomcat_home|grep -v grep|wc -l` -ne 1 ]; do
if [ $(($j+1)) -gt 3 ]; then
echo "Start failed,please check log\n";break
fi
sleep 10
done
if [ `ps -ef|grep $1|grep -v grep|wc -l` -eq 1 ]; then
echo -e "Success to start `basename $1`: \033[41;36m [OK] \033[0m\n"
else
echo -e "Failed to start `basename $1`: \033[41;36m [Faild] \033[0m\n";exit 33
fi
}
##########Backup && War package upload#############################################
if [ -d $bak_$date/$app_name ];then
echo -e "Backuped, No more backup.\n"
else
mkdir -p $backup_home/bak_$date
scp -r $app_home $backup_home/bak_$date/
ls -lsh $backup_home/bak_$date
echo -e "Backup was done, Start to check war package.\n"
fi

a=y
#read -p "Please ensure that war package has been uploaded:(y/n):" a
cd ..
cd $upload_war_home
if [ $a == 'y' ] ;then
if [ -f $app_name.war ]; then
echo -e "War package was uploaded.Will replace the configuration file.\n"
else
echo -e "No War package,Please upload the war package to $upload_war_home.\n"; exit 0
fi
else
echo "Choice is NO. War package hasnot been uploaded,Please upload the war file to $upload_war_home."; exit 0

fi

###########Replace configuration file#######################################################################

echo -e "Start to replace confige file"
mkdir -p $upload_war_home
for var in ${config_file[@]};
do
cd $app_home
cp --parents $var $upload_war_home
done
cd $upload_war_home
for var in ${config_file[@]};
do
jar -uvf $app_name.war $var
done

############Application deploy##################################################################################
process_check `basename $tomcat_home`
if [ $? -eq 41 ]; then
tomcat_start $tomcat_home
else
tomcat_stop $tomcat_home
tomcat_start $tomcat_home
fi

转载于:https://www.cnblogs.com/xiaopaipai/p/8970512.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值