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
shell 实现war包的配置更新和自动发布的更多相关文章
- springboot+vue前后端分离,nginx代理配置 tomcat 部署war包详细配置
		
1.做一个小系统,使用了springboot+vue 基础框架参考这哥们的,直接拿过来用,链接https://github.com/smallsnail-wh/interest 前期的开发环境搭建就不 ...
 - Centos7安装Tomcat并部署DubboAdmin的War包并配置自动启动
		
一.安装过程 1.打开官网,在左侧选择要下载的版本,比如下下载Tomcat8:https://tomcat.apache.org/download-80.cgi 2.找到tar.gz的下载地址:htt ...
 - MyEclipse生成WAR包并在Tomcat下部署发布(转发)
		
从来没有想过web项目还能打包的,但是有要求,就不得不去实现,在网上找了一下,发现挺简单的. 首先是使用MyEclipse将web项目打包,如下图所示. 右键选中项目,选择export. 然后选择J2 ...
 - MyEclipse生成WAR包并在Tomcat下部署发布[转]
		
从来没有想过web项目还能打包的,但是有要求,就不得不去实现,在网上找了一下,发现挺简单的. 首先是使用MyEclipse将web项目打包,如下图所示. 右键选中项目,选择export. 然后选择 ...
 - Windows下配置Jenkins 实现自动发布maven项目至tomcat(svn+maven+tomcat)
		
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放tomcat的8080端口 Linux(CentOS):firewall-cmd --zone=public ...
 - 【Tomcat】shell获得war包
		
功能: 将maven项目打包复制到tomcat/webapps set git=C:\Users\zhengwenqiang\git set tomcat=e:\tomcat7.0.64 c: cd ...
 - 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)
		
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放weblogic的7001端口 Linux(CentOS):firewall-cmd --zone=publ ...
 - 【Tomcat】shell 部署配置 war包
		
使用shell 一次执行,将项目中的war包的配置全部修改 #!/bin/bash #----------------------------------------------- # FileNam ...
 - Tomcat:tomcat部署war包配置SSL访问
		
Linux-CentOS7部署 war放置 war放到tomcat的webapps目录内 修改配置 修改tomcat的server.xml文件 HTTP: 找到Connector元素,修改端口 HTT ...
 
随机推荐
- python学习笔记2018-9-18
			
1.可选参数传递 此处m=1并不是写定m必为1,而是m为可选参数,当不对其进行赋值时,其默认值为1. 2.函数的返回值 return可以传递0个返回值,也可以传递任意多个返回值 3.局部变量与全局变量 ...
 - yum相关变量浅析
			
问题背景 同事发现一台centos7机器的yum repo不能使用,现象为相关的repo的meta文件下载失败,提示相关meta文件的下载路径有问题. 问题分析 通过终端输出的报错,发现是/etc/y ...
 - git上传流程
			
转: 1.在github上创建项目 2.使用git clone https://github.com/xxxxxxx/xxxxx.git克隆到本地 3.编辑项目 4.git add . (将改动添加到 ...
 - MSDN原版系统镜像ISO下载站
			
官网 网址1:http://www.imsdn.cn/ Windows 10 最新版本 1909 正式版 ISO 镜像下载 (微软 MSDN / VL 官方原版系统) 网址2:https://www. ...
 - 官网英文版学习——RabbitMQ学习笔记(七)Topic
			
在上一篇中使用直接交换器改进了我们的系统,使得它能够有选择的进行接收消息,但它仍然有局限性——它不能基于多个条件进行路由.本节我们就进行能够基于多个条件进行路由的topics exchange学习. ...
 - js实现二叉查找树
			
二叉树的特点: 像一颗树一样,从顶端往下延伸,最顶端的为根节点,每个节点下面子节点的数不超过两个,没有任何子节点的节点被称为叶子节点, 除了根节点和叶子节点的被称为中间节点. 二叉查找树: 每个节 ...
 - 八十六、SAP中ALV的事件查看
			
一.事务代码SE37,点击运行 二.再点击执行 三.我们可以看到有17个事件,点击17前面的表格图标 四.来到详细的事件中 五.我们回到SE37,点击显示 六.查看参数,为一个内表 七.我们点击SLI ...
 - SQL优化工具 - SQL Server Profiler与数据库引擎优化顾问
			
最近项目做到几千个学生分别去人脸识别记录(目前约630000行)中查询最后一次记录,可想而知性能这块是个麻烦.于是乎,GET到了SQL Server Profiler和数据库引擎优化顾问这俩工SHEN ...
 - C#当前程序路径获取
			
//获取当前进程的完整路径,包含文件名(进程名).string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (. ...
 - Spark 集群 任务提交模式
			
Spark 集群的模式及提交任务的方式 本文大致的内容图 Spark 集群的两种模式: Standalone 模式 Standalone-client 任务提交方式 提交命令 ./spark-subm ...