2015-04-21 54 views
2

我有一个Apache服务器代理从mainhost.com/subdirectorysomeec2instance/subdirectory的所有流量。当我启动Apache并击中someec2instance.com时,我得到ROOT战争页面。这工作正常。如果我将我的应用程序部署为ROOT.war,那么从someec2instance.com可以正常工作。grails.app.context被忽略部署到Tomcat

然而,当我访问mainhost.com/subdirectory,所有的资产URL和link_to网址是错误的,并指向mainhost.com而不是mainhost.com/subdirectory

我已设置grails.app.context并通过application.properties确认正确设置了grails.env

为什么grails.app.context在我部署为ROOT.war时受到尊重?我期望该网站可以在someec2instance.com/context上访问,但它完全忽略了grails.app.context

+0

是的,它忽略了grails.app.context。您需要将ROOT.war重命名为ContextName.war。 – Ramsharan

+0

我认为apache配置需要改变以支持这个,但最终这是更好的方法。我现在无法访问apache,所以我会在我尝试时尝试。 –

回答

4

原因是行不通的是,这些设置是为本地运行,而不是部署为WAR文件。当您使用run-app中的tomcat或jetty插件时,我们将容器配置为看起来像是在运行“分解”战争(类似于WAR由各种服务器解压缩到文件系统时)。由于容器在嵌入模式下运行,因此可以根据需要以编程方式进行配置。

但是当你部署一个WAR文件时,没有太多的可配置性。在run-app中,Grails的构建逻辑启动服务器,配置它并部署应用程序,但部署到“真实”服务器的WAR文件由服务器管理,而不是相反。

+0

有道理。如果我在contextINeed.war中部署,看起来事情工作正常。我只需要配置Apache来正确代理。 –