デプロイメント環境の構築
コードを共有する準備が整う時点が来ます。 そのためには、環境を構築する必要があります。 企業の世界では、通常3つの環境があります。
-
開発者:コードを迅速に修正および再デプロイできる、早期テスト用の環境。 開発者とパワーユーザーはここでテストします。
-
ユーザー受け入れテスト(UAT):本番環境の構成をより厳密に反映する環境。 アプリケーションがほぼ完成したら、通常、より多くのユーザーをここでテストするように招待します。
-
本番環境:本番環境のサイトが存在する環境。 デプロイメントは厳密に制御され、他の2つの環境でテストされたコードのみがデプロイされます。
Liferay Workspaceを使用すると、コンテナーベースであろうと従来型であろうと、デプロイ環境を簡単に生成できます。 構成を提供し、Gradleタスクを実行すると、配布可能なDockerコンテナまたはサーバーアーカイブを生成して、インストールすることができます。 ワークスペースには、アクションが発生するオプションのconfigsフォルダが含まれています。
Blade CLIを使用してワークスペースを作成した場合、 configs フォルダはすでに存在します。 ワークスペース を手動で作成した場合は、ワークスペース ディレクトリに次のフォルダー構造を作成します。
├── common
│ └── portal-setup-wizard.properties
├── dev
│ └── portal-ext.properties
├── docker
├── local
├── prod
└── uat
└── portal-ext.properties
まだファイルには何も入れないでください。
デプロイメント環境の仕組み
configsフォルダは、特定のシナリオを定義します。
common:すべての環境に適用される構成が含まれています。
dev:開発環境の構成が含まれています。
docker:Docker構成が含まれています。
local:ワークスペースが存在するローカル環境の構成が含まれます。
prod:本番環境の構成が含まれています。
uat:ユーザー受け入れテスト環境の構成が含まれています。
構成ファイルを特定のフォルダに配置すると、その環境の構成が定義されます。 common と dockerの場合、他のすべての構成がそれらを上書きします。 これにより、環境をオーバーライドするためのベースライン構成を提供できるようになります。 これで、いくつかの環境を構築する準備が整いました。
デプロイメント環境の構築
ご使用の環境で次のシナリオを想定します。
- 開発者環境は開発者プロパティを使用する必要があります
- ローカル環境はローカルデータベースを指します
- 開発者およびUAT環境は、独自のデータベースを指します
- すべての環境はセットアップウィザードをスキップします
そのシナリオを構成する方法は次のとおりです。
-
commonフォルダで、次のプロパティをportal-setup-wizard.propertiesに追加しますsetup.wizard.enabled=false -
localフォルダで、portal-ext.propertiesにローカルデータベースを構成します。# # MySQL # jdbc.default.driverClassName=com.mysql.cj.jdbc.Driver jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false jdbc.default.username=root jdbc.default.password=password -
devフォルダで、開発者プロパティを有効にし、portal-ext.propertiesの開発サーバーでデータベースを構成します。include-and-override=portal-developer.properties # # MySQL # jdbc.default.driverClassName=com.mysql.cj.jdbc.Driver jdbc.default.url=jdbc:mysql://devel.server/lportaldev?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false jdbc.default.username=root jdbc.default.password=password -
uatフォルダで、portal-ext.propertiesのUAT環境でデータベースを構成します。# # MySQL # jdbc.default.driverClassName=com.mysql.cj.jdbc.Driver jdbc.default.url=jdbc:mysql://uat.server/lportaluat?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false jdbc.default.username=root jdbc.default.password=password
これで、環境を生成して配布する準備が整いました。
Analytics Cloud トークンの重複防止
データ収集に Liferay の Analytics Cloud を使用する場合、データベースには統合を認証するためのトークンが含まれます。 実稼働環境からデータベースをコピーすると、重複したトークンによって両方の環境から Analytics Cloud にデータが送信されます。
Analytics Cloud トークンの重複を防ぐには、非本番環境で次のプロパティを設定します。 これにより、Liferay ポータルの起動ごとに Analytics Cloud トークンが削除されます。
analytics.cloud.configuration.delete.on.startup=true
Liferay SaaS プロジェクトで Analytics Cloud トークンが重複するのを防ぐには、ポータル プロパティに仮想ホスト名を追加する必要があります。
analytics.cloud.configuration.delete.on.startup[liferay.com]=true
デプロイメント環境の生成
これで、ローカルで実行したりサーバーに配布したりするための Docker コンテナまたはバンドルを生成できます。
Dockerコンテナの生成
Docker コンテナを生成すると、すべての環境の構成が含まれます。 liferay.workspace.environment 変数を使用して、使用する環境を選択します。
デプロイメント環境構成から Docker コンテナを生成するには、次のコマンドを使用します。
./gradlew buildDockerImage
Docker コンテナが構築されると、次のコマンドは上記の開発構成を使用してコンテナを起動します。
./gradlew startDockerContainer -Pliferay.workspace.environment=dev
構成は Liferay コンテナ内で生成され、変数によって使用する構成が決定されます。

バンドルの生成
これは、initBundleまたはdistBundle Gradleタスクのいずれかを使用して実行されます。
-
最初に環境をテストする必要があります。 ローカルでビルドするには、
initBundleコマンドを使用します。 たとえば、dev環境を構築するには、次のように実行します。./gradlew initBundle -Pliferay.workspace.environment=devこれにより、ワークスペース内のすべてのプロジェクトがコンパイルされ、
bundlesフォルダ内のランタイムにデプロイされます。 また、この例では、指定した構成—、つまりdev環境の構成も提供されます。bundlesフォルダ内のportal-ext.propertiesファイルを調べると、dev構成に指定した内容と一致しています。 -
環境が整いテストが良好な場合は、すべてのアプリケーションと構成を含む配布可能なバンドルを構築できます。 次のコマンドを実行します。
./gradlew distBundleTar -Pliferay.workspace.environment=devこれにより、gzip圧縮された
tarファイルがbuildフォルダにビルドされます。 このアーカイブを取得して、他のLiferayバンドルと同じように開発サーバーにインストールできます。ただし、このバンドルは希望どおりに完全に構成されており、すべてのアプリケーションが既にインストールされている点が異なります。
.zip アーカイブが必要な場合は、 distBundleZip コマンドを使用できます。
上記の手順に従って、各環境をテストおよび構築します。
すべての環境を一度に構築することもできます。 これには 2 つの手順だけが必要です。
-
Workspaceの
gradle.propertiesファイルで、プロパティliferay.workspace.bundle.dist.include.metadataをtrueに設定します。liferay.workspace.bundle.dist.include.metadata=true -
すべてのバンドルをビルドするにはターゲットを呼び出します。 すべてのバンドルをgzip圧縮されたtarファイルにビルドするには、
./gradlew distBundleTarAllすべてのバンドルを.zipファイルにビルドするには、
./gradlew distBundleZipAll