【发布时间】:2012-12-24 19:02:51
【问题描述】:
我有一个应用程序在这样的 URL 上运行:
我不希望 URL 中包含 /myapp 部分。那么我怎样才能摆脱应用程序名称呢?我只想
成为 URL。我该怎么做?
【问题讨论】:
标签: url tomcat grails tomcat6 grails-2.0
我有一个应用程序在这样的 URL 上运行:
我不希望 URL 中包含 /myapp 部分。那么我怎样才能摆脱应用程序名称呢?我只想
成为 URL。我该怎么做?
【问题讨论】:
标签: url tomcat grails tomcat6 grails-2.0
位详细方法
第一种方法:
首先关闭你的 tomcat [从 bin 目录 (
sh shutdown.sh)] 然后你 必须删除您的 tomcat webapps 文件夹 (rm -fr *) 的所有内容然后 将您的 WAR 文件重命名为ROOT.war最后启动您的 tomcat [来自 bin 目录 (sh startup.sh)]
第二种方法:
将您的战争文件保留在
CATALINA_BASE/webapps中,使用其原始名称 - 关闭 在 server.xml 文件的 Host 元素中进行 autoDeploy 和 deployOnStartup。 在 server.xml 中显式定义所有应用程序上下文,同时指定两个路径 和文档库。您必须这样做,因为您已禁用所有 Tomcat 自动部署机制,Tomcat 将不再部署您的应用程序 除非它在 server.xml 中找到它们的 Context。
注意:
最后一种方法也意味着为了对任何 应用程序,您将不得不停止并重新启动 Tomcat。
第三种方法:
将你的war文件放在
CATALINA_BASE/webapps之外(它必须在外面 以防止双重部署)。 - 在CATALINA_BASE/conf//中放置一个名为ROOT.xml的上下文文件。此上下文文件中的单个元素必须具有 docBase 属性指向你的war 文件的位置。路径元素 不应设置 - 它源自 .xml 文件的名称,在此 案例ROOT.xml。有关详细信息,请参阅上面的上下文容器。
【讨论】:
ROOT.xml 需要进入CATALINA_BASE/conf/Catalina/localhost(技术上它是conf/<Engine name>/<Host name>,但Catalina 和localhost 是开箱即用的默认值@ 987654336@) 不直接在conf。
1) 您的应用服务器需要配置为将您的 grails 应用程序作为 ROOT 应用程序
2) 您的 grails 应用程序上下文路径应为“/”或 app.context=/
【讨论】:
您可以通过简单地将 Tomcat 命名为ROOT.war 来让 Tomcat 将 webapp 作为根上下文提供服务,即将 Grails 生成的 myapp-0.1.war 复制到 TOMCAT_DIR/webapps/ROOT.war。
如果您在Config.groovy 中有grails.serverURL 的设置,则需要为您的生产环境覆盖此设置,以确保Grails 生成的任何绝对链接都是正确的
environments {
production {
grails.serverURL = 'http://myapp.mydomain.com'
}
}
但在 Grails 2 中,完全省略 grails.serverURL 并让应用程序在运行时推断出正确的值通常是安全的。仅当您在未通过正确的 Host 标头的反向代理后面运行时才需要它。
【讨论】: