我知道这个问题可能已经被问过很多次了,但我一直没能找到一个好的、最新的答案。我能找到的唯一指南是从 2005 年开始的,并且是在 tomcat 5 上。似乎很多操作系统路径都发生了变化。
我们的情况是这样的:
我们想在一台服务器上运行多个 tomcat 7 实例。每个 tomcat 提供不同的地址。例如,与 test.oursite.com
相比,www.oursite.com
应该由单独的 tomcat 提供服务。因此,例如,基本的 tomcat 安装将位于 /opt/tomcat/
中,实例特定目录(这是我从那个旧教程中可以看出的)将位于 /home/user1/some/path/
和 /home/user2/some/path
这样一切都很好地分开了。
任何人都可以指出一个好的教程,或者在这里解释一下设置的步骤吗?我对 apache 设置有点陌生。
这样做有什么优点/缺点吗?单个 tomcat 实例会更好吗?我们需要能够在不相互影响的情况下一次关闭一个站点。此外,我们的 DNS 提供商阻止我们设置隐蔽重定向,因此我们必须通过 apache 来获得漂亮的 URL,而不是直接重定向到 tomcat。
谢谢
最佳答案
我相信您在这里有 2 个问题:
- 如何在同一台服务器上运行多个 tomcat 实例并且应该 你?
- 如何配置apache httpd做虚拟主机和前端 Tomcat ?
对于1.下面是一个很好的教程,关于如何在同一台服务器上运行多个tomcat实例:http://java.dzone.com/articles/running-multiple-tomcat ,但是你应该吗?答案是“视情况而定”。如果你有一个 super 强大的盒子并且它没有得到充分利用,你应该这样做。它还取决于您为每个站点运行的应用程序类型。它一定会帮助您“一次关闭一个站点而不会相互影响”。使用我将在下一节中解释的 apache httpd 配置,您还可以在单独的机器(物理或虚拟机)上运行每个站点。
对于2,在你的情况下,你只需要配置apache httpd做虚拟主机,并使用ajp连接到tomcat。
<VirtualHost *:80>
ServerName www.oursite.com
ProxyPass / ajp://tomcat.oursite.com:8009/www retry=5
ProxyPassReverse / ajp://tomcat.oursite.com:8009/www
</VirtualHost>
<VirtualHost *:80>
ServerName test.oursite.com
ProxyPass / ajp://tomcat.oursite.com:8010/test retry=5
ProxyPassReverse / ajp://tomcat.oursite:8010/test
</VirtualHost>
在上面的配置中,需要配置www.yoursite.com和test.yoursite.com的DNS条目指向同一个主机。它还假定您在同一主机 tomcat.oursite.com 上的不同 tomcat 实例上同时运行 www 和 test webapps,一个在 ajp 端口 8009 上,另一个在 ajp 上端口8010。您也可以将其更改为自己的其他服务器。它非常灵活。仅供引用,以下是如何在 tomcat 中配置 ajp:http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html
关于apache - 使用多个不同的 Tomcat 7 实例设置 Apache2 的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9979973/