软件指南针:专注于软件传播与分享

Tomcat web应用部署 (官方文档)

来源:原创 2037次浏览 0条评论
☞ 本文主要介绍软件Apache Tomcat的相关内容:Tomcat web应用部署 (官方文档)

   其下列版本/分支可以参考本文:

  • 全部版本/分支

内容表

介绍

部署是一个术语,用以表示安装一个web应用(不管是第三方的WAR文件还是你自己的自定义web应用)到Tomcat服务器中的过程。

我们有多种方式来实现在Tomcat服务器上进行Web应用部署。

  • 静态的; 在Tomcat启动前安装web应用。
  • 动态的; 通过直接控制已经部署好的web应用(依靠自动部署功能),或者远程使用Tomcat Manager这一web应用。

Tomcat Manager是一个web应用,我们可以使用它来交互式(通过HTML GUI)或编程式(通过基于URL的API)地部署和管理web应用。

依靠Tomcat Manager,我们有多种方式来执行部署。Apache Tomcat提供了Apache Ant编译工具的相关任务。Apache Tomcat Maven插件项目提供了与Apache Maven的集成。还有一个叫做Client Deployer的工具,它可以在命令行中使用,并且提供额外的功能,例如编译和验证web应用,以及将web应用打包为WAR文件。

安装

web应用的静态部署不需要任何额外的安装要求,因为Tomcat自身就已经提供了。使用Tomcat Manager的部署功能也无需任何额外的安装要求,尽管在Tomcat Manager手册中详细列出了一些配置方面的要求。如果你希望使用Tomcat Client Deployer(TCD),则需要一个必要的安装。TCD并没有打包在Tomcat核心发布中,因此你必须从下载区域单独下载。该下载文件通常标示为apache-tomcat-8.0.x-deployer

TCD必须具备Apache Ant 1.6.2+和一个Java安装的前提条件。你的环境应该定义一个ANT_HONE的环境变量,并指向你的Ant安装的根目录;再定义一个JAVA_HOME,其值指向你的Java安装。此外,你应该确保Ant的ant命令以及Java的javac编译器命令能够在你的操作系统提供的命令外壳(command shell)中运行。

  1. 下载TCD发布版本。
  2. TCD包不需要提取到任何现有的Tomcat安装中,它可以被解压到任何位置。
  3. 使用Tomcat Client Deployer来读取。

关于上下文(Context)

在web应用部署的相关讨论中,你必须理解上下文(Context)这一概念。一个上下文就是Tomcat对一个web应用的称呼。

为了在Tomcat中配置一个上下文,我们需要一个上下文描述符(ContextDescriptor)。一个上下文描述符实际上就是一个XML文件,其中包括针对该上下文的Tomcat相关配置,例如命名资源或者会话管理器的配置。在Tomcat的早期版本中,上下文描述符配置的内容经常被存储在Tomcat的主要配置文件server.xml中,但是现在不鼓励这样做(尽管目前依然有效)。

上下文描述符不仅仅是帮助Tomcat了解如何配置上下文,诸如Tomcat Manager和TCD等其他工具也经常使用这些上下文描述符来履行自身的职责。

上下文描述符的路径为:

  1. $CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml
  2. $CATALINA_BASE/webapps/[webappname]/META-INF/context.xml

(1)中的文件被命名为[webappname].xml,而(2)中的文件被命名为context.xml。如果没有为一个上下文提供对应的上下文描述符,Tomcat将使用默认值来配置上下文。

在启动Tomcat时部署

如果你不想使用Tomcat Manager,或者TCD,那么你需要将web应用静态地部署到Tomcat中,紧接着启动Tomcat。对于这种部署来说,web应用的部署位置被叫做appBase,它可以在每个Host上被指定。你可以复制一个所谓的伸展开的web应用(也就是没有压缩的web应用)到这个位置,也可以将web应用资源压缩打包为一个.WAR文件。

只有在Host的deployOnStartup属性为"true"时,位于该Host(默认Host为"localhost")的appBase属性(默认的appBase$CATALINA_BASE/webapps)所指定位置的web应用将会在Tomcat启动时被部署。

这种情况下,Tomcat启动会遵循如下部署顺序:

  1. 首先部署任何上下文描述符。
  2. 部署那些没有被任何上下文描述符所引用的、而且是伸展开的web应用。如果它们在appBase中有一个关联的.WAR文件,并且它比伸展开的web应用更新,那么伸展开的web应用将会被移除,并通过该.WAR文件来重新部署web应用。
  3. 部署.WAR文件。

部署到正在运行的Tomcat服务器

我们可以将web应用部署到正在运行的Tomcat服务器上。

如果Host的autoDeploy属性为"true",该Host将自动尝试部署并更新web应用,如果需要的话,比如将一个新的.WAR文件放进appBase中。 对于这项工作,该Host需要启用后台处理,这也是默认的配置。

