PHPやJavaを使って開発した様々なアプリケーションがあります。Apache と Tomcat を使用しています。したがって、システムを再起動すると、Apache が起動すると PHP アプリが起動し、Tomcat が起動すると Java アプリが起動します。Play フレームワークでこれを処理する最善の方法が何であるかはわかりません (10 以上の Play アプリケーションがあるとしましょう)。確かに、各アプリを個別に起動することは適切な解決策ではありません。再起動後に各アプリケーションを起動する起動スクリプトを作成できます。しかし、ROR や Django などの他の同様のフレームワークを使用している開発者がこのシナリオをどのように処理しているか知りたいです。このためのツールはありますか?Play アプリケーションに使用できるツールはありますか?
2 に答える
WAR パッケージの展開にはいくつかの欠点があります。パフォーマンスについては説明できませんが、 WAR プラグインの互換性マトリックスでわかるように、まだサポートされていない機能がいくつかあります。したがって、WAR は最後のオプションと見なす必要があります (他に利用可能なオプションがない場合)。
現在、私は同じセットを持っています。Apache + スタンドアローンの Play アプリケーションを介して動作する PHP サイトです。もちろん、それらはすべて、デフォルトの Web ポート (80) のカスタム ドメイン/サブドメインで利用できる必要があります。
nginx
非常に一般的には、プロキシの目的と負荷分散のためにサーバーによってフロントエンドで制御される専用 IP にアプリを展開しています。これにより、サーバー上で開発モードでもアプリケーションを起動でき、そのドメインで利用できるようになります。もちろん、追加の IP がない場合は、Apache をプロキシとして使用することもできますが、私の知る限りnginx
、lighthttpd
このタスクでははるかに高速です。
詳細については、フロントエンド サーバーのセットアップドキュメントを参照してください。
これで、いくつかの簡単な bash スクリプトと git フックを使用して、パッケージ全体を再送信する必要なく、アプリケーションを準備してリモート マシンにデプロイできます (小さなアプリの場合、サイズは ~50 MB です)。Heroku のデプロイと同様に、アプリのコードのみをサーバーにプッシュする必要があります。次に、フックとスクリプトを使用してdist
パッケージを準備し ( dist についての詳細)、定義済みのポートで実行します。これは、前述のプロキシによって利用可能になります。
もちろん、Play のコンソールを介してアプリケーションを起動することは、本番環境で不要なメモリの浪費になります。
サーバーの起動時に Play アプリを起動する方法のサンプルがあるので、お使いのマシンに応じていくつかのヒントが見つかるでしょう。
私が知る限り、これは現時点で最適なシナリオです
Ubuntu でホストしている場合は、各アプリの init スクリプトをプラグインするのがおそらく最適です (これは適切なスタートです)。そうすれば、アプリはマシンで起動します。
別の方法として、 https://github.com/dlecan/play2-war-pluginを使用すると、Tomcat にデプロイできる WAR ファイルに Play 2 アプリを送信できるようになります。Play 2 シリーズでの WAR デプロイメントのコア サポートは予定されていません。 2.1 まで表示されるため、それを機能させることができない場合があります。Play 1 はそれをネイティブにサポートしています。
play war myapp -o myapp.war