一般情况下使用的Linux环境都是加固的,root路径只有超级管理员权限才能进入。我们新建一个自己的用户,在/home下会有一个用户目录,传输war包都放在这个目录下,此时不动webapps文件下的内容,传输包的时候,项目不会中断。

如下是部署脚本deploy.sh:

  1. #!/bin/bash
  2. #自动部署脚本
  3.  
  4. #tomcat路径
  5. tomcatBinPath=/alidata/server/tomcat-7.0./bin
  6. #war包和脚本目录
  7. homepath=/home/baihuidong/DeployApplicationForTomcat
  8.  
  9. echo '--------开始部署--------'
  10.  
  11. #检查war包是否存在
  12. cd $homepath
  13. if [ $(find ./ -maxdepth -name "*.war"|wc -l) -ne ]; then
  14. echo '请保证DeployApplicationForTomcat文件中有且只有一个war包!'
  15. exit
  16. fi
  17.  
  18. #进入tomcat目录
  19. cd $tomcatBinPath
  20. if [ $? -ne ];then
  21. echo '请检查tomcat的bin路径是否正确!'
  22. exit
  23. fi
  24. echo "进入tomcat的bin目录:$tomcatBinPath"
  25.  
  26. pid=$(ps -fu `whoami`|grep "$tomcatBinPath"|grep -v grep|awk '{print $2}')
  27. if [ -z "$pid" ];then
  28. echo "相关tomcat进程已关闭:$pid"
  29. else
  30. ./shutdown.sh #停止tomcat服务
  31. sleep
  32. kill - $pid
  33. echo '成功关闭tomcat服务!'
  34. fi
  35.  
  36. #清空oldWarPackage目录
  37. cd $homepath
  38. if [ $? -ne ];then
  39. echo '请检查homepath路径是否正确或者是否有权限进入!'
  40. exit
  41. fi
  42.  
  43. if [ -d $homepath/oldWarPackage ];then
  44. echo "oldWarPackage文件夹存在!"
  45. rm -rf $homepath/oldWarPackage/*
  46. else
  47. echo "oldWarPackage文件夹不存在!"
  48. mkdir $homepath/oldWarPackage
  49. fi
  50.  
  51. cd $tomcatBinPath/../webapps/
  52. if [ $? -ne 0 ];then
  53. echo '请检查webapps路径是否正确!'
  54. exit 1
  55. fi
  56. echo "进入webapps目录:$(pwd)"
  57.  
  58. cp *.war $homepath/oldWarPackage/
  59. if [ $? -ne 0 ];then
  60. echo '请检查webapps下是否有war包或者oldWarPackage目录是否存在!'
  61. exit
  62. fi
  63.  
  64. rm -rf *
  65. cp $homepath/*.war ./
  66.  
  67. chown root:root *.war
  68. chmod 755 *.war
  69.  
  70. cd $tomcatBinPath
  71. ./startup.sh
  72.  
  73. echo '--------部署结束--------'

若部署中间出错,则使用回滚脚本

回滚脚本rollback.sh:

  1. #!/bin/bash
  2. #回滚脚本
  3.  
  4. #war包和脚本目录
  5. homepath=/home/baihuidong/DeployApplicationForTomcat
  6.  
  7. cd $homepath/oldWarPackage
  8. if [ $(find ./ -maxdepth -name "*.war"|wc -l) -ne ]; then
  9. echo '请保证oldWarPackage文件中有且只有一个war包!'
  10. exit
  11. fi
  12.  
  13. echo '------回滚开始------'
  14. cd ../
  15. rm -rf ./*.war
  16. cp ./oldWarPackage/*.war ./
  17. ./deploy.sh
  18. echo '------回滚结束------'

其实这里的回滚脚本,是重新部署原war包的方案。还有一种方案,就是备份webapps路径下的war包和ROOT文件夹,回滚之后拷贝到webapps下,重启tomcat,这样省去了Tomcat解压war包的时间。

注意:

如果在Linux下使用vim命令编写脚本,需添加相关执行权限才能被执行(文件名变成绿色)。

如果在windows下编写的sh脚本,传到Linux上,需要增加相关执行权限,且需要格式转化

使用如下命令进行转换:

  1. chmod deploy.sh //设置执行权限
  2. dos2unix deploy.sh //格式转化
  3. busybox dos2unix deploy.sh //如果提示dos2unix命令找不到,使用这条

还可以使用vim进行格式转化。具体看我的vim的文章。

Tomcat项目自动部署脚本的更多相关文章

  1. myeclipse + tomcat 项目自动部署

    在MyEclipse中设置项目的自动部署需要综合考虑两个方面: 1是MyEclipse本身,通过主菜单中project->auto ,另一个就是tomcat配置文件.配置文件包括 conf 下的 ...

  2. linux 项目自动部署脚本

    1.使用maven获取源码部署,并可替换配置文件(金融数据分析平台) #!/bin/bash#设置变量cd /home#停止tomcatecho "开始停止tomcat..." p ...

  3. 【Shell学习笔记3》实践项目自动部署脚本】shell中获取返回值、获取当前sh文件路径

    原创部分: 1.获取返回值 #This is a shell to Deploy Project #!/bin/bashcheck_results=`ps -ef | grep "java& ...

  4. Eclipse中的Web项目自动部署到Tomcat

    原因 很长时间没用Eclipse了,近期由于又要用它做个简单的JSP项目,又要重新学习了,虽然熟悉的很快,但记忆总是很模糊,偶尔犯错,以前很少写博客,现在感觉还是很有必要的,编程中每个人对于犯过的错误 ...

  5. [转]Eclipse中的Web项目自动部署到Tomcat

    原文地址:http://www.cnblogs.com/ywl925/p/3815173.html 原因 很长时间没用Eclipse了,近期由于又要用它做个简单的JSP项目,又要重新学习了,虽然熟悉的 ...

  6. Eclipse中WEB项目自动部署到Tomcat

    原因 很长时间没用Eclipse了,近期由于又要用它做个简单的JSP项目,又要重新学习了,虽然熟悉的很快,但记忆总是很模糊,偶尔犯错,以前很少写博客,现在感觉还是很有必要的,编程中每个人对于犯过的错误 ...

  7. Eclipse中的Web项目自动部署到Tomcat(转)

    转自:http://www.cnblogs.com/ywl925/p/3815173.html 问题: 这里就有个问题,是怎么把Eclipse中的网站项目自动部署到tomcat中.在Eclipse中做 ...

  8. ant+svn+tomcat实现项目自动部署

    因工作需要,研究并实现了 ant+svn+tomcat实现项目自动部署,其中参考了下面文章:http://www.cnblogs.com/taoweiji/p/3700915.html jar包需要e ...

  9. Eclipse中的Web项目自动部署到Tomcat的webapp目录下

    Eclipse中的Web项目自动部署到Tomcat   原因 很长时间没用Eclipse了,近期由于又要用它做个简单的JSP项目,又要重新学习了,虽然熟悉的很快,但记忆总是很模糊,偶尔犯错,以前很少写 ...

随机推荐

  1. 2.使用kubeadm快速搭建k8s集群

    准备工作: 时间同步 systemctl stop iptables.servicesystemctl stop firewalld.service 安装docker wget https://mir ...

  2. linux Centos系统安装Pycharm并创建软链接

    一.环境:Linux|CentOS系统 二.目的:在Linux环境下使用Pycharm(版本2018.3.4) 三.声明:不可用于商业,仅用于交流使用! 1.下载Pycharm压缩包: cd ~ wg ...

  3. C# WindowService 动态修改服务名

    serviceInstaller1中可以设置服务名,描述等 在实际情况中,我们可能需要将Service多开来达到我们的目的,但是安装两次以上会有错误提示,因为服务名已经重复了,这个时候,我们需要动态改 ...

  4. Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法

    时隔一个多月我又回来啦! 坚持真的是很难的一件事,其它事情稍忙,就很容易说服自己把写博客的计划给推迟了. 好在终于克服了自己的惰性,今天又开始了. 本篇继续我的Luaframework学习之路. 一. ...

  5. K8S知识点总结

    一.K8S介绍: Kubernetes(k8s)是Google开源的容器集群管理系统.在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模 ...

  6. [bzoj3162]独钓寒江雪_树hash_树形dp

    独钓寒江雪 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3162 题解: 首先,如果没有那个本质相同的限制这就是个傻逼题. 直接树形dp ...

  7. PAT A1042 Shuffling Machine

    自己思路,没通过 #include <cstdio> #define N 54 int main() { #ifdef ONLINE_JUDGE #else freopen("1 ...

  8. 深入应用C++ 11 C2

    template<typename T> void print(T& t) { cout << "lvalue" << endl; } ...

  9. jQuery+php+ajax实现无刷新上传文件功能

    jQuery+php+ajax实现无刷新上传文件功能,还带有上传进度条动画效果,支持图片.视频等大文件上传. js代码 <script type='text/javascript' src='j ...

  10. 前端BOOM和DOOM

    BOOM :是指浏览器对象模型,它使JavaScript 有能力与浏览器进行 对话DOM:  是指文档对象模型,通过它可以访问HTML文档的所有元素 Windows对象 所有的浏览器都支持Window ...