【问题标题】:Deploy several webapps configured as Root in a same instance of Tomcat在同一个 Tomcat 实例中部署多个配置为 Root 的 webapp
【发布时间】:2011-06-02 15:53:51
【问题描述】:

我有大约 6 或 7 个 web 应用程序,它们被配置为部署为 Tomcat (6) 上的根应用程序。所以,以后每个应用都可以被http://host:8080/访问

我必须在一台计算机上部署这些 web 应用程序以用于 QA 环境。该团队评论说使用一个 Tomcat 实例,并将每个 webapp 部署在不同的端口上,因此它们仍将被部署为根应用程序。

关于如何执行此操作以及最佳方法是什么的任何建议?

【问题讨论】:

  • 我可以问你为什么这些应用程序必须是一个根应用程序?通常,以 URL 方式分隔它们是非常有意义的......
  • 这是客户的要求之一。我讨论过这个,显然我必须保持这样。
  • 如果应用有相同的url,用户如何区分它们?
  • 通常这样的请求意味着他们想要启用虚拟主机,并让同一个盒子的不同主机名解析到不同的应用程序。想想http://webmail.webserver.com/http://www.webserver.com/webmail

标签: java tomcat


【解决方案1】:

您需要查看虚拟主机。

根上下文的常规主机查找类似于http://www.mymachine.com:8080/,当您想将两个应用程序放在同一个上下文中时,Tomcat 不能这样做,因为它不知道哪个应用程序应该响应这样的查找.通常,Tomcat 通过促进将不同应用程序放置在“应用程序”路径中来解决这些冲突,就像这样

http://www.mymachine.com:8080/app1 (maps to) "Application 1"
http://www.mymachine.com:8080/app2 (maps to) "Application 2"

但是,对于虚拟主机,需要配置一个 Web 服务器来响应多个主机名查找。有了这样的配置,主机名就可以用作区分符。

http://app1.mymachine.com:8080/(root) (maps to) "Application 1"
http://app2.mymachine.com:8080/(root) (maps to) "Application 2"

请注意,这样的配置需要您做额外的工作,确保 DNS 知道两个主机名并将它们映射回同一个 Tomcat 服务器。然后必须配置 Tomcat(或 Apache,如果在您的 Tomcat 服务器前面运行 Apache 服务器)以通过其主机名和应用程序路径将请求映射到 web 应用程序,而不是仅通过应用程序路径映射到 web 应用程序。

Here is the documentation on how to do this in Tomcat 6.0。请注意,这不适用于使两个主机名解析到同一台机器所需的必要网络工作。祝你好运!

【讨论】:

    【解决方案2】:

    我认为你不能只使用一个实例。

    如果您需要每个应用程序作为根应用程序运行,那么您将必须在不同的端口上运行多个 tomcat 实例。

    要部署为根应用程序,只需将应用程序命名为 ROOT.war 并将其放在 Tomcat 的 webapps 目录中。

    至于这是否是正确的方法,我不得不不同意。您很可能会遇到 Port in Use 地狱。必须管理 tomcat 使用的所有不同端口将是非常困难和愚蠢的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 2012-01-18
      • 2014-11-24
      • 2010-10-10
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多