web server apache tomcat11-03-deploy 如何部署

前言

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

开源项目

从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。

系列文章

web server apache tomcat11-01-官方文档入门介绍

web server apache tomcat11-02-setup 启动

web server apache tomcat11-03-deploy 如何部署

web server apache tomcat11-04-manager 如何管理?

web server apache tomcat11-06-Host Manager App -- Text Interface

web server apache tomcat11-07-Realm Configuration

web server apache tomcat11-08-JNDI Resources

web server apache tomcat11-09-JNDI Datasource

web server apache tomcat11-10-Class Loader

....

Tomcat Web 应用部署

简介

部署是指将 Web 应用程序(无论是第三方 WAR 文件还是自定义的 Web 应用程序)安装到 Tomcat 服务器的过程。

在 Tomcat 服务器内,可以通过多种方式来完成 Web 应用程序的部署。

  • 静态部署:在启动 Tomcat 之前设置 Web 应用程序。
  • 动态部署:通过直接操作已部署的 Web 应用程序(依赖自动部署功能)或通过使用 Tomcat Manager Web 应用程序来远程部署。

Tomcat Manager 是一个 Web 应用程序,可以以交互方式(通过 HTML GUI)或以编程方式(通过基于 URL 的 API)来部署和管理 Web 应用程序。

有许多依赖于 Manager Web 应用程序的部署方式。

Apache Tomcat 提供了用于 Apache Ant 构建工具的任务。

Apache Tomcat Maven 插件项目提供了与 Apache Maven 的集成。

还有一个称为 Client Deployer 的工具,可以从命令行使用,并提供了额外的功能,例如编译和验证 Web 应用程序,以及将 Web 应用程序打包成 Web 应用资源(WAR)文件。

安装

对于静态部署 Web 应用程序,不需要安装,因为 Tomcat 默认提供了此功能。对于使用 Tomcat Manager 的部署功能,虽然需要一些配置(如 Tomcat Manager 手册中详细说明的那样),但不需要安装。但是,如果要使用 Tomcat Client Deployer (TCD),则需要安装。

TCD 不包含在 Tomcat 核心发行版中,因此必须从下载区域单独下载。下载通常标记为 apache-tomcat-11.0.x-deployer。

TCD 的先决条件是 Apache Ant 1.6.2+ 和 Java 安装。您的环境应定义一个 ANT_HOME 环境值,指向 Ant 安装的根目录,以及一个 JAVA_HOME 值,指向您的 Java 安装。

另外,您应确保 Ant 的 ant 命令和 Java 的 javac 编译器命令可以在您的操作系统提供的命令 shell 中运行。

  1. 下载 TCD 分发包。

  2. TCD 分发包不需要解压到任何现有的 Tomcat 安装中,它可以解压到任何位置。

  3. 阅读《使用 Tomcat Client Deployer》文档。

关于 Context

在讨论 Web 应用程序的部署时,需要理解 Context 的概念。Context 是 Tomcat 所称的 Web 应用程序。

为了在 Tomcat 中配置 Context,需要一个 Context 描述符。Context 描述符只是一个包含与 Context 相关的 Tomcat 配置的 XML 文件,例如命名资源或会话管理器配置。在较早版本的 Tomcat 中,Context 描述符配置的内容通常存储在 Tomcat 的主配置文件 server.xml 中,但现在已不鼓励这样做(尽管目前仍然有效)。

Context 描述符不仅帮助 Tomcat 知道如何配置 Context,还帮助其他工具(如 Tomcat Manager 和 TCD)正确执行其功能。

Context 描述符的位置包括:

  • $CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml

  • $CATALINA_BASE/webapps/[webappname]/META-INF/context.xml

第一种情况的文件命名为 [webappname].xml,而第二种情况的文件命名为 context.xml。如果没有为 Context 提供 Context 描述符,Tomcat 将使用默认值配置 Context。

在 Tomcat 启动时部署

如果您不想使用 Tomcat Manager 或 TCD,则需要将 Web 应用程序静态部署到 Tomcat,然后启动 Tomcat。您需要将 Web 应用程序部署到称为 appBase 的位置,该位置由 Host 指定。您可以将所谓的“已解压” Web 应用程序(即非压缩的)复制到此位置,也可以将压缩的 Web 应用程序资源 .WAR 文件复制到此位置。

在默认的情况下,位于主机(默认主机为“localhost”)appBase 属性(默认 appBase 为“$CATALINA_BASE/webapps”)指定的位置中存在的 Web 应用程序仅在 Host 的 deployOnStartup 属性为“true”时才会在 Tomcat 启动时部署。

在这种情况下,以下部署顺序将在 Tomcat 启动时发生:

  1. 首先部署任何 Context 描述符。

  2. 然后部署任何未被任何 Context 描述符引用的已解压的 Web 应用程序。如果它们在 appBase 中有一个关联的 .WAR 文件,并且该文件比已解压的 Web 应用程序更新,则将删除已解压的目录,并重新部署 Web 应用程序。

  3. 部署 .WAR 文件。

