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

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

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

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

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

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

其他内容参考:tomcat官方文档翻译

介绍

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

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

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

  

  如果是使用静态部署,或者使用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/${path}。在编译任务结束后,编译的结果将会保存为${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管理器的授权问题,如果不能正常使用管理器,该部署也会失败。

参考

Tomcat 部署详解的更多相关文章

  1. Solr部署详解

    Solr部署详解 时间:2013-11-24 方式:转载 目录 1 solr概述 1.1 solr的简介 1.2 solr的特点 2 Solr安装 2.1 安装JDK 2.2 安装Tomcat 2.3 ...

  2. centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解

    centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解 环境准备: 操作系统:centos ...

  3. tomcat配置文件详解

    Tomcat系列之服务器的安装与配置以及各组件详解   tomcat 配置文件详解

  4. 【转】Nginx+php-fpm+MySQL分离部署详解

    转:http://www.linuxidc.com/Linux/2015-07/120580.htm Nginx+php-fpm+MySQL分离部署详解 [日期:2015-07-26] 来源:Linu ...

  5. TOMCAT原理详解及请求过程(转载)

    转自https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Ser ...

  6. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

  7. tomcat 日志详解

    1 tomcat  日志详解 1.1  tomcat 日志配置文件 tomcat 对应日志的配置文件:tomcat目录下的/conf/logging.properties. tomcat 的日志等级有 ...

  8. [svc]tomcat配置文件详解

    Tomcat系列之服务器的安装与配置以及各组件详解 tomcat 配置文件详解 tomcat安全管理规范

  9. legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)

    legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead) 一.总结 一句话总结: 1.安装的话就是下载好git,va ...

随机推荐

  1. nginx location在配置中的优先级

    location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location.= 进行普通 ...

  2. Npoi实现Excel绘制功能

    使用Npoi操作Excel,是我一直很喜欢的一种方式. 说简单也简单,但是封装好重用性,易用性,也稍稍费了些时间.在这里做个记录,免得以后遗忘. 首先说一下需求,需求有两点 1.新建Excel,并下载 ...

  3. C#调用c++的dll报错:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏“

    一:c++代码内部报错引起.可能是空指针或者其他. 二:需要从c#代码调试进入c++代码.可以吧c++的dll和pdb拷入工程项目的debug目录下面. 三:我发现的错误时在C++内部声明啦全局变量, ...

  4. 《JavaScript权威指南》学习笔记 第三天 找个对象

    现实生活中真的对象没有找到,在JavaScript 里左一个对象又一个对象,搞的我也是晕晕乎乎不知所云.人事复杂,人心难懂.我虽然是文科生,但是也不善于巧言.还是在js里面找找对象吧.那么我们今天就从 ...

  5. HTML5系列二(标签元素、FileReader、拖放)

    nav元素的使用场合 页面中可以包含多个nav元素,通常情况下头部和尾部都会包含导航,这样提高了可访问性,访客能够清晰的将其辨认出来.nav元素是一个可以用来作为页面导航的链接组:其中的导航元素链接到 ...

  6. zabbix监控系列(3)之zabbix触发器格式配置

    前言 今天公司线上环境新添一个监控项,监控 一些日志的是否出现错误,有错误就及时报警,那么问题来了 ,报警必须告诉我们哪个日志有错误,这样才能够快速定位到哪个日志有问题. 配置 zabbix-agen ...

  7. 一个C#解决方案中各文件夹存放了些什么

    在VS2015中"生成"(Build)的过程: Source Code(.cs) -> Compile -> Object File(intermediate file ...

  8. C# LIST列表的使用

    1.  List的基础.常用方法: 声明: 1.List<T> mList = new List<T>(); T为列表中元素类型,现在以string类型作为例子 E.g.: L ...

  9. Java数据库——事务处理

    在数据库中执行5条SQL语句,这些SQL语句本身需要保持一致,即要么同时成功,要么同时失败 事务基本操作 //============================================= ...

  10. NumberFormat类

    NumberFormat表示数字的格式化类,即可以按照本地的风格习惯进行数字的显示. NumberFormat是一个抽象类,和MessageFormat类一样,都是Format类的子类,本类在使用时可 ...