2

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

所以我已经在网上搜索过,但我只找到在我的情况下不起作用的“解决方案”。这是我到目前为止所做的:

  1. 我将我的 websiteA.war 作为 ROOT.war 复制到 $CATALINA_HOME/webapps/ 文件夹中
  2. 我还将我的 websiteB.war 作为 WebsiteB.war 复制到 $CATALINA_HOME/webapps/ 文件夹中
  3. 我通过以下方式修改了我的 $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"

  4. 我在文件夹 "$CATALINA_HOME/conf/Catalina/www.websiteB.com" 中创建了以下文件 ROOT.xml:

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

    上下文 displayName="www.websiteB.com" docBase="" path=""

    /语境

  5. 重新启动tomcat。websiteA.com 部署在“/”下,websiteB.com 部署在“/websiteB”下

  6. 输入 www.websiteB.com 到达“/”,这意味着 websiteA 实际上显示为 websiteB.com

我在这里做错了什么?

4

1 回答 1

1

转到您的$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。所以两个目录共存!

于 2018-04-09T06:27:44.713 回答