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 に答える