此脚本主要用来实现非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

shell 实现war包的配置更新和自动发布的更多相关文章

  1. springboot+vue前后端分离,nginx代理配置 tomcat 部署war包详细配置

    1.做一个小系统,使用了springboot+vue 基础框架参考这哥们的,直接拿过来用,链接https://github.com/smallsnail-wh/interest 前期的开发环境搭建就不 ...

  2. Centos7安装Tomcat并部署DubboAdmin的War包并配置自动启动

    一.安装过程 1.打开官网,在左侧选择要下载的版本,比如下下载Tomcat8:https://tomcat.apache.org/download-80.cgi 2.找到tar.gz的下载地址:htt ...

  3. MyEclipse生成WAR包并在Tomcat下部署发布(转发)

    从来没有想过web项目还能打包的,但是有要求,就不得不去实现,在网上找了一下,发现挺简单的. 首先是使用MyEclipse将web项目打包,如下图所示. 右键选中项目,选择export. 然后选择J2 ...

  4. MyEclipse生成WAR包并在Tomcat下部署发布[转]

      从来没有想过web项目还能打包的,但是有要求,就不得不去实现,在网上找了一下,发现挺简单的. 首先是使用MyEclipse将web项目打包,如下图所示. 右键选中项目,选择export. 然后选择 ...

  5. Windows下配置Jenkins 实现自动发布maven项目至tomcat(svn+maven+tomcat)

    Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放tomcat的8080端口 Linux(CentOS):firewall-cmd --zone=public ...

  6. 【Tomcat】shell获得war包

    功能: 将maven项目打包复制到tomcat/webapps set git=C:\Users\zhengwenqiang\git set tomcat=e:\tomcat7.0.64 c: cd ...

  7. 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)

    Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放weblogic的7001端口 Linux(CentOS):firewall-cmd --zone=publ ...

  8. 【Tomcat】shell 部署配置 war包

    使用shell 一次执行,将项目中的war包的配置全部修改 #!/bin/bash #----------------------------------------------- # FileNam ...

  9. Tomcat:tomcat部署war包配置SSL访问

    Linux-CentOS7部署 war放置 war放到tomcat的webapps目录内 修改配置 修改tomcat的server.xml文件 HTTP: 找到Connector元素,修改端口 HTT ...

随机推荐

  1. win下的常用8个命令

    windows下常用的几个指令 一,ping 它是用来检查网络是否通畅或者网络连接速度的命令.作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的 ...

  2. CAN通讯基本设置

    A节点pelican协议下,扩展帧 单滤波方式 A节点的接收滤波器 ID号 设置为 0x19881205 设置过程 (1) pelican模式设置 设置时钟分频寄存器CDR.7 =1 使SJA1000 ...

  3. 安装scrapy框架报错是常见问题

    还好,本人只碰到其中一个bug,以下是此次安装经验 环境 py3.4 windows7 64位 安装有VS2010 pip包管理(pycharm) 报错信息 安装lxml过程中报错:error: co ...

  4. .Net有哪些大型项目、大型网站的案例?

    .Net开发的部分知名网站案例:http://www.godaddy.com 全球最大域名注册商http://www.ips.com 环迅支付,国内最早的在线支付平台http://www.icbc.c ...

  5. 安装npm install时,长时间停留在fetchMetadata: sill 解决方法——换npm的源

    安装npm install时,长时间停留在fetchMetadata: sill mapToRegistry uri http://registry.npmjs.org/whatwg-fetch处, ...

  6. BMP字节流转成CBitmap类

    BYTE* m_pBmpData = NULL; BITMAPINFO* m_pBmpInfo = new BITMAPINFO[sizeof(BITMAPINFOHEADER)+sizeof(RGB ...

  7. raspberry pi-php-exec

    遇到的问题是在树莓派上搭建的web服务器,想通过网页操控树莓派的gpio,网页是通过php实现的,通过php的exec函数调用写好的程序实现对gpio的操作,但是赖何没有效果,分析也知道是权限问题,最 ...

  8. c# 类型转换 int.TryParse() 方法

    public static bool TryParse(string s, out Int32 result); 如果转换成功则返回true.否则返回false int.TryParse(string ...

  9. 2019山东ACM省赛L题题解(FLOYD传递闭包的变形)

    本题地址 https://cn.vjudge.net/contest/302014#problem/L Median Time Limit: 1 Second      Memory Limit: 6 ...

  10. SpringBoot实现OAuth2认证服务器

    一.最简单认证服务器 1. pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <a ...