oo

WildFlyへのインストール

WildFlyにインストールするには、DXP WARのインストール、依存関係のインストール、WildFlyの設定、およびWildFlyへのDXPのデプロイが必要です。 データベースとメールサーバーの接続も設定する必要があります。

前提条件

Liferay DXPにはJava JDK 8または11が必要です。 詳細は、 互換性マトリクス を参照してください。

ヘルプセンター (サブスクリプション)または Liferayコミュニティのダウンロード から、これらのファイルをダウンロードしてください。 管理者は以下をダウンロードする必要があります。

  • DXP WARファイル
  • OSGi依存関係のZIPファイル
  • 依存関係のZIPファイル(DXP 7.3以前)

インストール手順では、これらの用語を使用しています。

[Liferay Home]:WildFlyサーバーフォルダを含むフォルダ( $WILDFLY_HOMEと表記されています。) DXPをインストールしてデプロイした後、datadeploy、およびlogsフォルダを生成します。

$WILDFLY_HOME:WildFlyサーバーフォルダー。 通常、wildfly-[version]という名前です。

DXP WARのインストール

  1. クリーンなWildflyインストールを開始していて、$WILDFLY_HOME/standalone/deployments/ROOT.warフォルダが存在する場合は、そのすべてのサブフォルダとファイルを削除します。
  2. DXP WARファイルを$WILDFLY_HOME/standalone/deployments/ROOT.warフォルダに解凍します(このフォルダが存在しない場合は作成します)。

依存関係のインストール

  1. OSGi Dependencies ZIPファイルを [Liferay Home]/osgi フォルダーに解凍します(このフォルダーが存在しない場合は作成します)。 LiferayのOSGiランタイムは、これらのモジュールに依存しています。

  2. DXP 7.4+ WARファイルには、MariaDBおよびPostgreSQLのドライバーが含まれています。 以前のWARにはそれらがありません。 7.4以降のWARに、使用中のサポートされているデータベースのドライバーがない場合は、データベースベンダーのJDBC JARファイルをダウンロードして、$WILDFLY_HOME/standalone/deployments/ROOT.war/WEB-INF/shielded-container-libフォルダーに配置します。

    サポートされているデータベースの一覧については、 互換性マトリックス を参照してください。

note

HypersonicデータベースはDXPにバンドルされており、テスト目的に役立ちます。 本番環境のDXPインスタンスにはHSQLを使用しないでください

以前のバージョンの依存関係をインストールする

