演習:Dockerを使用してLiferayとOpenSearchを実行する
サブスクリプションが必要です Liferay DXP 2025.Q1+
ローカルマシン上で最小限のLiferay-OpenSearchセットアップを実行して、OpenSearchとLiferay間の安全なHTTPS接続がどのように構成されるかを確認してください。 この例では、共有Dockerネットワーク上で、OpenSearch用とLiferay用の2つのDockerコンテナを使用し、OpenSearchコンテナのホスト名をサブジェクト代替名(SAN)として含むカスタム証明書を使用します。 完全なインストールガイドについては、 OpenSearch のインストール を参照してください。
始める前に、 Docker と OpenSSL をインストールしてください。
ローカルフォルダとDockerネットワークを作成する
-
バインドマウントの設定とデータをコンテナ内に格納するためのフォルダ構造を作成します。 OpenSearchはデータフォルダに書き込む必要があるため、それに応じてアクセス権限を設定してください。
mkdir -p test-opensearch-install/certs && \ mkdir -p test-opensearch-install/opensearch-data -m a+w && \ mkdir -p test-opensearch-install/dxp/files/osgi/configs && \ mkdir -p test-opensearch-install/dxp/deploy && \ cd test-opensearch-installヒントcd test-opensearch-installコマンドを実行すると、test-opensearch-installフォルダーに移動します。 このフォルダにある残りのコマンドをすべて実行してください。 -
コンテナがホスト名で通信できるように、Dockerネットワークを作成します。
docker network create opensearch-net
セキュリティ証明書を生成する
OpenSearchでは、トランスポート層(ノード内部通信)とHTTP層(クライアント接続)の両方に証明書が必要です。 証明書には、SAN として DNS:opensearch を含める必要があります。これにより、Docker ネットワーク上で名前を使用して OpenSearch コンテナに接続する際に、Liferay の SSL 検証が成功します。 以下の手順では、認証局(CA)を作成し、それを使用してノード証明書に署名し、OpenSearch用のPKCS#12キーストアと、Liferayが接続を検証するためのCA証明書を含む別のトラストストアという2つのファイルを生成します。
-
認証局(CA)を生成する:
openssl genrsa -out certs/ca.key 2048 openssl req -x509 -new -nodes -key certs/ca.key -sha256 -days 730 \ -out certs/ca.pem -subj "/CN=OpenSearch-CA" -
ノードキーと証明書署名要求を生成します。
openssl genrsa -out certs/opensearch.key 2048 openssl req -new -key certs/opensearch.key \ -out certs/opensearch.csr -subj "/CN=opensearch" -
SAN拡張ファイルを作成します。
DNS:opensearchエントリは、Docker ネットワーク上のコンテナ名と一致します。printf 'subjectAltName=DNS:opensearch,DNS:localhost,IP:127.0.0.1' \ > certs/opensearch.ext -
認証局(CA)と証明書に署名してください。
openssl x509 -req -sha256 -days 730 \ -in certs/opensearch.csr \ -CA certs/ca.pem -CAkey certs/ca.key -CAcreateserial \ -out certs/opensearch.pem \ -extfile certs/opensearch.ext -
PKCS#12キーストアへのエクスポート:
openssl pkcs12 -export \ -in certs/opensearch.pem -inkey certs/opensearch.key \ -CAfile certs/ca.pem -chain \ -out certs/opensearch.p12 -passout pass:liferay -
CA証明書を信頼済みエントリとして含む別のトラストストアを作成します。
keytool -import -trustcacerts -alias ca -file certs/ca.pem \ -keystore certs/truststore.p12 -storetype PKCS12 \ -storepass liferay -noprompt -
証明書ファイルをコンテナが読み取れるようにします。
chmod a+r certs/*
OpenSearchの設定
セキュリティプラグインがPKCS#12証明書を使用するように構成する opensearch.yml ファイルを作成します。 このファイルを test-opensearch-install フォルダーに保存してください。
cluster.name: LiferayOpenSearchCluster
node.name: opensearch
network.host: 0.0.0.0
discovery.type: single-node
indices.query.bool.max_clause_count: 4096
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.keystore_type: PKCS12
plugins.security.ssl.transport.keystore_filepath: certs/opensearch.p12
plugins.security.ssl.transport.keystore_password: liferay
plugins.security.ssl.transport.truststore_type: PKCS12
plugins.security.ssl.transport.truststore_filepath: certs/truststore.p12
plugins.security.ssl.transport.truststore_password: liferay
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.keystore_type: PKCS12
plugins.security.ssl.http.keystore_filepath: certs/opensearch.p12
plugins.security.ssl.http.keystore_password: liferay
plugins.security.ssl.http.truststore_type: PKCS12
plugins.security.ssl.http.truststore_filepath: certs/truststore.p12
plugins.security.ssl.http.truststore_password: liferay
plugins.security.allow_default_init_securityindex: true
plugins.security.nodes_dn:
- 'CN=opensearch'
plugins.security.authcz.admin_dn:
- 'CN=admin'
OpenSearchコンテナがファイルを読み取れるようにします。
chmod a+r opensearch.yml
OpenSearchを開始する
カスタム証明書と設定をマウントした状態で、 opensearch-net ネットワーク上で OpenSearch コンテナを起動します。 DISABLE_INSTALL_DEMO_CONFIG=true を設定すると、デモ構成インストーラーがカスタムの opensearch.yml を上書きするのを防ぎます。
docker run -it -m 2g \
--name opensearch \
--network opensearch-net \
-e "DISABLE_INSTALL_DEMO_CONFIG=true" \
-p 9200:9200 \
-v $(pwd)/certs:/usr/share/opensearch/config/certs \
-v $(pwd)/opensearch.yml:/usr/share/opensearch/config/opensearch.yml \
-v $(pwd)/opensearch-data:/usr/share/opensearch/data \
opensearchproject/opensearch:2
SELinuxが有効になっているシステム(例:Fedora、RHEL)では、コンテナがバインドマウントされたファイルにアクセスできるように、各ボリュームマウントに :z を追加します。
docker run -it -m 2g \
--name opensearch \
--network opensearch-net \
-e "DISABLE_INSTALL_DEMO_CONFIG=true" \
-p 9200:9200 \
-v $(pwd)/certs:/usr/share/opensearch/config/certs:z \
-v $(pwd)/opensearch.yml:/usr/share/opensearch/config/opensearch.yml:z \
-v $(pwd)/opensearch-data:/usr/share/opensearch/data:z \
opensearchproject/opensearch:2
OpenSearchがセキュリティインデックスをデフォルト設定で初期化するため、初回起動には通常よりも時間がかかります。 続行する前に、 [oonNode] [opensearch] started のようなログ メッセージが表示されるまで待ってください。
分析プラグインをインストールする
Liferayでは、OpenSearchに以下の分析プラグインが必要です。
-
新しいターミナルウィンドウを開き、実行中のコンテナにexecコマンドで接続します。
docker exec -it opensearch /bin/bash -
必要なプラグインをインストールしてください。
./bin/opensearch-plugin install analysis-icu analysis-kuromoji analysis-smartcn analysis-stempel -
シェルを終了する:
exit -
OpenSearchコンテナをCtrl+Cで停止し、再起動してプラグインを登録してください。
docker start -i opensearch
Liferayの設定
-
Elasticsearch固有のモジュールを無効にするための設定ファイルを作成します。
touch dxp/files/osgi/configs/com.liferay.portal.bundle.blacklist.internal.configuration.BundleBlacklistConfiguration.configファイルを開いて、以下の内容を入力してください。
blacklistBundleSymbolicNames=[\ "com.liferay.portal.search.elasticsearch.cross.cluster.replication.impl",\ "com.liferay.portal.search.elasticsearch.monitoring.web",\ "com.liferay.portal.search.elasticsearch8.api",\ "com.liferay.portal.search.elasticsearch8.impl",\ "com.liferay.portal.search.learning.to.rank.api",\ "com.liferay.portal.search.learning.to.rank.impl"\ ]注Liferay DXP 2025.Q1–Q4 では、Elasticsearch バンドルのシンボル名に
elasticsearch7が含まれ、elasticsearch8の代わりに含まれています。 -
OpenSearchの設定ファイルを作成します。
touch dxp/files/osgi/configs/com.liferay.portal.search.opensearch2.configuration.OpenSearchConfiguration.configファイルを開いて、以下の内容を入力してください。
remoteClusterConnectionId="REMOTE" -
接続設定ファイルを作成します。
touch dxp/files/osgi/configs/com.liferay.portal.search.opensearch2.configuration.OpenSearchConnectionConfiguration-REMOTE.configファイルを開いて、以下の内容を入力してください。
active=B"true" authenticationEnabled=B"true" connectionId="REMOTE" httpSSLEnabled=B"true" networkHostAddresses=["https://opensearch:9200"] password="admin" truststorePassword="liferay" truststorePath="/opt/liferay/opensearch/certs/truststore.p12" truststoreType="pkcs12" username="admin"警告これは、OpenSearch のセキュリティ プラグインのデフォルトのデモ管理者認証情報 (
admin/admin) を使用します。 これは地域的な演習には許容されるが、実運用には使用してはならない。 認証を適切に設定するには、 OpenSearch のセキュリティドキュメント を参照してください。
OpenSearchコネクタをデプロイする
Liferay Marketplace から、 OpenSearch のインストール の手順に従って、OpenSearch 2 への Liferay コネクタをダウンロードします。 LPKG ファイルを入手したら、それを dxp/deploy/ フォルダーにコピーします。
cp /path/to/liferay-connector-to-opensearch-2.lpkg dxp/deploy/
Liferayは起動時にこのフォルダからコネクタを自動的に取得します。
Liferayを起動する
同じ opensearch-net ネットワーク上で Liferay コンテナを起動します。 DXP構成フォルダと証明書フォルダをマウントします。
docker run -it --memory 9g \
--name liferay \
--network opensearch-net \
--publish 8080:8080 \
--volume $(pwd)/dxp:/mnt/liferay \
--volume $(pwd)/certs:/opt/liferay/opensearch/certs \
liferay/portal:7.4.3.132-ga132
SELinuxが有効なシステム(例:Fedora、RHEL)では、各ボリュームマウントに :z を追加します。
docker run -it --memory 9g \
--name liferay \
--network opensearch-net \
--publish 8080:8080 \
--volume $(pwd)/dxp:/mnt/liferay:z \
--volume $(pwd)/certs:/opt/liferay/opensearch/certs:z \
liferay/portal:7.4.3.132-ga132
チェックポイント: Liferay が起動したら、 コントロール パネル → 設定 → 検索 で OpenSearch 接続がアクティブになっていることを確認します。

インデックスアクション タブの コントロール パネル → 設定 → 検索 から検索とスペルチェックのインデックスを再インデックスします。
掃除
この演習のために作成されたすべてのものを削除するには、まず両方のコンテナを停止してから、次の手順に従ってください。
-
容器を取り外します。
docker container rm opensearch liferay -
Dockerネットワークを削除します。
docker network rm opensearch-net -
フォルダ構造を削除します。 まず、
test-opensearch-installフォルダーの親フォルダーにいることを確認してから、以下を実行してください。rm -fr test-opensearch-install