使用 Apache/Tomcat + 虚拟主机部署多个 grails 应用程序

Posted

技术标签:

【中文标题】使用 Apache/Tomcat + 虚拟主机部署多个 grails 应用程序【英文标题】:Deploying multiple grails applications with Apache/Tomcat + Virtual Hosts 【发布时间】:2010-12-20 19:40:49 【问题描述】:

我无法弄清楚如何使用 Apache/Tomcat 部署多个 grails 应用程序,其中虚拟主机映射到每个 grails 应用程序

我可以得到它,以便

http://virtualhost1.example.com/myGrailsApplication-0.1/ 

有效,但我想要的是

http://virtualhost1.example.com/

直接进入我的应用程序。网络上的许多教程网站只是让您将您的网络应用程序设为“ROOT”应用程序,但这在多个 grails-app 虚拟主机环境中是行不通的。

我尝试过使用

<Host name="virtualhost1.example.com" ...> </Host>

tomcat/conf/server.xml 文件中的标签,但它似乎没有做任何事情(而且,是的,我每次更改它时都重新启动了 tomcat。)

我还在虚拟主机的 apache 配置文件中尝试了所有我能想到的方法,但无法让它工作。

那么,当我有多个 grails webapps、虚拟主机,并且我不希望我的 webapp 成为“ROOT”时,如何去除 URL 中的应用程序名称?

【问题讨论】:

【参考方案1】:

我假设您正在使用mod_jk 连接 Apache 和 Tomcat。如果是这样,您将不得不configure virtual hosting within Tomcat as well as Apache(在您的 conf/server.xml 中有多个 &lt;Host&gt; declarations)

这基本上意味着您将在 conf/server.xml 中有两个 &lt;Host ...&gt; 声明。它们将有不同的名称和 appBase,但您仍然必须将战争命名为 ROOT.war

他们给出的例子是:

<Engine name="Catalina" defaultHost="ren">
    <Host name="ren"    appBase="renapps"/>
    <Host name="stimpy" appBase="stimpyapps"/>
</Engine>

配置虚拟“&lt;host&gt;s”的 DNS(很像 Apache)后,您必须将 ROOT.war 放入单独的文件夹 renapps,stimpyapps 而不是默认的 ' webapps'文件夹

此方法有效,但还有另一种方法使用mod_proxy 而不是mod_jk。我对mod_proxy 不是很熟悉,但基本上你会让连接器句柄将根上下文转换为实际上下文。因此,在配置完成后,它会将发送到 http://virtualhost1.example.com/ 的请求代理并转发到 Tomcat 中的正确上下文 (/myGrailsApplication-0.1/)

让我们知道您发现了什么!其他人使用mod_proxy 这样做吗?

【讨论】:

谢谢!一旦我从土耳其/馅饼和葡萄酒过量服用中恢复过来,我就会尝试一下…… 我在这里的回答:***.com/questions/5751662/… 使用 mod_proxy。

以上是关于使用 Apache/Tomcat + 虚拟主机部署多个 grails 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

apache tomcat 503 自定义错误页面

Apache + Tomcat 部署中 Tomcat 线程池的行为

无法在 Apache Tomcat 6 上部署战争

使用linux部署tomcat项目

Apache+Tomcat部署负载均衡(或集群)

Tomcat部署