DXP 7.3以前の場合は、次の追加手順に従います。

  1. 依存関係のZIPファイルを$WILDFLY_HOME/modules/com/liferay/portal/mainフォルダに解凍します(このフォルダが存在しない場合は作成します)。

  2. $WILDFLY_HOME/modules/com/liferay/portal/mainフォルダにmodule.xmlというファイルを作成します。 このファイルでは、データベースベンダーの JAR ファイル、ポータルモジュール、およびその必要なリソースや依存関係のすべてにパスを設定した resource-root 要素を宣言します。

    <?xml version="1.0"?>
    
    <module xmlns="urn:jboss:module:1.0" name="com.liferay.portal">
        <resources>
            <resource-root path="[place your database vendor's JAR file name here]" />
            <resource-root path="[place a Liferay dependencies ZIP JAR file name here]" />
            <!-- Add a resource-root element for each Liferay dependencies ZIP JAR -->
        </resources>
        <dependencies>
            <module name="javax.api" />
            <module name="javax.mail.api" />
            <module name="javax.servlet.api" />
            <module name="javax.servlet.jsp.api" />
            <module name="javax.transaction.api" />
        </dependencies>
    </module>
    

    [place your database vendor's JAR file name here]をデータベースのドライバーJARに置き換えます。

    依存関係ZIPのJARごとに、path属性がJAR名に設定されたresource-root要素を追加します。 たとえば、com.liferay.petra.concurrent.jarファイルに次のようなresource-root要素を追加します。

    <resource-root path="com.liferay.petra.concurrent.jar" />
    

チェックポイント:

  1. OSGiの依存関係は、 [Liferay Home]/osgi フォルダに解凍されています。
  2. データベースベンダーのJDBCドライバーがインストールされています。
  3. module.xml<resource-root> 要素内のすべての JAR をリストしています。

WildFlyでのスタンドアロンモードとドメインモードのDXPの実行

WildFlyは、 スタンドアロン モードまたは ドメイン モードのいずれかで起動できます。 ドメインモードでは、単一のコントロールポイントから複数のアプリケーションサーバーインスタンスを管理できます。 このようなアプリケーションサーバーのコレクションは、 ドメイン と呼ばれます。 スタンドアロンモードとドメインモードの詳細は、 WildFly管理ガイド このトピックに関するセクションを参照してください。 DXPは、スタンドアロンモードではWildFlyを完全にサポートしますが、ドメインモードではサポートしません。

DXPは、スタンドアロンモードで実行する場合はWildFlyをサポートしますが、ドメインモードで実行する場合はサポートしません。 WildFlyはファイル(展開または非展開)をコピーして管理対象デプロイメントのコンテンツを管理するため、DXPの自動展開は管理対象デプロイメントでは機能しません。 これにより、JSPフックとExtプラグインが意図したとおりに機能しなくなります。 たとえば、DXPのJSPオーバーライドメカニズムはアプリケーションサーバーに依存しているため、JSPフックは管理対象ドメインモードで実行されているWildFlyでは機能しません。 ただし、JSPフックとExtプラグインは非推奨であるため、使用していない可能性があります。

ドメインモードデプロイメントを使用する場合は、コマンドラインインターフェースを使用します。

note

これにより、DXPが複数のWildFlyサーバー上のクラスター環境で実行されるのを防ぐことはできません。 スタンドアロンモードで実行されていてWildFlyサーバーで実行されているDXPインスタンスのクラスターを設定できます。 詳細については、クラスタリングの記事 を参照してください。

WildFlyの構成

WildFlyがDXPを実行するように構成するには、次のものが含まれます。

  • 環境変数の設定
  • プロパティと記述子の設定
  • 不要な構成を削除する

$WILDFLY_HOME/standalone/configuration/standalone.xmlに以下の変更を加えます。

  1. JSPにJava 8 VM互換を使用するようにサーブレットコンテナを設定します。 デフォルトサーブレットコンテナを<servlet-container name="default">``<subsystem xmlns="urn:jboss:domain:undertow:12.0" ...要素で探し出します。 サーブレットコンテナの <jsp-config> 要素に、 developmentsource-vmtarget-vm 属性を以下のように設定します。

    <jsp-config development="true" source-vm="1.8" target-vm="1.8" />
    
  2. 終了 </extensions> タグを <server>sの中から見つけます。 その終了タグの直下に、まだ存在していなければ、以下のシステムプロパティを挿入します。

    <system-properties>
        <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8" />
        <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true" />
    </system-properties>
    
  3. ログから WFLYSRV0059WFLYEE0007 のメッセージを除外します。 <subsystem xmlns="urn:jboss:domain:logging:8.0"> 要素の <console-handler> タグの中に、<level name="INFO"/>タグの直下に次の<filter-spec>タグを追加します。

    <filter-spec value="not(any(match(&quot;WFLYSRV0059&quot;),match(&quot;WFLYEE0007&quot;)))" />
    
  4. deployment-timeout="600" の設定を、 <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0"> 要素内の <deployment-scanner> タグに追加することで、デプロイメントスキャナーのタイムアウトを追加しています。 例:

    <deployment-scanner deployment-timeout="600" path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
    
  5. LiferayのJAASセキュリティドメインを <subsystem xmlns="urn:jboss:domain:security:2.0"><security-domains> 要素に追加します。 追加するドメインコードは以下の通りです。

    <security-domain name="PortalRealm">
        <authentication>
            <login-module code="com.liferay.portal.security.jaas.PortalLoginModule" flag="required" />
        </authentication>
    </security-domain>
    
  6. <subsystem xmlns="urn:jboss:domain:undertow:12.0" ...> 要素からウェルカムコンテンツ要素をコメントアウトします。 例えば、

    <!--<location name="/" handler="welcome-content"/>-->
    

    および

    <handlers>
        <!--<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>-->
    </handlers>
    

チェックポイント:

続行する前に、次のプロパティが standalone.xml ファイルに設定されていることを確認してください。

  1. 新しい <system-property> が追加されます。
  2. 新しい <filter-spec> が追加されていること。
  3. <deployment-timeout>600に設定されていること。
  4. 新しい <security-domain> が作成されていること。
  5. ウェルカムコンテンツが無効になっていること。

次に、JVMと起動スクリプトを構成します。

$WILDFLY_HOME/ bin / フォルダーで、スタンドアロンドメインの構成スクリプトファイル standalone.conf を開きます。

  • ファイルのエンコーディングを UTF-8に設定します。
  • ユーザーのタイムゾーンを GMTに設定します。
  • 優先プロトコルスタックを設定します。
  • 利用可能なデフォルトのメモリ容量を増やします。
important

DXPでは、アプリケーションサーバーのJVMが GMTタイムゾーンとUTF-8ファイルエンコーディングを使用する必要があります。

standalone.confスクリプトを次のように編集します。

  1. if [ "x$JAVA_OPTS" = "x" ]; ステートメントの下で、 JAVA_OPTS の割り当てからJVMサイジングオプションを削除します。 例えば、以下のものを

    JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"
    

    以下のものと置き換えます。

    JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
    
  2. 次のJavaオプションの設定をファイルの最後に追加します。

    JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Djava.locale.providers=JRE,COMPAT,CLDR -Djava.net.preferIPv4Stack=true -Dlog4j2.formatMsgNoLookups=true -Duser.timezone=GMT -Xms2560m -Xmx2560m -XX:MaxNewSize=1536m -XX:MaxMetaspaceSize=768m -XX:MetaspaceSize=768m -XX:NewSize=1536m -XX:SurvivorRatio=7"
    

Javaオプションとメモリ引数について以下に説明します。

JVMオプションの説明

オプション 説明
-Dfile.encoding=UTF-8 DXPにはUTF-8ファイルエンコーディングが必要です。
-Djava.locale.providers=JRE,COMPAT,CLDR これは、JDK 11で4桁の日付を表示するために必要です。
-Djava.net.preferIPv4Stack=true IPv6よりもIPv4スタックを優先します。
-Dlog4j2.formatMsgNoLookups=true リモートコード実行(RCE)の脆弱性を解決します。 詳細は、 LPS-143663 を参照してください。
-Duser.timezone=GMT DXPでは、アプリケーションサーバーのJVMがGMTタイムゾーンを使用する必要があります。

メモリ引数の説明

メモリ引数 説明
-Xms ヒープの初期スペース。
-Xmx ヒープの最大スペース。
-XX:NewSize 最初の新しいスペース。 通常、新しいサイズをヒープ全体の半分に設定すると、より小さな新しいサイズを使用するよりもパフォーマンスが向上します。
-XX:MaxNewSize 最大の新しいスペース。
-XX:MetaspaceSize 静的コンテンツ用の初期スペース。
-XX:MaxMetaspaceSize 静的コンテンツ用の最大スペース。
-XX:SurvivorRatio 新しいスペースとSurvivor領域の比率。 Survivor領域は、古い世代の領域に昇格する前に、若い世代のオブジェクトを保持します。
note

DXPのインストール後、これらの構成(これらのJVMオプションを含む)をさらに調整して、パフォーマンスを向上させることができます。 詳細については、 Liferayの調整 および JVMの調整 を参照してください。

チェックポイント:

  1. ファイルエンコーディング、ユーザータイムゾーン、優先プロトコルスタックは、 standalone.conf.sh スクリプトの JAVA_OPTS で設定済みです。
  2. 利用可能なメモリのデフォルト量が増加しました。

これで、WildFlyにDXPをインストールするための規定のスクリプト変更が完了しました。

IBM JDKの使用

WildFlyサーバーでIBM JDKを使用する場合は、以下の追加手順を実行します。

  1. DXP 7.3 以前の場合、 $WILDFLY_HOME/modules/com/liferay/portal/main/module.xml ファイルに移動して、この依存関係を <dependencies> 要素内に挿入してください:

    <module name="ibm.jdk" />

  2. $WILDFLY_HOME/modules/system/layers/base/sun/jdk/main/module.xml ファイルに移動し、<paths>...</paths> 要素内に次のパスを挿入します。

    <path name="com/sun/crypto" />
    <path name="com/sun/crypto/provider" />
    <path name="com/sun/image/codec/jpeg" />
    <path name="com/sun/org/apache/xml/internal/resolver" />
    <path name="com/sun/org/apache/xml/internal/resolver/tools" />
    

追加されたパスは、デプロイメントの例外およびイメージのアップロードの問題に関する問題を解決します。

Liferayにおけるデータソースの構成

DXPには組み込みのHypersonicデータベースが含まれています。これはデモンストレーション目的には最適ですが、 本番環境では使用しないでください 。 本番環境では、フル機能のサポートされているRDBMSを使用してください。 データベースのセットアップについては、データベースの設定を参照してください。

Liferay DXPは、DXPに組み込まれているデータソースを使用する(推奨)か、アプリケーションサーバー上に作成したデータソースを使用してデータベースに接続できます。

セットアップウィザードを使用して、DXPを初めて実行するときに、データベースを使用してDXPの組み込みデータソースを構成できます。 または、データベースの データベーステンプレートに 基づいて、データソースを portal-ext.properties ファイルで構成できます。

Wildflyのデータソース構成

WildFlyを使用してデータソースを管理する場合は、次の手順に従います。

  1. DXP WAR(7.4以降)またはデータベースベンダーからJDBC JARを取得し、$WILDFLY_HOME/modules/com/liferay/portal/mainフォルダにコピーします。

  2. $WILDFLY_HOME/modules/com/liferay/portal/mainフォルダにmodule.xmlというファイルを作成します。 ファイル内で、portalモジュールとJDBC JARを宣言します。

    <?xml version="1.0"?>
    
    <module xmlns="urn:jboss:module:1.0" name="com.liferay.portal">
        <resources>
            <resource-root path="[place your database vendor's JAR file name here]" />
        </resources>
        <dependencies>
            <module name="javax.api" />
            <module name="javax.mail.api" />
            <module name="javax.servlet.api" />
            <module name="javax.servlet.jsp.api" />
            <module name="javax.transaction.api" />
        </dependencies>
    </module>
    
  3. $WILDFLY_HOME/standalone/configuration/standalone.xml ファイルの <datasources> 要素内にデータソースを追加します。

    <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
        <connection-url>[place the URL to your database here]</connection-url>
        <driver>[place your driver name here]</driver>
        <security>
            <user-name>[place your user name here]</user-name>
            <password>[place your password here]</password>
        </security>
    </datasource>
    

    データベースのURL、ユーザー名、パスワードを適切な値に置き換えてください。

    note

    データソースjndi-nameを変更する必要がある場合は、<default-bindings>タグ内のdatasource要素を編集してください。

  4. <datasources> 要素内にもある standalone.xml ファイルの <drivers> 要素にドライバークラス名を追加します。

    <drivers>
        <driver name="[name of database driver]" module="com.liferay.portal">
            <driver-class>[JDBC driver class]</driver-class>
        </driver>
    </drivers>
    

    MySQLを使用する最終的なデータソースサブシステムは次のようになります。

    <subsystem xmlns="urn:jboss:domain:datasources:1.0">
        <datasources>
            <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
                <connection-url>jdbc:mysql://localhost/lportal</connection-url>
                <driver>mysql</driver>
                <security>
                    <user-name>root</user-name>
                    <password>root</password>
                </security>
            </datasource>
            <drivers>
                <driver name="mysql" module="com.liferay.portal">
                    <driver-class>com.mysql.cj.jdbc.Driver</driver-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>
    
  5. Liferay Homeフォルダのportal-ext.propertiesファイルで、JNDiデータソースを指定します。 例えば、

    jdbc.default.jndi.name=java:jboss/datasources/ExampleDS
    

これでデータソースが構成され、準備が整いました。

メールサーバーに接続する

データベース構成と同様に、メールを構成する最も簡単な方法は、DXPにメールセッションを処理させることです。 DXPの組み込みのメールセッションを使用する場合は、このセクションをスキップして、コントロールパネルでconfigure the mail sessionを行います。

WildFlyでメールセッションを管理する場合は、次の手順に従います。

  1. 次のように $WILDFLY_HOME/standalone/configuration/standalone.xml ファイルでメールサブシステムを指定します。

    <subsystem xmlns="urn:jboss:domain:mail:3.0">
        <mail-session jndi-name="java:jboss/mail/MailSession" name="mail-smtp">
            <smtp-server ssl="true" outbound-socket-binding-ref="mail-smtp" username="USERNAME" password="PASSWORD"/>
       </mail-session>
    </subsystem>
    ...
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    ...
    <outbound-socket-binding name="mail-smtp">
            <remote-destination host="[place SMTP host here]" port="[place SMTP port here]"/>
        </outbound-socket-binding>
    </socket-binding-group>
    
  2. Liferay Homeの portal-ext.propertiesファイルで、メールセッションを参照します。 例:

    mail.session.jndi.name=java:jboss/mail/MailSession
    

DXPのデプロイ

  1. ROOT.warのデプロイをトリガーするには、$WILDFLY_HOME/standalone/deployments/フォルダに ROOT.war.dodeployという名前の空のファイルを作成します。
  2. $WILDFLY_HOME/bin に移動し、 standalone.shを実行して WildFly アプリケーションサーバーを起動します。 WildFlyはROOT.war.dodeployファイルを検出し、ファイルのプレフィックス(つまり、ROOT.war)に一致するWebアプリケーションをデプロイします。

DXPのデプロイ後に、 PhaseOptimizerを含む以下のような過剰な警告やログメッセージが表示される場合があります。 これらは良性なので、無視しても構いません。 これらのメッセージは、アプリサーバーのログレベルまたはログフィルターを調整することでオフにできます。

May 02, 2018 9:12:27 PM com.google.javascript.jscomp.PhaseOptimizer$NamedPass process
WARNING: Skipping pass gatherExternProperties
May 02, 2018 9:12:27 PM com.google.javascript.jscomp.PhaseOptimizer$NamedPass process
WARNING: Skipping pass checkControlFlow
May 02, 2018 9:12:27 PM com.google.javascript.jscomp.PhaseOptimizer$NamedPass process
INFO: pass supports: [ES3 keywords as identifiers, getters, reserved words as properties, setters, string continuation, trailing comma, array pattern rest, arrow function, binary literal, block-scoped function declaration, class, computed property, const declaration, default parameter, destructuring, extended object literal, for-of loop, generator, let declaration, member declaration, new.target, octal literal, RegExp flag 'u', RegExp flag 'y', rest parameter, spread expression, super, template literal, modules, exponent operator (**), async function, trailing comma in param list]
current AST contains: [ES3 keywords as identifiers, getters, reserved words as properties, setters, string continuation, trailing comma, array pattern rest, arrow function, binary literal, block-scoped function declaration, class, computed property, const declaration, default parameter, destructuring, extended object literal, for-of loop, generator, let declaration, member declaration, new.target, octal literal, RegExp flag 'u', RegExp flag 'y', rest parameter, spread expression, super, template literal, exponent operator (**), async function, trailing comma in param list, object literals with spread, object pattern rest

Liferay DXP Enterpriseサブスクリプションをお持ちの場合、DXPはアクティベーションキーを要求します。 詳細は、 Liferay DXPのアクティブ化 を参照してください。

  DXPはWildFlyで実行されています。

次のステップ

管理者ユーザーとしてサインインして、DXPでソリューションの構築を開始できます。 または、Liferay DXPのその他のセットアップトピックを参照できます。

Deployment Approach: