この Play のドキュメントでは、「透過的なアップグレード」のための Apache の使用について既に説明しています。一般に、2 つの別々のフォルダーで 2 つのインスタンスを開始する必要があります
はじめに:
dist
アプリのソースを使用して、フォルダー内にパッケージを作成します
- それをいくつかのサブフォルダーに解凍します。
instance1
instance1
例として、目的のポートで開始し9998
ます。これは毎日のインスタンスになります
変更後、透過的にアプリを再デプロイする場合:
- 変更をサーバーにプッシュします (バージョン管理システム、つまり git を使用していると仮定します)。
- それを作成して他のフォルダー
dist
に解凍します。instance2
- 他のポートで起動します。
9999
- フォルダ内のアプリケーションを停止
instance1
- 解凍したディストリビューションをコピー
instance2
するinstance1
- でアプリケーションを開始し、でアプリケーション
instance1
を停止しますinstance2
- 新しい変更を加えて再デプロイする必要があるたびに、この手順を繰り返します。
もちろん、すべてのステップを一度に実行する単純なシェル スクリプトを作成することは、非常に役立ちます。
ヒント:
特にCSS や画像などの一部の公開コンテンツ や静的コンテンツを置換/変更する必要がある場合は特に、頻繁な再展開を避けるために、vhost
これらのリソースの処理に Apache common を使用することもできます。vhost
一部のフォルダーをサブドメインとして作成するだけです。http://static.domain.tld
または別のドメインでより良い:http://my-cdn.tld
したがって、次のようなパスを使用できます:
<img src="http://static.domain.tld/images/photo.png" alt="" />
それ以外の
<img src="/public/images/photo.png" alt="" />
メリット:
- これらのファイルを変更するためにアプリを再デプロイする必要はありません。
- Cookie は送信しません。これは、パブリック アセットにとってほとんど冗長です (vhost のドメインがメイン プロジェクト以外の場合)。
- キャッシュタグを設定するためにHTTPサーバーの構成を使用できます(パフォーマンス!)
- すべてのインスタンス間で自動的に統計を共有しています。
- 画像を提供するために JVM リソースを浪費することはありません :) Play のデフォルト サーバーは非常に高速ですが、単純な HTTP サーバーで静的コンテンツを提供する方がおそらく高速であることに気付きました...
最後に、私の経験から、nginx は Apache よりも高速です。そのため、HTTP サーバーのタスクのみが Play のアプリの負荷分散である場合は、軽量な nginx の使用を検討してください。