問題
新しい開発をテストするために、本番環境のコピーであるテスト環境を構築し、その後の本番への展開に問題がないことを確認したい。
この操作にどのようにアプローチすればいいのか。 これに関する公式ガイド、または何か提案はありますか?
Environment
- 任意のLiferayバージョン
解決策
本番環境から非本番環境を作成するためのLiferayの公式ガイドはありません。
最も似ているのは Creating a Backup & Disaster Recovery Plan for Liferay Digital Experience Platforms, 記事で、考慮しなければならない環境のさまざまな側面について言及しています。
手順について
コピーを行うには、次のような手順で行うことになります:
- 本番バックアップ(Liferayのインストール、DBデータ、ドキュメントライブラリ、Elasticsearch)を作成します。
- 本番バックアップを復元するための新しい環境を作成します。
- 起動時の問題や、新環境が本番機に接続できないように、起動前に新環境の設定を調整すること
- 新しい環境を起動する
1. バックアップ
標準的な本番のバックアップ、保存を行う:
- Liferayのインストール(開発、portal-ext.properties、その他のアプリケーションサーバーの設定を含む)。
- データベース情報です。
- Elasticsearchのインデックス情報です。
- ドキュメント・ライブラリーです。
バックアップの実行方法についてより詳しい情報が必要な場合は、以下のリソースをご確認ください:
- https://learn.liferay.com/w/dxp/installation-and-upgrades/maintaining-a-liferay-installation/backing-up
- https://help.liferay.com/hc/en-us/articles/360029124271-Backing-up-a-Liferay-DXP-Installation
- https://help.liferay.com/hc/es/articles/360020711131-Creating-a-Backup-Disaster-Recovery-Plan-for-Liferay-Digital-Experience-Platforms?source=search
2. 新しい環境の準備
新しい環境を準備する際、本番バックアップからすべての情報を復元する必要があります。
本番環境からすべてのバックアップデータをインポートするために、新しいDBと新しいElasticsearchサーバーをインストールする必要があります。
Liferayのインストールについては、2つの選択肢のうちどちらかを選択することができます:
- オプション1:Liferayのインストールのフルコピーをリストアします。
- オプション2:クリーンなLiferayバンドルをインストールし、バックアップコピーのすべての開発、カスタマイズ、設定を適用します。
オプション2は、新しいライフレイ・アップデートにアップグレードする際に実施されるものと同様です( https://learn.liferay.com/w/dxp/installation-and-upgrades/maintaining-a-liferay-installation/updating-liferay 参照)。
また、Liferayのインストールの前に、Webサーバーの設定も必要でしょう。
3. 新しい環境を再構築する
起動時の問題を回避するため、または新環境が本番機に接続できないようにするため、起動前に新環境を再設定する必要があります。
詳しくは、"新しい非本番環境の構成 "の項をご覧ください。
4. 新環境の立ち上げ
新しい環境を起動し、起動中にERRORやWARNが発生しないことを確認し、表示されるエラーがないか確認します。
重要:本番環境の構成を使用しないように再設定するまでは、新しい非本番環境を開始しないでください。詳細は、次のセクションを参照してください。
新しい非本番環境の構成
初回起動の前に、起動時の問題を回避したり、新環境が本番機に接続できないようにするために、新環境を再設定する必要があります。
そこで、以下の点を確認することが必要です:
Portal-ext.properties(ポータルエクストプロパティ
本番環境のportal-ext.propertiesから、新しい環境では、必要です:
- 新環境のDBを指すようにDB設定を変更します。
- ファイルの残りの部分を確認し、本番環境のIPまたはドメインへの参照を置き換える。
- (例: 7.3までで redirect.url.security.mode=ipを使用する場合、 redirect.url.ips.allowed のプロパティを新しい環境のIPで更新する必要があります)。
システム設定の設定
Liferay DB に保存されている System Settings の設定を置き換える必要があり、 [LIFERAY_HOME]/osgi/configs フォルダを使用して上書きすることが可能です。
このように、初回起動時に新環境の設定を考慮するために、これらの .config ファイルを [LIFERAY_HOME]/osgi/configs に適用することができる。
この2つのドキュメント記事が参考になると思います:
第2回目は、本番構成をエクスポートしてコピー環境にインポートする方法について説明します。
大まかに言うと、以下のような手順です:
- ソース本番環境のシステム設定にアクセスします。
- 右上の3点メニューから、すべての設定をエクスポート(Export All Settings)、一連の.configファイルとしてエクスポートすることができます。
- ZIPファイルを解凍します。
- エクスポートした設定ファイルを編集し、新しい環境のデータに適合させます。
- .config 設定ファイルを、新環境の $LIFERAY_HOME/osgi/configs フォルダにコピーします。 (.zip自体をコピーしないでください。)
.configの情報は、初回起動時に読み込まれ、処理されてデータベースに保存されます。
インスタンス設定の構成
各システムインスタンスのシステム設定についても、同様の手順で行う必要がある。
同じ手順で操作してください:
- ソースとなる本番環境のインスタンス設定にアクセスします。
- 右上の3点メニューから、すべての設定をエクスポート(Export All Settings)、一連の.configファイルとしてエクスポートすることができます。
- ZIPファイルを解凍します。
- エクスポートされた設定ファイルを編集して、新しい環境のデータに適合させる:各ファイルを確認し、本番サーバーへの参照を置き換える。
- .config 設定ファイルを、新環境の $LIFERAY_HOME/osgi/configs フォルダにコピーします。 (.zip自体をコピーしないでください。)
ElasticSearchの設定です:
- そのまま新環境を起動すると、本番のElasticSearchに接続され、新環境が本番のインデックスの情報をインデックスし始めるため、問題になることがあります。
- そのため、上記の手順を踏むと com.liferay.portal.search.elasticsearch7.configuration.ElasticsearchConfiguration.config というファイルにエクスポートされる Elasticsearch の設定を System Settings で置き換えることが重要です。
- 詳細はこちら
- そのまま新環境を起動すると、本番のLDAPに接続してしまうので、問題が発生する可能性があります。
- したがって、インスタンス設定で LDAP 設定を置き換えることが重要です。この設定は、上記の手順を踏むと com.liferay.portal.search.elasticsearch7.configuration.ElasticsearchConfiguration.config というファイルにエクスポートされます。
- com.liferay.portal.security.ldap.configuration.LDAPServerConfiguration-<<UUID>>.config
ドメイン名です:
- portal-ext.propertiesとSystem Settingsのすべての設定において、支配者名を保持します。
- また、インスタンスとサイトの両方で設定されている場合は、それを置き換える必要があります。
- BDのバーチャルホストタブレットを確認する
ユーザーのメール:
- テスト環境中にエンドユーザーにメールが送信されるのを避けるため、Users_テーブルのメールを修正し、すべてダミーアカウントに置き換えることが重要である。
- また、ユーザーのデータを何らかの方法で匿名化することを適用することが望ましい。 機密データを保存するテーブルの詳細については、 https://help.liferay.com/hc/en-us/articles/360018136072を参照してください。
ネットワーク接続のベストプラクティス
- 問題を回避するために、本番環境の複製を作成する際のグッドプラクティスとして、コピー元の環境のリソースにコピー機からアクセスできないように、ネットワークの名前解決やルーティングを設定し、例えばそのLiferayのテスト機から本番環境のDBやElasticsearchにアクセスしようとしても、ネットワークを介して接続されないため、アクセスできないようにします。
- これは、例えばDockerコンテナを使うことで、本番のDBやElasticsearchとの接続を独自のプライベートネットワークで分離することで実現できます。
- また、本番のLDAPに接続できないようにすることが重要です。
Liferayライセンス
本番用ライセンスで起動すると、ライセンスが有効でないというエラーが発生するため、新しい環境に有効なライセンスを導入することが最後のポイントになります。 そのマシンのために特定のライセンスをデプロイする必要があります。