grails.app.context 被忽略部署到 Tomcat
grails.app.context being ignored deploying to Tomcat
我有一个 Apache 服务器代理从 mainhost.com/subdirectory
到 someec2instance/subdirectory
的所有流量。当我启动 Apache 并点击 someec2instance.com
时,我得到了 ROOT war 页面。那很好用。如果我将我的应用程序部署为 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
。
之所以不起作用,是因为这些设置是针对 运行 本地的,而不是部署为 WAR 文件时。当您在 run-app
中使用 tomcat 或 jetty 插件时,我们将容器配置为使其看起来像 运行 和 "exploded" war(类似于 WAR 被各种服务器解压到文件系统)。由于容器 运行 处于嵌入式模式,因此很容易根据需要以编程方式配置它。
但是,当您部署 WAR 文件时,可配置性几乎没有。在 run-app
中,Grails 的构建逻辑启动服务器、配置它并部署应用程序,但是部署到 "real" 服务器的 WAR 文件由服务器管理,而不是其他方式左右。
我有一个 Apache 服务器代理从 mainhost.com/subdirectory
到 someec2instance/subdirectory
的所有流量。当我启动 Apache 并点击 someec2instance.com
时,我得到了 ROOT war 页面。那很好用。如果我将我的应用程序部署为 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
。
之所以不起作用,是因为这些设置是针对 运行 本地的,而不是部署为 WAR 文件时。当您在 run-app
中使用 tomcat 或 jetty 插件时,我们将容器配置为使其看起来像 运行 和 "exploded" war(类似于 WAR 被各种服务器解压到文件系统)。由于容器 运行 处于嵌入式模式,因此很容易根据需要以编程方式配置它。
但是,当您部署 WAR 文件时,可配置性几乎没有。在 run-app
中,Grails 的构建逻辑启动服务器、配置它并部署应用程序,但是部署到 "real" 服务器的 WAR 文件由服务器管理,而不是其他方式左右。