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

6 apache deployment grails tomcat

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

我可以这样做

http://virtualhost1.example.com/myGrailsApplication-0.1/ 
Run Code Online (Sandbox Code Playgroud)

工作,但我想要的是

http://virtualhost1.example.com/
Run Code Online (Sandbox Code Playgroud)

直接进入我的申请.网络上的很多教程网站只是让你的网络应用程序成为"ROOT"网站,但这不适用于多个grails-app虚拟主机环境.

我试过用了

<Host name="virtualhost1.example.com" ...> </Host>
Run Code Online (Sandbox Code Playgroud)

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

我也在我的apache配置文件中尝试了我能想到的所有虚拟主机,并且无法让它工作.

那么,当我有多个grails webapps,虚拟主机,并且我不希望我的webapp是"ROOT"时,如何摆脱URL中的应用程序名称?

Col*_*ton 3

我假设您正在使用mod_jkApache 和 Tomcat 连接。如果是这样,您将必须在 Tomcat 和 Apache 中配置虚拟主机( conf/server.xml 中的多个<Host>声明)

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

他们给出的例子是:

<Engine name="Catalina" defaultHost="ren">
    <Host name="ren"    appBase="renapps"/>
    <Host name="stimpy" appBase="stimpyapps"/>
</Engine>
Run Code Online (Sandbox Code Playgroud)

配置完虚拟“ s”(很像 Apache)的 DNS 后,<host>您必须将 ROOT.war 放入单独的文件夹 {renapps,stimpyapps} 而不是默认的“webapps”文件夹

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

让我们知道你发现了什么!还有其他人这样做吗mod_proxy