2012-04-20 10 views
2

私はPlayフレームワーク2.0を使用しています。 私は "play dist"を使ってスタンドアローンアプリを作成しています。Nginxのスタンドアロンアプリケーションでは、Playフレームワーク2.0でのルーティングが機能しません

また、Nginxをフロントエンドとして使用しています。 だから、私はnginxの設定ファイルを持っている:私は

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

か、単に

sh start 

ようなアプリケーションを起動すると

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

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 /テラ」私は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ファイルが作成されます。 このファイルをリモートホストの同じディレクトリに展開する必要があります。 projectName/artifactName/ 次に、projectNameディレクトリから "sh start"を実行できます。 – Azee

+3

問題は、jdk7でローカルにアプリケーションを作成し、リモートサーバーにJava 1.6があるということでした... – Azee

+0

これを機能させるために管理できましたか?あなたはこの質問の唯一の貢献者であり、完全な答えは非常に貴重です。これを数日間検索すると、distを実行するためにEC2サーバーにPlayをインストールする必要があると信じていますが、その前に私はどのように動作しているのかを見たいと思います。 – Simon

関連する問題