2012-02-08 90 views
1

我通常从我的IDE运行Grails 2.0,但一直在寻求将应用程序部署到安装了Tomcat和Mysql的远程虚拟专用服务器(linux)。我创建了一个生产WAR文件并将其复制到Tomcat webapps目录中,在那里我可以看到Tomcat重新启动,并且在一些“修复”之后,我看到应用程序出现了,在MySql数据库中添加了最少的引导入口。grails 2.0 - 将WAR部署到远程服务器(Tomcat),而不是连接

但是,我无法连接到Grails应用程序(远程)。如果我指定www.mydomain.com,我(最终)能够访问主要的Tomcat服务器“欢迎页面”。如果我在最后添加“/”,而不是我的Grails应用程序,我也会访问Tomcat。

因此,我尝试将完全控制器路径放在我的开发机器上,然后在远程机器上访问它们(请注意grails.serverURL配置为http://www.mydomain.com)。这样做,我得到

HTTP Status 404 -- The requested resource (/BareBones/bare/create) is not available. 

此错误是从准系统应用我创建,因为我有一些问题VPS可用内存。无论如何,在我的开发机器上,我可以达到这个BareBones应用程序URL

http://localhost:8080/BareBones/bare/create 

如预期的那样。当我部署,我会得到相同的HTTP状态404错误(资源不可用)当我这样做:

http://www.mydomain.com/bare/create 

Config.groovy中,在这个准系统应用程序,我已经得到了最小的变化:

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

     grails.serverURL = "http://www.mydomain.com" 
    } 
} 

在我的Tomcat server.xml文件中,我将默认的8080/8443端口转换为80/443端口,但是使用其中任何一个都会导致相同的问题。

我可能错过了一个简单的步骤,只是不知道它是什么。


P.S.当我部署Tomcat附带的sample.war文件(不是Grails,只是一个hello-world servlet)时,它可以工作。我能够访问在

www.mydomain.com/sample 

因为我FTP'd sample.war从我的电脑到服务器,这似乎表明我的Full Tilt点数都不错,并且路由到服务器是正确的,缩小这下降到了Tomcat的Grails &。

+0

我会建议将内存问题移到一个单独的问题,因为它应该有自己的标题和答案。 – 2012-02-08 05:34:04

+0

听起来不错,会移动。 – Ray 2012-02-08 06:27:12

回答

1

通常在开发模式下,正如您所指出的那样,Grails坐骑在此处的坐标为appName,即http://localhost:8080/BareBones/

但是它在tomcat上挂载的路径不符合Grails本身,它完全依赖于Tomcat配置,主要是WAR文件的名称。

即使您将BareBones作为您的appName并将其部署为ROOT.war,那么它将挂载根"/"上下文。如果您将它部署为BareBones.war,那么它应该安装与dev模式相同的目录。

由于网站通常安装为ROOT。战争"/",我可以推荐设置

grails.app.context = "/"

Config.groovy文件,这将使得它,以便您将使用根上下文路径也在开发,即​​

这使得因为这两个开发更简单现在生产将具有与所有地方相同的相对路径,并且只有主机名:端口将会更改。

+0

1月 - 谢谢,我正在尝试这个(在没有发现grails 2.0手册中的app.context之后,坦率地说我惊讶了!)。在我切换之前 - 将很快报告结果,我更改了Grails给BareBones.war的默认BareBones-0.1.war名称。当我然后尝试网址../BareBones/bare/create时,我仍然没有回应。如果我正确理解你,这应该工作?相关的,你有没有在app.context上找到正式的Grails文档? (如果这个文件没有记录,我想提交一个JIRA,如果确实没有这个文件,这似乎是一个痛苦的遗漏)。 – Ray 2012-02-08 05:48:12

+0

Tomcat使用的安装点通常取决于文件名,但可能会有其他配置,例如导致第一个应用始终为root,无论名称如何,但通常它应该可以工作。快速谷歌发现我只有在Grails功能的起源:http://jira.grails.org/browse/GRAILS-2534 – 2012-02-08 05:54:15

+0

尝试了变化,并没有得到响应www.mydomain.com/bare/create或... /裸露/列表。在我的开发环境中,这些以http:// localhost:8080/bare/create的形式出现。你知道Tomcat的server.xml中“正确的”端口设置是什么吗?我是否需要从它自带的默认8080端口切换到80以使其正常工作?访问http://www.mydomain.com:8080/bare/create不起作用。 – Ray 2012-02-08 05:59:37