2

我正在使用 Play 框架 2.0。我正在使用“play dist”创建一个独立的应用程序。

我也使用 Nginx 作为前端。所以,我有 Nginx 配置:

location /terra {
         proxy_pass http://127.0.0.1:9000;

         proxy_redirect          off;
         proxy_set_header        Host            $host;
         proxy_set_header        X-Real-IP       $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
     }

我的路由文件如下所示:

GET /  controllers.Application.index()           
GET /projects     controllers.Application.projects()

当我启动一个应用程序时

sh start -Dhttp.address=127.0.0.1 -Dhttp.port=9000

要不就

sh start

并转到http://hostnamehere/terra我得到: Action not found For request 'GET /terra'

如果我GET / controllers.Application.index()改为GET /terra controllers.Application.index()- 它也不起作用。

此外,当我在本地运行我的应用程序并转到“localhost:9000/WRONG_ROUTING_NAME”时,我得到了同样的错误,但我可以看到“这些路由已按此顺序尝试:”和方法列表。部署应用程序后,我看不到相同的列表。

当我使用时,curl myhost.com:9000我得到:curl: (52) Empty reply from server– Azee 12 秒前编辑

4

3 回答 3

1

问题不在于路由。如果你运行play dist,你会得到一个独立的应用程序。但是您只能在同一台本地机器上运行它。似乎“dist”还会在某处复制一些配置文件。如果要在远程服务器上运行独立应用程序,则必须play dist在该主机上调用。我在 Play 文档中找不到任何相关内容。但我需要这些信息来准备 debian 包......

于 2012-04-24T12:26:54.097 回答
1

我发现要运行由“dist”创建的应用程序,仅复制创建的目录是不够的。您必须复制整个项目目录并创建一个 - 从 zip(或某些特定文件?)解压缩并从该目录运行应用程序。

于 2012-04-24T15:02:40.963 回答
0

问题出在不同的 Java 版本中。该应用程序是使用 java 7 编译的,但远程服务器在 java 6 上运行该应用程序。

我在java 6中编译并打包了应用程序,它解决了这个问题。

现在我正在使用不同架构的 Web 应用程序,但该特定应用程序仍在 1.6 上运行。

于 2013-06-13T20:13:07.200 回答