Tomcat6 vhost问题

Tomcat6 vhost问题

我一直在 XP 开发机器上使用 vhosts,几乎没有遇到任何问题,但我似乎无法在 Ubuntu 上复制环境。我已经在 /etc/hosts 中添加了一行,如下所示:

127.0.0.1    localhost
127.0.0.1    test    # ADDED

然后,在 server.xml 中新建一个 Host 条目:

<Host name="test"  appBase="webapps2" unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
</Host>

然后为了验证它是否有效,我将默认的 webapps 复制到 webapps2 中。然后确保权限甚至所有者和组都完全相同。然而,当我将浏览器指向http://测试:8080,我得到:

The requested resource (/) is not available. 

这几天我一直被这个问题困扰,我知道我可能忽略了一些非常简单的东西。有人有什么想法吗?

答案1

终于让它工作了。在 tomcat 文档中,我解释了以下行:

For Tomcat 6, unlike Tomcat 4.x, it is NOT recommended to place
<Context> elements directly in the server.xml file.

意味着上下文元素根本不应该在 server.xml 中定义。因此,按照建议,我使用了 myWebappROOT/META-INF 目录并在其中定义了 context.xml。但是此段:

* Only if a context file does not exist for the application in the
$CATALINA_BASE/conf/[enginename]/[hostname]/, in an individual file at /META-
INF/context.xml inside the application files. If the web application is
packaged as a WAR then /META-INF/context.xml will be copied to
$CATALINA_BASE/conf/[enginename]/[hostname]/ and renamed to match the
application's context path. Once this file exists, it will not be replaced if
a new WAR with a newer /META-INF/context.xml is placed in the host's appBase.

...似乎表明我在 META-INF 中定义的第一个上下文将放置在上述目录中,并且不会被后续编辑所替换。我已选择删除 [enginename]/[hostname] conf 文件(对我来说是 Catalina/test),并在 server.xml 中添加最小上下文元素。这似乎暂时解决了问题,至少从开发环境的角度来看是这样。希望有人能进一步阐明在生产环境中部署额外虚拟主机的正确方法。

答案2

我遇到了同样的问题。我不确定我是否理解了你的回答。我所做的是:

  1. 将应用程序移动到旁边的文件夹webapps(在我的示例中,我们称之为my-folder),应用程序被移动到其ROOT子文件夹
  2. 从第二台主机中删除了 ROOT.xml $CATALINA_BASE/conf/[enginename]/[hostname]/,我甚至不确定是否真的需要这一步
  3. 在主机元素内添加上下文元素,如下所示:

    <Host name="my-domain.name" appBase="my-folder" autoDeploy="true" unpackWARs="true">
    <Context path="/"></Context>
    </Host>
    

不知何故,它运行了默认应用程序,位于webapps/ROOT响应所有域和直接 IP http 调用。my-folder/ROOT响应my-domain.name符合预期。

相关内容