grails 2.0 - 将WAR部署到远程服务器(Tomcat),而不是连接

时间:2012-02-08 04:35:39

标签: grails

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

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

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

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

此错误来自我创建的 BareBones 应用程序,因为我遇到了VPS可用内存的一些问题。无论如何,在我的开发机器上,我可以访问这个BareBones应用程序URL

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

正如所料。当我部署时,我得到相同的HTTP状态404错误(资源不可用):

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

在Config.groovy中,在这个BareBones应用程序中,我得到了最小的改变:

  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

由于我将sample.war从我的计算机FTP到服务器,它似乎表明我的FTP很好,并且到服务器的路由是正确的,将其缩小到Grails& Tomcat中。

1 个答案:

答案 0 :(得分:1)

通常在开发模式下,正如您所指出的那样,Grails会安装appName的上下文,即http://localhost:8080/BareBones/

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

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

由于网站通常以ROOT.war "/"的形式安装,因此我建议您设置

grails.app.context = "/"

在你的Config.groovy文件中,这样你就可以在dev中使用根上下文路径,即http://localhost:8080/

这使得它更简单,因为开发和生产现在都具有相同的相对路径到任何地方,只有主机名:端口将改变。