Grails2.0-将WAR部署到远程服务器(Tomcat),不连接

Grails2.0-将WAR部署到远程服务器(Tomcat),不连接,grails,Grails,我通常从IDE运行Grails2.0,但一直在寻求将一个应用程序部署到远程虚拟专用服务器(linux),在那里我安装了Tomcat和Mysql。我创建了一个生产WAR文件,并将其复制到Tomcat webapps目录,在那里我可以看到Tomcat重新启动,在一些“修复”之后,我看到应用程序出现,在MySql数据库中添加最小的引导条目 但是,我无法(远程)连接到Grails应用程序。如果我指定www.mydomain.com,我(最终)能够访问Tomcat主服务器“欢迎页面”。如果我在末尾添加“/

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

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

因此,我尝试输入我知道在我的开发机器上工作的完整控制器路径,然后在远程机器上访问它们(注意grails.serverURL配置为)。这样做,我得到

 HTTP Status 404 -- The requested resource (/BareBones/bare/create) is not available.
此错误来自我创建的一个裸体应用程序,因为我在VPS可用内存方面遇到了一些问题。在任何情况下,在我的开发机器上,我都可以访问此裸体应用程序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端口,但使用其中任何一个设置都会导致相同的问题

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


另外,当我部署Tomcat附带的sample.war文件(不是Grails,只是一个hello world servlet)时,它可以正常工作。我可以在

  www.mydomain.com/sample

由于我用FTP将sample.war从我的计算机传输到服务器,这似乎表明我的FTP是好的,到服务器的路由是正确的,将范围缩小到Grails和Tomcat。

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

但是它装载到tomcat上的路径并不取决于Grails本身,它完全依赖于tomcat配置,主要是WAR文件的名称

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

因为站点通常以ROOT.war
“/”
的形式装载,所以我建议设置

grails.app.context=“/”

Config.groovy
文件中,这将使您能够在dev中使用根上下文路径,即
http://localhost:8080/


这使问题变得更简单,因为开发人员和生产人员现在都有相同的到任何地方的相对路径,只有hostname:port会更改。

我建议将内存问题转移到一个单独的问题,因为它应该有自己的标题和答案。简-谢谢,我现在正在尝试(在Grails2.0手册中找不到app.context之后,坦率地说,这让我感到惊讶!)。在我切换到--will report with result之前,我将Grails提供的默认BareBones-0.1.war名称更改为BareBones.war。当我尝试url../BareBones/bare/create时,仍然没有收到任何响应。如果我理解正确,这应该可以工作?相关的,你在app.context上找到Grails官方文档了吗?(如果没有记录,我想提交一份JIRA,如果确实没有记录,这似乎是一个痛苦的遗漏)。Tomcat使用的挂载点通常取决于文件名,但可能会有其他配置,例如,导致第一个应用程序始终是root,而不管其名称如何,但通常应该可以工作。快速的Google在Grails中只找到了该功能的来源:尝试了更改,但在www.mydomain上没有得到响应。com/bare/create或…/bare/list。在我的开发环境中,它们显示为。你知道Tomcat的server.xml中“正确”的端口设置是什么吗?我需要从它附带的默认8080端口切换到80才能工作吗?访问不起作用。Switched server.xml使用端口80,并使用grails.app.context=“/”,我在www.mydomain.com/bare/create上仍然没有收到响应。我们通常没有tomcat为80提供服务,但我们在:80上安装了Apache,然后将请求代理到tomcat的默认端口。仅请求www.mydomain.com/是否会返回任何内容?