Tomcat 部署详解

前篇大概讲过了tomcat的发布和部署,以及测试html

本篇详细介绍下tomcat的部署相关的内容,本篇主要内容:web

1 介绍下部署相关的内容,须要安装的文件以及上下文描述符apache

静态部署——在tomcat启动时部署tomcat

动态部署——在运行时自动部署app

4 使用TCD完成部署,另外还能够对应用进行编译、校验、打包等功能。webapp

其余内容参考:tomcat官方文档翻译工具

介绍

  部署就是把web应用开发时的文件拷贝到tomcat容器中,并对其进行编译等操做,使用户能够访问到该应用。在tomcat中有多种部署方式:测试

  1 静态部署:直接拷贝相应的web展开目录、或者war包。(展开目录的意思就是tomcat能够直接访问的应用目录,是未通过压缩的。相反的就是war包,是一种通过压缩的web应用文件)。ui

  2 动态部署:经过tomcat管理器或者其余工具(如TCD,tomcat client deployer)执行部署。url

  

  若是是使用静态部署,或者使用tomcat管理器进行部署是不须要安装任何东西的。

  可是若是要使用TCD进行部署,那么就须要预先安装JDK和Ant,由于TCD中内置的是Ant的任务构建脚本;而后再下载TCD的部署包。

 

  另外,还须要了解一个概念——上下文,Context。在tomcat中,上下文就是一个web应用。在以前的tomcat版本中,上下文信息是配置在server.xml中的,如今仍然能够,可是官方并不推荐这种作法。

  上下文路径主要在:

  1  CATALINA_HOME/conf/容器名字/主机名字/应用名字.xml

  2  CATALINA_HOME/webapps/应用名字/META-INF/context.xml

  其中路径1中:容器名字(enginename)一般为Catalina、主机名字为localhost。相关内容能够查看server.xml中:

  

静态部署——在tomcat启动时部署

  部署时,涉及到一个变量appBase。这个变量标识了一个目录,该目录存放着部署的web应用。

  通常默认状况下,appBase为CATALINA_HOME/webapps,配置信息位于server.xml中。

  其中经常使用的几个选项:

  appBase指定了部署的目录;

  autoDeploy设置是否自动部署(下小节动态部署中会介绍);

  unpackWARs设置了部署的形式,若是为true,则会以展开的形式部署;若是为false,则会以war包的形式部署。

  设置了以上的内容后(以上都是tomcat默认的配置,不须要作任何改动),当启动tomcat时,就会自动部署在appBase目录下的应用。

  并会按照下面的顺序进行部署:

  1 部署上下文描述符。

  2 部署展开的应用。若是部署目录中存在相应的war包,则检查是否比当前的应用更新;若是更新,则删除当前的应用,并解压该war包,获得最新的应用。

  3 部署war包。

动态部署——在tomcat运行时部署

  动态部署须要一个配置参数,就是上面提到的 autoDeploy 为 true。

  当设置了该属性后,tomcat会在其运行时支持以下的操做:

  1 部署新拷贝到appBase下的war文件

  2 部署拷贝到appBase下的展开的应用(未压缩的)

  3 当提供一个更新的war包时,从新部署应用。会先删除当前存在的应用,再进行解压部署。

  4 当/WEB-INF/web.xml被改写时,自动部署

  5 当web应用的context.xml上下文描述符被更新时,自动部署

  6 当CATALINA_HOME/conf下对应的应用的上下文描述符被更新时,自动部署

  7 当对应的docBase文档被删除时,自动部署。

使用TCD客户端程序部署

  TCD即tomcat客户端部署工具,它使用了Ant的构建脚本,所以须要具备必定Ant的知识。

  使用过程以下:

  首先,须要安装Ant以及JDK(这个就不说了,没它tomcat也跑步起来)。配置ANT_HOME和JAVA_HOME。

  而后,下载TCD部署包。通常咱们使用的时候下载的是上面的核心包,若是想要使用TCD则须要下载下面的部署包。

  下载后在任意位置解压:

  能够看到目录中包含一个build.xml,TCD的相关任务内容就配置在这里面。

  下面看看这个构建脚本都包括什么任务:

  1 编译:

  编译和校验应用。这部分功能能够独立使用,而且不须要运行中的tomcat。通过编译的应用只能与相应版本的tomcat相关联,不能保证在其余版本的容器中也能使用,这是由于编译生成的代码与运行的组件有关系。须要注意的是,这个任务也会自动编译在/WEB-INF/classes目录下的类。

  2 部署:在tomcat容器中部署应用

  3 解除部署:解除应用的部署

  4 开始:开始web应用

  5 从新加载:从新加载web应用

  6 中止:中止web应用

  另外能够在deployer.properties中配置TCD相关的部署信息,而且按照键值对的形式配置。

  主要包括如下的内容:

  1 build:构建目录,默认是build/webapp/build/webapp/{path}。在编译任务结束后,编译的结果将会保存为build/webapp/build/webapp/{path}.war

  2 webapp:这个目录包含了将被编译和校验的展开应用。默认为myapp

  3 path:应用的部署上下文路径,默认是/webapp

  4 url:tomcat容器中管理器应用的绝对地址,改地址将会用于部署和解除部署应用。默认,部署会尝试进入默认的Locahost实例,即http://localhost:8080/manager

  5 username:tomcat管理器的用户名

  6 password:tomcat管理器的用户密码

  须要注意的是tomcat管理器的受权问题,若是不能正常使用管理器,该部署也会失败。

参考

  【1】Tomcat Web Application Deployment

相关文章
相关标签/搜索