autoDeploy为"true"且正在运行的Tomcat允许:

  • 部署拷贝到该Host appBase的.WAR文件。
  • 部署拷贝到该Host appBase的伸展开的web应用。
  • 如果某个web应用是通过.WAR文件被部署的,当提供一个新的.WAR文件时,将重新部署之前已经部署过的web应用。在这种情况下,之前伸展开的web应用将会被移除,然后再将这个新的.WAR文件伸展开。注意,如果将unpackWARs属性设为"false",那么该Host就配置成了不伸展.WAR文件,也就不会发生任何伸展行为;在这种情况下,该web应用将会简单地被重新部署为一个压缩文件(不会伸展该.WAR,直接把它当作一个普通的压缩文件来对待)。
  • 如果更新了/WEB-INF/web.xml文件(或其他任何被定义为WatchedResource的资源),重新加载web应用。
  • 如果更新了已部署的web应用的上下文描述符文件,重新部署该web应用
  • 如果更新了全局的或每个host的上下文描述符文件,重新部署所有与之相关的web应用。
  • 如果在$CATALINA_BASE/conf/[enginename]/[hostname]/目录中添加了一个上下文描述符文件(文件名与之前已部署的web应用的上下文路径保持一致),则重新部署该web应用。
  • 如果删除了web应用的文档库,则解除对该web应用的部署。注意,在Windows系统中,这假设已经启用了防锁机制(请查看上下文配置),否则无法删除一个正在运行的web应用的资源。

注意,web应用的重载也可以在加载器中配置,这种情况下,已加载的类将会被跟踪以检测是否产生变化。

使用Tomcat Manager部署

请直接参考Tomcat Manager手册页面

使用Client Deployer部署

最后,我们可以使用Tomcat Client Deployer来实现web应用的部署。Tomcat Client Deployer是一个软件包,可以用来验证、编译、压缩为.WAR文件,以及部署web应用到生产环境或开发环境的Tomcat服务器上。值得注意的是,该功能使用了Tomcat Manager,并且目标Tomcat服务器必须处于正在运行状态。

此处假定用户熟悉Apache Ant,以便使用TCD。Apache Ant是一个脚本生成工具。TCD预装了一个可用的生成脚本。只需要你适度理解Apache Ant(如此页面之前列出的安装,熟悉操作系统命令外壳的使用和环境变量的配置)。

TCD包含Ant任务、用于在部署之前进行JSP编译的Jasper页面编译器,和一个验证web应用上下文描述符的任务。验证器任务(org.apache.catalina.ant.ValidatorTask类)只接收一个参数:一个伸展开的web应用的基础路径。

TCD使用一个伸展开的web应用作为输入口(请查看下面用到的属性列表)。部署人员以编程方式部署的web应用可能在/META-INF/context.xml中包含一个上下文描述符。

TCD包含一个准备使用的Ant脚本,可用于下列目标:

  • compile(默认): 编译和验证web应用程序。它可以被单独使用,并不需要一个正在运行的Tomcat服务器。由于Jasper生成的代码取决于它的运行时组件,编译的应用程序将只能够在关联的Tomcat X.Y.Z服务器发行版上运行,并不保证它能够在另一个Tomcat发行版上正常工作。值得注意的是,该目标也会自动编译位于web应用/WEB-INF/classes目录中的任何Java源代码。
  • deploy: 部署web应用(无论是否编译)到Tomcat服务器上。
  • undeploy: 解除部署web应用。
  • start: 启动web应用。
  • reload: 重载web应用。
  • stop: 停止web应用。

为了使部署能够被自行配置,你可以在TCD安装的根目录创建一个名为deployer.properties的文件。在这个文件中,每行添加下面的"name=value"的键值对。

此外,你需要确保已经为目标的Tomcat Manager创建了一个用户,否则TCD无法与Tomcat Manager进行身份验证,并导致部署失败。你可以查看Tomcat Manager页面完成相关操作。

  • build: 创建将要使用的文件夹,默认为${build}/webapp/${path}(${build}默认指向${basedir}/build)。在结束对目标的编译之后,web应用的.WAR文件将位于${build}/webapp/${path}.war
  • webapp: 包含伸展开的web应用的目录,web应用将会被编译和验证。默认情况下,该文件夹为myapp
  • path: web应用程序部署的上下文路径,默认为/myapp
  • url: 正在运行的Tomcat服务器上的Tomcat Manager的绝对URL,可用于部署和解除部署web应用。默认情况下,部署人员将尝试访问localhost上的一个Tomcat实例,http://localhost:8080/manager/text
  • username: Tomcat Manager的用户名(用户应该具备manage-script角色权限)。
  • password: Tomcat Manager密码。

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部