【问题标题】:Is Apache Tomcat meant to be one install per hosted application?Apache Tomcat 是否意味着每个托管应用程序安装一次?
【发布时间】:2019-02-23 07:45:20
【问题描述】:

我正在尝试了解 Apache Tomcat 遵循的模型,但文档显然对我没有意义。

据我了解,Tomcat 是用于托管各种服务的服务器 - 所以它非常通用。我有这个应用程序,我正在尝试了解如何托管,它的主要部署方法似乎是作为 Tomcat 托管的 Web 服务 - 该应用程序称为 Camunda(它在 github 上)。在浏览了 Camunda 的文档后,我的 Tomcat 目录中充满了与 Camunda 相关的 jar 和配置文件等。文档说只需将所有内容直接放入 Tomcat lib 文件夹、conf 文件夹等。

我对其他“平台”/“服务”风格的主机应用程序的大部分经验是,应用程序本身(在本例中为 Tomcat)在其自己的目录中保持不变。通过配置文件等,它知道如何托管它需要托管的任何东西。

在 Tomcat 的情况下,似乎习惯上基本上用一堆托管内容的库“污染”Tomcat 目录?

这就是为什么我将标题命名为“Tomcat 是否意味着每个应用程序安装一个”,因为出于所有意图和目的,一旦您在 Tomcat 中托管某些内容,该目录就会变得如此耦合,以至于 Tomcat 目录就是那个东西。

这正常吗?只是在文档中可能会用其他术语寻找一些澄清,因为文档对我来说似乎不是很清楚。

这是我正在关注和引用的安装过程的链接:https://docs.camunda.org/manual/latest/installation/full/tomcat/manual/

【问题讨论】:

  • 一个链接会很有帮助,因为有多个类似名称的项目。您是正确的,通常,多个应用程序(此处称为“Servlet”)部署到单个 Tomcat 实例,每个作为 Tomcat 将提取(解压缩)的 .war 文件(基本上是一种特殊的 .jar 文件)。遵循 camunda/camunda-bpm-workbench "Install-Workbench-inside-an-Application-Server" 的指南?这自 2015 年以来没有更新,但如果它真的是你需要的......他们也有一个独立的应用程序:github.com/camunda/camunda-bpm-workbench/wiki/…
  • 关于“污染”Tomcat 目录,这个答案可能会有所帮助:stackoverflow.com/a/10077070/10898724
  • 将任何 JAR 文件放入 Tomcat 的lib 目录的唯一原因是为了在应用程序之间共享它或克服一些安全问题。如果您的应用供应商的建议是在那里安装他们所有的 JAR 文件,他们不知道他们在说什么。除了他们的 .war 文件之外,通常没有理由安装 任何东西
  • @CodeShane 我编辑了我的原始帖子并添加了我正在关注的安装指南的链接:docs.camunda.org/manual/latest/installation/full/tomcat/manual
  • 谢谢你,@Ryan - 一旦我们有一个完整的问题,我就会发布一个完整的答案,但很高兴看到你已经找到了答案。 :)

标签: java tomcat


【解决方案1】:

我已经有一段时间没有使用 Tomcat 了,但它不仅不是每个应用程序安装一次,甚至不是每个虚拟主机安装一次。

Tomcat(除其他外)是一个servlet 容器。 servlet 的目录布局等已在 Java Servlet Specification v2.2 中标准化。您可以下载最新的 servlet 规范here

文档说只需将所有内容直接放入 Tomcat lib 文件夹、conf 文件夹等中。

希望他们谈论的是.war 文件或类似文件中的那些,或者共享位置中的共享 库。您可以将共享库放在可以跨应用程序(甚至虚拟主机)重用的位置,这在磁盘空间更昂贵的时候可能很有用,但是现在我假设大多数人将应用程序的库放在 @应用程序的.war 文件中的 987654328@ 目录。

This page 讨论了.war 文件的“目录”布局(基本上是具有特定结构的.jar)。

确实,通常.war 文件会扩展为 Tomcat 安装目录的子目录,但正如在注释中链接到的 the answer 中指出的那样,您可以修改 server.xml 文件以使其看起来其他地方。

您可以安装一个名为 Manager 的 Web 应用程序,该应用程序有助于通过 .war 文件安装、激活、停用和管理 Web 应用程序。 (还有一个Host Manager 用于管理虚拟主机。)

综上所述,如果您愿意,您当然可以为每个 Tomcat 安装一个应用程序。您需要在它前面有一个反向代理(Apache、Nginx 等),因此可以将相同的端口(例如 80)用于各种应用程序的外部 URL,并且您需要分配每个 Tomcat 安装它自己的内部端口供反向代理与之通信。

【讨论】:

    猜你喜欢
    • 2016-08-29
    • 2016-09-29
    • 2020-09-19
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2019-05-28
    • 2014-08-15
    • 2012-12-17
    相关资源
    最近更新 更多