【问题标题】:Grails: how to remove AppName from production urlGrails:如何从生产 url 中删除 AppName
【发布时间】:2014-07-06 20:36:02
【问题描述】:

我正在尝试将 Grails 2.2.3 项目部署到生产环境中并且遇到 URL 问题。 我在 Apache 中设置了反向代理,并以 http://example.com 为例。

我在Config.groovy中设置了以下属性:

grails.serverURL = "http://example.com/"

并在application.properties下面设置:

app.context=/

但是我所有的资源和链接总是引用

http://example.com/AppName/...

如何从资源和链接引用中删除应用程序名称(“AppName”)?

资源示例:

<r:require modules="bootstrap"/>
<g:javascript library="jquery"/>

环境 Config.groovy 示例:

environments {
    development {
        grails.logging.jul.usebridge = true
    }
    production {
        grails.logging.jul.usebridge = false

        grails.serverURL = "http://example.com/"
        grails.app.context = "/"
    }
}

我认为 Grails 应用程序必须具有某种可以设置的属性!?不然好像脖子疼。

请帮忙!

P.S:如果我直接访问任何资源(从 URL 中手动删除 AppName),我会得到正确的东西,例如 css、js 和图像。

更新: 我在 application.properties 中设置了以下内容:

app.context=/
serverURL=http://example.com/

并在 grails 中创建了绝对 URL:

<g:createLink controller="Sample" absolute="true"/>

它会创建正确的 URL!!!但是资源使用相对路径并以 AppName/ 开头...这似乎是一个诅咒,我就是无法摆脱那个 AppName。

更新: 如果我运行prod run-app,那么所有 URL 都会正确显示,但是当我部署到 Tomcat 7 时,AppName 会再次出现在 URL 中。

【问题讨论】:

  • 应该是grails.app.context='/'。参考stackoverflow.com/questions/22539389/…
  • 如何生成链接?
  • 您是否为 prod 环境在 Config.groovy 中设置了 grails.serverURL 属性?
  • 向问题添加信息

标签: grails tomcat7 reverse-proxy grails-2.2


【解决方案1】:

还有其他选择,但可能最短的方法是像 ROOT.war 一样部署它。

只需更改BuildConfig.groovy中的默认war文件名:

 grails.project.war.file = "target/ROOT.war"

为您设置正确的 grails.serverURL 属性,您就完成了。

希望对你有帮助。

【讨论】:

  • 对不起,我不能使用ROOT.war,有没有其他办法?
  • 首先检查tomcat中没有其他应用部署为ROOT(“/”)应用,否则会发生碰撞。然后尝试使用 grails.app.context = '/',但不在 application.properties 中(Config.groovy 或使用定位器的属性文件)。
猜你喜欢
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多