【问题标题】:grails.app.context being ignored deploying to Tomcatgrails.app.context 被忽略部署到 Tomcat
【发布时间】:2023-03-14 19:20:01
【问题描述】:

我有一个 Apache 服务器代理从 mainhost.com/subdirectorysomeec2instance/subdirectory 的所有流量。当我启动 Apache 并点击 someec2instance.com 时,我得到了 ROOT 战争页面。这很好用。如果我将我的应用程序部署为 ROOT.war,那么一切都可以从 someec2instance.com 开始。

但是,当我访问 mainhost.com/subdirectory 时,所有资产 url 和 link_to url 都是错误的,并且指向 mainhost.com 而不是 mainhost.com/subdirectory

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

当我部署为ROOT.war 时,为什么不尊重grails.app.context?我希望该网站可以通过someec2instance.com/context 访问,但它就像完全忽略grails.app.context

【问题讨论】:

  • 是的,它忽略了 grails.app.context。您需要将 ROOT.war 重命名为 ContextName.war。
  • 我认为需要更改 apache 配置以支持这一点,但最终这是更好的方法。我现在无法访问 apache,所以我会尝试。

标签: apache tomcat grails


【解决方案1】:

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

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

【讨论】:

  • 有道理。如果我在 contextINeed.war 部署,看起来一切正常。我只需要将 apache 配置为正确代理即可。
猜你喜欢
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 2016-03-21
  • 2016-07-29
相关资源
最近更新 更多