我意识到这个问题可能已被多次提出,但我找不到一个好的,最新的答案。我能找到的唯一指南是2005年,并且是在tomcat 5上。似乎很多OS路径都发生了变化。
我们的情况是:
我们希望在单个服务器上运行多个tomcat 7实例。每个tomcat提供不同的地址。例如,www.oursite.com
应该从单独的tomcat提供,而不是test.oursite.com
。因此,例如,基本tomcat安装将位于/opt/tomcat/
,并且特定于实例的目录(这是我从旧教程中可以得到的)将位于/home/user1/some/path/
和/home/user2/some/path
中,以便一切都很好分开。
任何人都可以指出一个好的教程,或者可以在这里解释设置它的步骤吗?我对apache设置有点新鲜。
这样做有什么优点/缺点吗?单个tomcat实例会更好吗?我们需要能够一次一个地关闭网站而不会相互影响。此外,我们的DNS提供商阻止我们设置秘密重定向,因此我们必须通过apache来获得良好的URL,而不是直接重定向到tomcats。
由于
答案 0 :(得分:8)
我相信你有2个问题:
For 1.以下是关于如何在同一服务器中运行多个tomcat实例的非常好的教程:http://java.dzone.com/articles/running-multiple-tomcat,但是你应该这样做吗?答案是“它取决于”。如果你有一个超级强大的盒子,它没有得到充分利用,你应该。它还取决于您为每个站点运行的应用程序类型。它肯定会帮助你“一次一个地关闭网站,而不会相互影响”。使用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
答案 1 :(得分:0)
我在这样的配置中发现了apache mod_proxy_ajp连接器的问题,在设置多个虚拟主机时,它们绝对不允许你使用任何其他端口,每个虚拟主机都有自己的tomcat实例。
我花了一些时间排除端口冲突,tomcat配置问题,防火墙问题,我得出结论,默认情况下,当使用8009以外的任何端口时,ProxyPass和ProxyPassReverse都不起作用。
解决方案很可能是切换到mod_jk,这也解决了mod_proxy_ajp中出现的问题,基本配置没有加载或重写嵌入在tomcat托管页面中的URL,如果tomcat实例植根于子目录,则不需要进行大量的配置更改。这似乎与Mod_Jk
无关