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

如下是部署脚本deploy.sh:

#!/bin/bash
#自动部署脚本 #tomcat路径
tomcatBinPath=/alidata/server/tomcat-7.0./bin
#war包和脚本目录
homepath=/home/baihuidong/DeployApplicationForTomcat echo '--------开始部署--------' #检查war包是否存在
cd $homepath
if [ $(find ./ -maxdepth -name "*.war"|wc -l) -ne ]; then
echo '请保证DeployApplicationForTomcat文件中有且只有一个war包!'
exit
fi #进入tomcat目录
cd $tomcatBinPath
if [ $? -ne ];then
echo '请检查tomcat的bin路径是否正确!'
exit
fi
echo "进入tomcat的bin目录:$tomcatBinPath" pid=$(ps -fu `whoami`|grep "$tomcatBinPath"|grep -v grep|awk '{print $2}')
if [ -z "$pid" ];then
echo "相关tomcat进程已关闭:$pid"
else
./shutdown.sh #停止tomcat服务
sleep
kill - $pid
echo '成功关闭tomcat服务!'
fi #清空oldWarPackage目录
cd $homepath
if [ $? -ne ];then
echo '请检查homepath路径是否正确或者是否有权限进入!'
exit
fi if [ -d $homepath/oldWarPackage ];then
echo "oldWarPackage文件夹存在!"
rm -rf $homepath/oldWarPackage/*
else
echo "oldWarPackage文件夹不存在!"
mkdir $homepath/oldWarPackage
fi cd $tomcatBinPath/../webapps/
if [ $? -ne 0 ];then
echo '请检查webapps路径是否正确!'
exit 1
fi
echo "进入webapps目录:$(pwd)" cp *.war $homepath/oldWarPackage/
if [ $? -ne 0 ];then
echo '请检查webapps下是否有war包或者oldWarPackage目录是否存在!'
exit
fi rm -rf *
cp $homepath/*.war ./ chown root:root *.war
chmod 755 *.war cd $tomcatBinPath
./startup.sh echo '--------部署结束--------'

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

回滚脚本rollback.sh:

#!/bin/bash
#回滚脚本 #war包和脚本目录
homepath=/home/baihuidong/DeployApplicationForTomcat cd $homepath/oldWarPackage
if [ $(find ./ -maxdepth -name "*.war"|wc -l) -ne ]; then
echo '请保证oldWarPackage文件中有且只有一个war包!'
exit
fi echo '------回滚开始------'
cd ../
rm -rf ./*.war
cp ./oldWarPackage/*.war ./
./deploy.sh
echo '------回滚结束------'

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

注意:

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

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

使用如下命令进行转换:

chmod  deploy.sh    //设置执行权限
dos2unix deploy.sh //格式转化
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. spring cloud之docker微服务客户端注册eureka问题

    正常我们起一个微服务注册到eureka他的实例id是默认这样的主机名称:服务名称:服务端口号, 如果配置eureka.instance.prefer-ip-address=true则实例id为主机Ip ...

  2. Collection Map Java数据结构

    Collection Map 框架图 Collection          接口的接口   对象的集合 ├ List                   子接口      按进入先后有序保存   可 ...

  3. vi/vim命令使用

    首先讲一些vim和vi的区别: 它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.vim的这些优势主要体现在以下几个方面:1.多级撤消我们知道 ...

  4. HTML DOM firstChild lastChild nextSibling previousSibling 属性_获取属性值的undefined问题

    <html> <head> <title>HTML示例</title> <style type="text/css"> ...

  5. 文件上传and富文本页面

    文件上传功能: 1.首先在index.jsp的界面上初始化一个表单. <body> <form enctype="multipart/form-data" act ...

  6. HTML5元素周期表

    HTML5元素周期表 根元素 1. html 文档根元素 元数据和脚本 1. head HTML文档中的第一个元素.包含文档元数据 2. title 文档标题 3. meta 文档的元数据. meta ...

  7. Django-DRF(1)

    一. WEB应用模式 在开发Web应用中,有两种应用模式: 1. 前后端不分离 2. 前后端分离 二. API接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的 ...

  8. ImportError: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

    该错误原因是libpython3.6m.so.1.0不存在 解决方案 1.查看/usr/lib/x86_64-linux-gnu/目录下是否存在libpython3.m.so.1.0文件,或者直接全盘 ...

  9. 《ThinkPHP 5.0快速入门》 基础和路由

    一.基础: 创建项目:conposer create-project topthink/think tp5 --prefer-dist 创建项目模块:php think build --module ...

  10. Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...