Tomcatへのインストール
Liferay-Tomcatバンドルの使用 またはDockerイメージは、Liferay DXPの使用を開始するための最速の方法です。 この記事は、Tomcatアプリケーションサーバーの設定を完全に制御したいユーザーを対象としています。
続行する前に、Liferay-Tomcatバンドルのインストールとデータベースの設定の記事を確認してください。
Tomcatにインストールするには、DXP WARのインストール、依存関係のインストール、Tomcatの設定、およびDXPのデプロイが必要です。 データベースとメールサーバーの接続も設定する必要があります。
これを実現する最も単純で簡単な方法は、Liferay Liferay-Tomcatバンドルをダウンロードし、依存関係、スクリプト、およびROOT.xml
をそこから以下に説明する場所にコピーすることです。 それ以外の方法としては、依存関係をダウンロードして、Tomcatを手動で構成できます。
前提条件
Tomcatの構成方法に関係なく、 ヘルプセンター (サブスクリプション)または Liferayコミュニティのダウンロード からこれらのファイルをダウンロードしてインストールする必要があります。
- DXP WARファイル
- OSGi依存関係のZIPファイル
- 依存関係のZIPファイル(DXP 7.3以前)
Java JDK 8または11が必要です。
Tomcatサーバーの親フォルダはLiferay Homeです。 $TOMCAT_HOME
はTomcatサーバーフォルダを参照します。 通常は、tomcat-[version]
またはapache-tomcat-[version]
という名前です。
DXP WARのインストール
- クリーンなTomcatのインストールを開始する場合は、
$CATALINA_BASE/webapps/ROOT
フォルダのコンテンツを削除します。 これにより、デフォルトのTomcatホームページが削除されます。 - DXP
.war
ファイルのコンテンツを$CATALINA_BASE/webapps/ROOT
に展開します。
依存関係のインストール
DXPは、Liferay-Tomcatバンドルに含まれている多くのJARに依存しています。 バンドル内のJARの中には必須ではないファイルもありますが、有用なJARもあります。 Tomcatバンドルを使用していない場合は、ダウンロードした OSGi依存関係 アーカイブと、以下で説明するサードパーティのJAR依存関係を使用します。
-
OSGi依存関係のZIPファイルの内容を
[Liferay Home]/osgi
フォルダーに解凍します(このフォルダーが存在しない場合は作成します)。 LiferayのOSGiランタイムは、これらのモジュールに依存しています。 -
DXP 7.4+ WARファイルには、MariaDBおよびPostgreSQLのドライバーが含まれています。 以前のWARにはそれらがありません。 7.4以降のWARに、使用中のサポートされているデータベースのドライバーがない場合は、データベースベンダーのJDBC JARファイルをダウンロードして、
$CATALINA_BASE/standalone/deployments/ROOT.war/WEB-INF/shielded-container-lib
フォルダーに配置します。サポートされているデータベースの一覧については、 互換性マトリックス を参照してください。
HypersonicデータベースはDXPにバンドルされており、テスト目的で役立ちます。 本番環境インスタンスにはHSQLを使用しないでください。
DXP 7.3以前の場合は、依存関係ZIPファイルのコンテンツを$TOMCAT_HOME/lib/extフォルダに解凍します(このフォルダが存在しない場合は作成します)。 データベースベンダーのJDBC JARファイルもこのフォルダに入れてください。
Tomcatの設定
DXPを実行するためのTomcatの構成には、次のタスクが含まれます。
- JVMオプションの設定
- DXPのWebアプリケーションコンテキストを指定する
- プロパティと記述子の設定
-
setenv.bat
、setenv.sh
、startup.bat
、startup.sh
、shutdown.bat
、およびshutdown.sh
ファイルをDXPバンドルから$CATALINA_BASE/bin
フォルダにコピーします。 それ以外の場合は、setenv.bat
およびsetenv.sh
スクリプトを作成します。 -
setenv.sh
スクリプトはCatalina用のJVMオプションを設定し、Tomcatのサーブレットコンテナになります。 これらのオプションの中にはJavaランタイム環境の場所が含まれます。 この環境がサーバーでグローバルに使用できない場合は、setenv.sh
スクリプトにその場所を設定して、Tomcatを実行できるようにします。JAVA_HOME
環境変数がDXPがサポートするJREを指すようにして、これを行います。export JAVA_HOME=/usr/lib/jvm/java-8-jdk export PATH=$JAVA_HOME/bin:$PATH
-
次に、DXPをサポートするようにCatalinaのJVMオプションを設定します。
CATALINA_OPTS="$CATALINA_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"
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:SurvivorRatio | 新しいスペースとSurvivor領域の比率。 Survivor領域は、古い世代の領域に昇格する前に、若い世代のオブジェクトを保持します。 |
DXPのインストール後、これらの構成(これらのJVMオプションを含む)をさらに調整して、パフォーマンスを向上させることができます。 詳細については、Liferayの調整およびJVMの調整を参照してください。
引き続き、Tomcatの構成を行います。
-
Liferay-Tomcatバンドルがある場合は、その
$CATALINA_BASE/conf/Catalina/localhost/ROOT.xml
ファイルをアプリケーションサーバーの対応する場所にコピーします。 ファイルパス(存在しない場合)とROOT.xml
ファイルを作成します。ROOT.xml
ファイルは、DXPのWebアプリケーションコンテキストを指定します。 例:<Context crossContext="true"> <JarScanner className="com.liferay.support.tomcat.util.scan.NOPJarScanner" /> <!-- JAAS --> <!--<Realm className="org.apache.catalina.realm.JAASRealm" appName="PortalRealm" userClassNames="com.liferay.portal.kernel.security.jaas.PortalPrincipal" roleClassNames="com.liferay.portal.kernel.security.jaas.PortalRole" />--> </Context>
crossContext="true"
を設定すると、複数のWebアプリケーションで同じクラスローダーを使用できます。 この構成には、JAAS領域を構成するためのコメント付きの指示とタグが含まれています。
XMLファイル名を変更することで、デフォルトのLiferay PortalのWebコンテキストを変更することができますが(例えば、localhost:8080/
からlocalhost:8080/myportal
)、これはお勧めしません。
-
必ずUTF-8 URIエンコードを使用してください。
$CATALINA_BASE/conf/server.xml
ファイルをTomcatバンドルからサーバーにコピーします。 それ以外の場合は、$CATALINA_BASE/conf/server.xml
ファイルを開き、属性URIEncoding="UTF-8"
をHTTPおよびredirectPort=8443
を使用するAJPコネクタに追加します。 以下は例です:旧:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
新:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
旧:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
新:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
-
$CATALINA_BASE/conf/server.xml
内のアクセスログのValve
要素をコメントアウトして、アクセスログの書き込みを控えます(オプション)。 以下ではコメントアウトされています。<!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> -->
-
必要に応じて、
$CATALINA_HOME/conf/logging.properties
ファイルで次のログレベルを設定します。org.apache.catalina.startup.Catalina.level=INFO org.apache.catalina.startup.ClassLoaderFactory.level=SEVERE org.apache.catalina.startup.VersionLoggerListener.level=WARNING org.apache.level=WARNING
-
DXP 7.3以前の場合、
$CATALINA_HOME/conf/web.xml
ファイルを開いてJSPコンパイラをJava 8に設定し、DXPのTagHandlerPool
クラスを設定して、jsp
サーブレット要素の<load-on-startup>
要素の上に次の要素を追加してJSPタグプールを管理します。<init-param> <param-name>compilerSourceVM</param-name> <param-value>1.8</param-value> </init-param> <init-param> <param-name>compilerTargetVM</param-name> <param-value>1.8</param-value> </init-param> <init-param> <param-name>tagpoolClassName</param-name> <param-value>com.liferay.support.tomcat.jasper.runtime.TagHandlerPool</param-value> </init-param>
-
$CATALINA_HOME/conf/web.xml
で、アプリケーションサーバーがアプリケーションのJARやクラスの注釈などの追加のメタデータを検索するかどうかを指定します。web-app
要素の属性metadata-complete="true"
を設定すると、追加のメタデータはないことがアプリケーションサーバーに通知されます。 この設定を使用すると、アプリケーションサーバーの起動が速くなります。 デフォルトでは、追加のメタデータをチェックします。 -
Unix、Linux、またはMac OSを使用している場合は、各フォルダで次のコマンドを実行して、
$CATALINA_HOME/bin
および$CATALINA_BASE/bin
フォルダのシェルスクリプトを実行可能にします。chmod a+x *.sh
LiferayのTomcatサポートJARは、DXP Webアプリケーションの一部です。 DXPはJARのファイルスキャナーを使用します。 DXPがJARを使用するためには、JARが共通のクラスローダーに入っている必要があります。 $CATALINA_BASE/conf/catalina.properties
ファイルを開き、次の値をcommon.loader
プロパティのコンマ区切り値リストの先頭に追加して、ファイルへのCatalinaアクセスを提供します。
"${catalina.home}/webapps/ROOT/WEB-INF/lib/support-tomcat.jar",
DXP 7.3以前の場合、common.loader
プロパティの値リストの先頭に次の値を追加して、$CATALINA_BASE/lib/ext
のJARへのCatalinaアクセスを提供します。
"${catalina.home}/lib/ext","${catalina.home}/lib/ext/*.jar",
チェックポイント:
- ファイルのエンコーディング、ユーザーのタイムゾーン、および優先プロトコルスタックが
setenv.sh
スクリプトに設定されている。 - デフォルトの使用可能メモリとメタスペース制限が設定されている。
$CATALINA_BASE/conf/Catalina/localhost/ROOT.xml
はWebアプリケーションコンテキストを宣言している。$CATALINA_BASE/conf/server.xml
は、UTF-8エンコーディングを設定している。$CATALINA_BASE/conf/server.xml
は、ホストアクセスログを書き込むための値を宣言していない。 (オプション)$CATALINA_HOME/conf/logging.properties
は、必要なログレベルを設定している。$CATALINA_HOME/conf/web.xml
は、タグハンドラープールを設定し、Java 8をJSPコンパイラとして設定している。$CATALINA_HOME/conf/web.xml
は、アプリケーションサーバーが追加のメタデータを検索しないように指定している。 (オプション)- Tomcatの
bin
フォルダ内のスクリプトは実行可能である。 $CATALINA_BASE/conf/catalina.properties
のcommon.loader
プロパティは、Catalinaに必要なJARへのアクセスを許可している。
アプリケーションサーバーは、DXPを実行するように設定されています。
データベース設定
DXPには組み込みのHypersonicデータベースが含まれています。これはデモンストレーション目的には最適ですが、 本番環境では使用しないでください 。 本番環境では、フル機能のサポートされているRDBMSを使用してください。 データベースのセットアップについては、データベースの設定を参照してください。
Liferay DXPは、DXPに組み込まれているデータソースを使用する(推奨)か、アプリケーションサーバー上に作成したデータソースを使用してデータベースに接続できます。
セットアップウィザードを使用して、DXPを初めて実行するときに、データベースを使用してDXPの組み込みデータソースを構成できます。 または、データベースの データベーステンプレートに 基づいて、データソースを portal-ext.properties
ファイルで構成できます。
それ以外の場合は、Tomcatでデータソースを設定できます。
Tomcatデータソースの設定
-
データベースサーバーがインストールされ、動作していることを確かめます。 別のマシンにインストールされている場合は、DXPマシンがアクセスできることを確認してください。
-
DXP WAR(7.4以降)またはデータベースベンダーからJDBC JARを取得し、
$TOMCAT_HOME/lib/ext
フォルダにコピーします。 -
$CATALINA_BASE/conf/Catalina/localhost/ROOT.xml
を開き、Webアプリケーションコンテキスト
でリソース
としてデータソースを追加します。<Context...> ... <Resource name="jdbc/LiferayPool" auth="Container" factory="com.zaxxer.hikari.HikariJNDIFactory" type="javax.sql.DataSource" minimumIdle="10" maxLifetime="0" maximumPoolSize="85" driverClassName="com.mysql.jdbc.Driver" dataSource.user="[place your user name here]" dataSource.password="[place your password here]" jdbcUrl="jdbc:mysql://localhost/lportal?characterEncoding=UTF8&dontTrackOpenResources=true&holdResultsOpenOverStatementClose=true&useFastDateParsing=false&useUnicode=true" /> </Context>
データベースのURL、ユーザー名、パスワードを適切な値に置き換えてください。 なお、Liferayでは、データベース接続プールにデフォルトで Hikari CP を使用します。
-
[Liferay_Home] の
portal-ext.properties
ファイルで、データソースを指定します。 例えば、jdbc.default.jndi.name=jdbc/LiferayPool
データソースが設定されました。
JNDI接続を使用する場合は、 TomcatでJNDIをセットアップするを参照してください。
メール設定
メールを設定する最も簡単な方法は、DXPの組み込みのメールセッションを使用することです。 組み込みのメールセッションを使用する場合は、このセクションをスキップしてください。
Tomcatを使用してメールセッションを管理する場合は、次の手順に従います。
-
$CATALINA_BASE/conf/Catalina/localhost/ROOT.xml
を開き、メールセッションをWebアプリケーションContext
のResource
として定義します。 サンプルのメールセッション値を自分のものに置き換えてください。<Context...> ... <Resource name="mail/MailSession" auth="Container" type="javax.mail.Session" mail.pop3.host="[place POP mail host here]" mail.pop3.port="110" mail.smtp.host="[place SMTP mail host here]" mail.smtp.port="465" mail.smtp.user="[place user name here]" mail.smtp.password="[place password here]" mail.smtp.auth="true" mail.smtp.starttls.enable="true" mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory" mail.imap.host="[place IMAP mail host here]" mail.imap.port="993" mail.transport.protocol="smtp" mail.store.protocol="imap" /> </Context>
-
Liferay Homeの
portal-ext.properties
ファイルで、メールセッションを指定します。 例えば、mail.session.jndi.name=mail/MailSession
メールセッションはTomcatで設定されます。
DXPのデプロイ
$CATALINA_HOME/bin
に移動して./startup.sh
を実行し、Tomcatを起動します。 または、./catalina.sh run
を実行して、DXPのログファイルを追跡します。 ログは起動アクティビティを監査し、デプロイのデバッグに役立ちます。
Liferay DXPエンタープライズサブスクリプションをお持ちの場合、DXPはアクティベーションキーを要求します。 詳細は、 Liferay DXPのアクティブ化 を参照してください。
DXPはTomcatで実行されています。
次のステップ
管理者ユーザーとしてサインインして、DXPでソリューションの構築を開始できます。 または、Liferay DXPのその他のセットアップトピックを参照できます。