我有两个域,但只有一个运行tomcat 7的虚拟服务器。我有自己的ubuntu Linux,在虚拟服务器上运行具有完全根访问权限。我设置了Shorewall防火墙,该防火墙将端口80上的任何请求转发到端口8080(tomcat正在侦听的端口)。

因此,我已经搜索了网络,但只找到了不适用于我的情况的“解决方案”。这是我到目前为止所做的:


我将我的websiteA.war作为ROOT.war复制到$ CATALINA_HOME / webapps /文件夹中
我也将我的websiteB.war作为WebsiteB.war复制到$ CATALINA_HOME / webapps /文件夹中
我以以下方式修改了$ CATALINA_HOME / conf / server.xml:

主机名=“ www.websiteA.com” appBase =“ webapps” unpackWARs =“ true” autoDeploy =“ true”

主机名=“ www.websiteB.de” appBase =“ webapps / websiteB” unpackWARs =“ true” autoDeploy =“ true”

主机名=“ localhost” appBase =“ webapps” unpackWARs =“ true” autoDeploy =“ true”
我在文件夹“ $ CATALINA_HOME / conf / Catalina / www.websiteB.com”中创建了以下文件ROOT.xml:

xml版本=“ 1.0”编码=“ UTF-8”?

上下文displayName =“ www.websiteB.com” docBase =“” path =“”

/上下文
重新启动tomcat。将websiteA.com部署在“ /”下,将websiteB.com部署在“ / websiteB”下
输入www.websiteB.com到达“ /”,这表示为siteB.com实际显示了websiteA


我在这里做错了什么?

最佳答案

转到您的$CATALINA_HOME/conf/server.xml文件。

在那里,您将找到以下部分:

<Engine name="Catalina" defaultHost="localhost">
    <!-- ... some other stuff ... -->
    <Host name="www.websiteA-Address" appBase="webapps" unpackWARs="true" autoDeploy="true"></Host>
    <Host name="www.websiteB-Address" appBase="directory/of/WAR-files-for-B" unpackWARs="true" autoDeploy="true"></Host>
    <Host name="websiteB-Address" appBase="directory/of/WAR-files-for-B" unpackWARs="true" autoDeploy="true"></Host>
    <Host name="www.websiteC-Address"  appBase="directory/of/WAR-files-for-C" unpackWARs="true" autoDeploy="true"></Host>
</Engine>


因此,appBase将是您必须放置ROOT.war(!)的目录,而name是将映射到该目录的域名。

directory/of/WAR-files$CATALINA_HOME中的子目录,与标准文件夹webapps处于同一级别(!!!)。因此,这两个目录共存!

10-05 19:50