1. 场景描述

linux下tomcat一键发布,包含停用服务、删除war包、拷贝war包及备份、重启服务等,以前的版本还包含svn更新及打包,后来在生产上怕出问题,改成本地打war包后,ftp上传到指定目录的方式。

2. 解决方案

2.1 真实代码

文件名称做了隐藏更改处理,修改文件路径后可使用。

#!/bin/sh
#1
instance="apache-tomcat-8.0.53";
tomcat_progrm="/home/laowang/programs/apache-tomcat-8.0.53";
target_home="/home/laowang/programs/dist";
target_home_back="/home/laowang/programs/dist/back"; function running(){
b=""
for ((i=0;i<=100;i+=2))
do
printf "progress:[%-50s]%d%%\r" $b $i
sleep 0.2
b=#$b
done
echo
}
#2
pid=`(ps -ef | grep $tomcat_progrm | grep -v "grep") | awk '{print $2}'`
kill -9 $pid
running ;
ps aux | grep $instance | grep -v grep;
#3
rm -rf ${tomcat_progrm}/webapps/laowang* ;
#4
mkdir ${target_home_back}/$(date +%Y%m%d%H%M%S)
cp ${target_home}/*.war ${target_home_back}/$(date +%Y%m%d%H%M%S)/ cp ${target_home}/*.war ${tomcat_progrm}/webapps/laowang-web.war
echo ${tomcat_progrm}/bin/startup.sh ;
#5
nohup ${tomcat_progrm}/bin/startup.sh;
running;
#6
tail -f ${tomcat_progrm}/logs/catalina.out ;

2.2 代码说明

2.2.1 定义变量

三个变量分别为tomcat解压目录,tomcat的war包是上传目录(可以任意定,只要有操作权限就行)、tomcat的war包子目录,备份用,也可以自己定义。

#1
instance="apache-tomcat-8.0.53";
tomcat_progrm="/home/laowang/programs/apache-tomcat-8.0.53";
target_home="/home/laowang/programs/dist";
target_home_back="/home/laowang/programs/dist/back";
2.2.2 查找现有tomcat进程并停用掉。
#2
pid=`(ps -ef | grep $tomcat_progrm | grep -v "grep") | awk '{print $2}'`
kill -9 $pid
running ;
ps aux | grep $instance | grep -v grep;
2.2.3 删除tomcat下历史war包
#3
rm -rf ${tomcat_progrm}/webapps/laowang* ;
2.2.4 新建备份文件夹,备份最新war包,并将最新war拷贝到tomcat的启动目录(webapps)
#4
mkdir ${target_home_back}/$(date +%Y%m%d%H%M%S)
cp ${target_home}/*.war ${target_home_back}/$(date +%Y%m%d%H%M%S)/ cp ${target_home}/*.war ${tomcat_progrm}/webapps/laowang-web.war
echo ${tomcat_progrm}/bin/startup.sh ;
2.2.5 启动tomcat服务
#5
nohup ${tomcat_progrm}/bin/startup.sh;
2.2.6 实时查看下日志,检验是否有错误。
#6
tail -f ${tomcat_progrm}/logs/catalina.out ;

2.3 最后说明

假如根据日志看没啥问题,或者有信心没问题,可直接按ctrl+c退出。


tomcat一键发布的更多相关文章

  1. Jenkins+tomcat自动发布的热部署/重启及遇到的坑解决办法

    一.背景 公司的项目一直手动maven打包.上传服务器.关闭/开启tomcat,整个流程下来耗时耗力,虽然可以将所有流程通过shell脚本一次性解决,但如果可以通过idea的Jenkins插件一键自动 ...

  2. 使用expect脚本语言写一键发布服务(代码发布、所有服务重启)

    互联网服务有很多台服务,但是在上线的时候需要将这些服务版本都更新与个个都重启,下面的脚本语言,就是一键发布服务~ 1.在/home/weihu/deploy/ 目录下建下publish .publis ...

  3. 一键发布ASP.NET Web安装程序

    转载自:http://www.cnblogs.com/nangong/p/Web.html        前言:最近公司有个Web要发布,但是以前都是由实施到甲方去发布,配置,这几天有点闲,同事让我搞 ...

  4. eclipse下修改项目名导致tomcat内发布名不一致的解决方法 .

    eclipse下修改项目名导致tomcat内发布名不一致的解决方法 . ------------------------------------------------------- 解决方案: 直接 ...

  5. Tomcat部署发布JSP应用程序的三种方法 (转)

    Tomcat部署发布JSP应用程序的三种方法     1.直接放到Webapps目录下      Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应 ...

  6. [原创*精华]一键发布ASP.NET Web安装程序,搞WebForm的童鞋看过来...

          重要更新:鉴于很多小伙伴们说看不到图,我这边换了几个浏览器看了下,都看得到的,估计是网速问题,请耐心等待,另外,为了更好的方便大家学习,特此提供源码以及一个word文档,word文档就是本 ...

  7. Tomcat 服务器及使用Eclipse绑定Tomcat并发布应用

    一.简介 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成 ...

  8. 一键发布部署vs插件[AntDeploy]开源了

    deploy to remote server by one button click 功能 支持docker一键部署(支持netcore) 支持iis一键部署(支持netcore和framework ...

  9. netcore开发windows普通服务(非Web)并一键发布到服务器

    如何开发并一键发布WindowsService项目(netcore普通项目) netcore下开发windows服务如果是web项目的话,由于aspnetcore本身是支持的,把默认的host.Run ...

随机推荐

  1. Plupload上传实例《模仿微云上传实例》,带源码

    Plupload上传实例<模仿微云上传实例>,带源码,作者:鱼塘总裁 如有疑问,加群交流:646104701 一.实例截图 1.上传过程 2.上传成功 3.上传失败 4.最小化 二.所需文 ...

  2. No module named import_export.admin Django python

    主要是安装xadmin后出现错误 解决方案: pip install django-import-export 重启即可

  3. WPF中的多进程(Threading)处理实例(二)

    原文:WPF中的多进程(Threading)处理实例(二) //错误的处理 private void cmdBreakRules_Click(object sender, RoutedEventArg ...

  4. 蓝牙模块在HHARM2410上的移植

    最近两天在HHARM2410-R3上移植了USB蓝牙设备和 BlueZ 蓝牙协议栈,呵呵,蓝牙果然是个很好的东西,协议栈内容很丰富,挂上去以后可以使用很多功能.我现在就可以用它来接收 GPS 数据以及 ...

  5. C#获取带汉字的字符串长度

    正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的.如下图: 所以应该用以下代码来获取长度: private void button1_Clic ...

  6. Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法

    原文:Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法 今天同事在做安装包的时候,有一个读取注册表路径的需求,需要根据 ...

  7. missing equal sign

    "UPDATE TB_BOOKINGSET REC_LOC_CODE = ?,CUSTOMER_ADDR?WHERE BOOKING_NO=? AND TRANSPORT_MODE=? &q ...

  8. Android零基础入门第85节:Fragment使用起来非常简单

    Fragment创建完成后并不能单独使用,还需要将Fragment加载到Activity中,在Activity中添加Fragment的方式有两种:静态加载和动态加载,接下来分别进行学习. 一.静态加载 ...

  9. ASP.NET MVC控制器Controller中参数

    前述文章参见:ASP.NET MVC控制器Controller 绪论 之前的控制器返回的均为常量字符串,接下来展示如何获取请求传来的参数,而返回"动态"的字符串. 可以在操作方法B ...

  10. layer 1.9.2 发布,国产 Web 弹层不懈的前行者

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...