2012-04-20 65 views
2

我使用播放框架2.0下工作。 我使用「play dist」創建獨立應用程序。路由在遊戲框架2.0不提供獨立的應用程序的Nginx

而且我用的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我得到: 行動沒有發現對於請求「GET /千佛」

如果我改變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秒前編輯

回答

0

問題出在不同的Java版本。 該應用程序使用java 7編譯,但遠程服務器在java 6上運行應用程序。

我編譯並打包了java 6中的應用程序,並解決了問題。

現在我使用的Web應用程序不同的架構,但特定的應用程序是在1.6仍在運行。

1

的問題是沒有路由。 如果您運行play dist,您會得到一個獨立的應用程序。但是你只能在同一臺本地機器上運行它。看起來「dist」也在某處複製了一些配置文件。如果要在遠程服務器上運行獨立應用程序,則必須在該主機上調用play dist。 我在Play文檔中找不到任何關於此的內容。但我需要這些信息來準備Debian軟件包...

1

我想通了,通過「DIST」創建運行程序的時候,是不夠的,僅複製創建的目錄。你必須複製整個項目目錄與創建一個 - 從zip(或某些特定的文件?)解壓縮並運行該目錄中的應用程序。

+0

我嘗試了一下。 運行應用程序的結構必須保持。例如,你有一個目錄projectName /,它包含一個項目。當您運行「play dist」時,會創建一個projectName/dist/artifactName.zip文件。 你要解開遠程主機上在同一目錄下這個文件: 項目名稱/ artifactName/ 然後你就可以從目錄PROJECTNAME運行「SH開始」。 – Azee 2012-04-25 12:11:41

+3

沒有。問題是我在jdk7本地創建了應用程序,而在遠程服務器上有java 1.6 ... – Azee 2012-04-25 13:56:57

+0

你是否設法讓它工作?你是這個問題的唯一貢獻者,一個完整的答案將是非常有價值的。谷歌搜索幾天導致我相信我必須在我的EC2服務器上安裝Play以運行dist,但在此之前,我想看看你是如何運作的。 – Simon 2013-06-10 00:12:00