2012-07-28 47 views
0

我在Heroku上使用Grails堆栈来部署应用程序。我希望能够以myapp.herokuapp.com/xyz的根而不是myapp.herokuapp.com的方式服务我的应用程序,就像我能够从localhost:8080/xyz的根目录服务开发一样。我试着将Config.groovy中一个grails.app.context像这样:配置Heroku Grails应用程序的根URL

environments { 
    production { 
      grails.app.context = "/xyz" 
    } 
} 

但它似乎并没有在部署的效果。我需要用Heroku配置什么?有任何想法吗?

回答

1

它看起来就像你有一个jetty-web.xml文件添加到WEB-INF目录设置上下文路径:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- File: web-app/WEB-INF/jetty-web.xml --> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 
<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
    <Set name="contextPath">/xyz</Set> 
</Configure> 

如果这有助于适当的信贷去this网站,这是从一个文章链接上Grails and Heroku Tomas Lin。

+0

不幸的是,这似乎并不像Heroku上写的那样工作。我创建了'/ web-app/WEB-INF/jetty-web.xml'并粘贴上面,在产品中获得了一个404命中'/ xyz'。我想知道如果Heroku在启动应用程序时看到并使用了'jetty-web.xml'文件。 – 2012-07-29 16:11:09

0

我不认为你可以设置当前的Grails build pack上下文路径。如果你觉得这样,你可以分解构建包并破解它以支持设置上下文(有关构建包的更多信息,请参阅build pack doc)。

另一种选择是将您的Grails应用程序本地构建到WAR文件中并使用WAR deployment部署WAR文件。 WAR部署过程将使用webapp-runner实用程序在Tomcat上运行您的应用程序,并支持配置上下文路径。下面是帮助输出为webapp的亚军7.0.22.3(我碰巧已经安装,可能会稍显落伍):

Tomcat Runner runs a Java web application that is represented as an exploded war in a Tomcat container Usage: java -jar tomcat-runner.jar [arguments...] path/to/webapp Arguments: --session-timeout The number of minutes of inactivity before a user's session is timed out
--port The port that the server will accept http requests on
--context_xml The parth to the context xml to use
--path context path (default is /)
--session_manager session store to use (valid options are 'memcache')
--session_manager_operation_timeoutoperation timeout for the memcached session manager. (default is 5000ms)
--session_manager_locking_modeSession locking mode for use with memcache session store. (default is all)
--session_manager_ignore_patternRequest pattern to not track sessions for. Valid only with memcache session store. (default is '.*\.(png|gif|jpg|css|js)$'

WAR deploy doc解释,你可以为Web应用程序,亚军选项你的webapp使用WEBAPP_RUNNER_OPTS config var。