在运行的 Tomcat 服务器上部署

可以将 Web 应用程序部署到运行中的 Tomcat 服务器上。

如果 Host 的 autoDeploy 属性设置为“true”,则 Host 将尝试根据需要动态部署和更新 Web 应用程序,例如

,如果新的 .WAR 放入了 appBase 中。要使此功能正常工作,Host 需要启用后台处理,这是默认配置。

autoDeploy 设置为“true”并且运行中的 Tomcat 允许:

  • 将 .WAR 文件复制到 Host 的 appBase 中进行部署。

  • 将已解压的 Web 应用程序复制到 Host 的 appBase 中进行部署。

  • 如果提供了新的 .WAR 文件,则重新部署已经部署的 Web 应用程序。在这种情况下,将删除已解压的 Web 应用程序,并重新展开 .WAR。请注意,如果 Host 配置为不展开 .WAR(unpackWARs 属性设置为“false”),则不会执行展开操作,此时 Web 应用程序将作为压缩的存档重新部署。

  • 如果更新了 /WEB-INF/web.xml 文件(或任何其他定义为 WatchedResource 的资源),则重新加载 Web 应用程序。

  • 如果更新了从中部署了 Web 应用程序的 Context 描述符文件,则重新部署 Web 应用程序。

  • 如果由 Web 应用程序使用的全局或每个主机的 Context 描述符文件已更新,则重新部署依赖的 Web 应用程序。

  • 如果在 $CATALINA_BASE/conf/[enginename]/[hostname]/ 目录中添加了一个文件(文件名对应于先前部署的 Web 应用程序的 Context 路径),则重新部署 Web 应用程序。

  • 如果删除了其文档基址(docBase)的 Web 应用程序,则卸载它。请注意,在 Windows 上,这假定启用了反锁定功能(参见 Context 配置),否则无法删除正在运行的 Web 应用程序的资源。

请注意,还可以在加载器中配置 Web 应用程序重新加载,这样加载的类将被跟踪以进行更改。

使用 Tomcat Manager 进行部署

Tomcat Manager 在自己的手册页面中进行了详细介绍。

使用客户端部署包进行部署

最后,可以使用 Tomcat 客户端部署程序来部署 Web 应用程序。这是一个可以用来验证、编译、压缩为 .WAR,并将 Web 应用程序部署到生产或开发 Tomcat 服务器的包。应该注意,此功能使用 Tomcat Manager,因此目标 Tomcat 服务器应该正在运行。

假设用户熟悉 Apache Ant 以使用 TCD。Apache Ant 是一个脚本化的构建工具。TCD 包含一个预打包的构建脚本。只需要对 Apache Ant 有一些基本的了解(如本页中列出的安装,并熟悉使用操作系统命令 shell 和配置环境变量)。

TCD 包含 Ant 任务,用于 JSP 编译的 Jasper 页面编译器,以及用于验证 Web 应用程序 Context 描述符的任务。验证器任务(类 org.apache.catalina.ant.ValidatorTask)仅允许一个参数:已解压的 Web 应用程序的基本路径。

TCD 使用已解压的 Web 应用程序作为输入(请参阅下面使用的属性列表)。通过 deployer 进行编程部署的 Web 应用程序可以在 /META-INF/context.xml 中包含 Context 描述符。

TCD 包含一个可立即使用的 Ant 脚本,具有以下目标:

  • compile(默认):编译和验证 Web 应用程序。这可以独立使用,不需要运行的 Tomcat 服务器。编译的应用程序仅在关联的 Tomcat X.Y.Z 服务器发布中运行,并不能保证在另一个 Tomcat 发布中工作,因为 Jasper 生成的代码依赖于其运行时组件。还应该注意,此目标还会自动编译位于 /WEB-INF/classes 文件夹中的任何 Java 源文件。
  • deploy:将 Web 应用程序(已编译或未编译)部署到 Tomcat 服务器。
  • undeploy:卸载 Web 应用程序
  • start:启动 Web 应用程序
  • reload:重新加载 Web 应用程序
  • stop:停止 Web 应用程序

为了配置部署,需要在 TCD 安装目录根目录下创建一个名为 deployer.properties 的文件。在此文件中,每行添加以下名称=值对:

此外,您需要确保为目标 Tomcat Manager(TCD 使用的)设置了用户,否则 TCD 将无法与 Tomcat Manager 进行身份验证,部署将失败。

要执行此操作,请参阅 Tomcat Manager 页面。

参考资料

https://tomcat.apache.org/tomcat-11.0-doc/deployer-howto.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/550858.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习和深度学习--李宏毅(笔记与个人理解)Day17

Day 17Convolutional Neyral Network (CNN) 卷积神经网络一般都用在image 上面比较多一些,所以课程的例子大多数也都是image Image Classification the same size how about for pc? 这里对于tensor 张量这个概念,我还是比较奇怪,在我认为一…

算法思想总结:链表

一、链表的常见技巧总结 二、两数相加 . - 力扣(LeetCode) class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//利用t来存进位信息int t0;ListNode*newheadnew ListNode(0);//创建一个哨兵节点,方便尾插List…

网工基础协议——TCP/UDP协议

TCP和UDP的不同点: TCP(Transmission Control Protocol,传输控制协议); UDP(User Data Protocol,用户数据报协议); TCP:传输控制协议,面向连接可靠的协议,只能适用于单播通信&…

【教程】一个比较良心的C++代码混淆器

这是一个比较良心的C代码混淆器,用于信息竞赛训练和保护代码免受抄袭。本文将介绍这个混淆器的使用方法、混淆效果和已知的一些bug。同时,我们也会给出一些示例来演示混淆器的具体操作。 引言 在信息竞赛训练和实际开发中,保护代码的安全性和…

闲不住,手写一个数据库文档生成工具

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 个人IP:shigen 逛博客的时候,发现了一个很有意思的文章:数据库表结构导…

JL-32 土壤速测仪 手持便携可移动 多要素参数可选配

产品概述 土壤速测仪是一款携带方便,操作简单,集采集与存储于一体的可移动式观测仪器。由手持式速测主机、土壤类传感器、USB数据线、电源适配器、便携式手提箱等部分组成。速测仪主机可通过集线器接入不同类型的传感器,互不影响精度&#x…

【二分查找】Leetcode 74. 搜索二维矩阵【中等】

搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则&#xff0c…

记录Python链接mysql数据的增删改查方法

一、添加方法 db pymysql.connect(hostlocalhost,userroot,password123456,dbpython) cursor db.cursor() sql """insert into EMPLOYEEVALUES(3,张,天爱,35,F,8000) """ try:cursor.execute(sql)db.commit() #提交后,数据才会变 …

Springboot+Vue项目-基于Java+MySQL的网上超市系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

Jackson 2.x 系列【28】Spring Boot 集成之 Long 精度损失

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 问题场景2. 原因分析3. 解决方案4. 案例演示4.…

Python 物联网入门指南(七)

原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者:飞龙 协议:CC BY-NC-SA 4.0 第二十四章:基本开关 到目前为止一定是一段史诗般的旅程!回想一下你开始阅读这本书的时候,你是否曾想象…

v-for中涉及的key

一、为什么要用key? key可以标识列表中每个元素的唯一性,方便Vue高效地更新虚拟DOM;key主要用于dom diff算法,diff算法是同级比较,比较当前标签上的key和标签名,如果都一样,就只移动元素&#…

(十二)C++自制植物大战僵尸游戏多用户存档实现(一)

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs 游戏存档 游戏存档允许玩家保存游戏进度,以便在之后的时间继续游戏。通过存档,玩家可以暂停游戏并在需要时重新开始,而不必从头开始或重新完成已经完成的任务。游戏通常提供多个…

VAR:自回归家族文生图新SOTA,ImageNet上超越Diffusion与DiTs

一、背景: 在人工智能领域,尤其是计算机视觉和自然语言处理中,自回归(AR)大型模型(如GPT系列)因其强大的生成能力和在多种任务上的通用性而受到广泛关注。这些模型通过自监督学习策略&#xff0…

PMP有用吗,PMP含金量,如何转型项目经理?

为什么要学习PMP知识,PMP培训哪家好? IT行业项目管理一枚,曾在做技术的时候对自己的职业发展越来越迷茫,不想干到35岁就参与到失业潮中,一直在想着办法提升自己的能力和竞争力,直到了解到了PMP认证。也就是…

二维码门楼牌管理应用平台建设:场所维护的新篇章

文章目录 前言一、二维码门楼牌管理应用平台的兴起二、民警与网格员的角色定位三、场所信息审核的重要性四、技术支持与创新应用五、未来展望与挑战 前言 随着信息技术的飞速发展,二维码门楼牌管理应用平台的建设正成为城市管理的新宠。该平台不仅提高了场所管理的…

HR招聘人才测评,如何考察候选人的内驱力?

HR的日常招聘工作中,如何去评估候选人的内驱力。人的内驱力,在职业生涯中,是极为重要的品质,也被列入综合素质测评。 内驱力,是指一个人出于内心深处的热情和追求,自发驱动自己持续学习、不断进步&#xf…

jenkins从节点配置说明

目的 打包构建时使用从节点,从节点所在服务器配置4C8G5000G(服务器2) 前提 首先在服务器1上部署jenkins服务,即主节点,默认节点名称为master 步骤 1)登录进入jenkins平台,在系统设置中&…

项目风采展示【车酷-保时捷第二屏】

桌面功能介绍: 1:支持本地app桌面展示 2:支持本地音乐控制

LeetCode 每日一题 Day 123-136

1379. 找出克隆二叉树中的相同节点 给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。 其中,克隆树 cloned 是原始树 original 的一个 副本 。 请找出在树 cloned 中,与 tar…
最新文章