この記事では、JBoss 6 EAPをセットアップし、このアプリケーションサーバーにLiferay 6.1 EEと6.2 EEをデプロイする方法の概要を説明します。
解像度
始める前に JBoss EAP 6.0.1 または 6.1 をダウンロードし、お好みの場所にインストールします。以後、 $JBOSS_HOMEと呼びます。
ご注意:Liferay Homeは、JBossを含むディレクトリをデフォルトとしています。 これは、以下のプロパティで変更可能です:
##
## Liferay Home ##
#
# Specify the Liferay home directory. #
liferay.home=${resource.repositories.root}
また、Liferay WAR の希望するバージョンは、ヘルプセンター (https://www.help.liferay.com)で確認することができます。 希望するバージョンのLiferay依存関係は、ヘルプセンターにあります (https://www.help.liferay.com)。
依存性ジャー
1. $JBOSS_HOME/modules/com/liferay/portal/mainというフォルダを作成し、Liferay Portal Dependencies の zip ファイルにある jar ファイルをこのフォルダに解凍してください。
2. データベースドライバ .jar ファイルをダウンロードし、 $JBOSS_HOME/modules/com/liferay/portal/main フォルダにも入れてください。 例えば、MySQL Connector ドライバを http://dev.mysql.com/downloads/connector/j/ からダウンロードし、その .jar ファイルを $JBOSS_HOME/modules/com/liferay/portal/main フォルダに配置します。
3. module.xml を $JBOSS_HOME/modules/com/liferay/portal/main フォルダに作成し、以下の行を挿入します:
<?xml version="1.0"?>
<module xmlns="urn:jboss:module:1.0"name="com.liferay.portal">
<resources>
<resource-root path="mysql-connector-[versionHere]-bin.jar" />
<resource-root path="portal-service.jar" />
<resource-root path="portlet.jar" />
</resources>
<dependencies>
<module name="javaxapi" />
<module name="javaxmailapi" />
<module name="javaxservletapi" />
<module name="javaxservletjspapi" />
<module name="javaxtransactionapi" />
</dependencies>
</module>
その他のデータベースドライバの場合は、MySQLリソースルートエントリのパスをデータベースコネクタjarの名前に置き換えてください。
Liferay On Jboss 6 EAP In Standalone Mode 対 Jboss 6 EAP In Standalone Mode。 ドメインモード
JBoss 6 EAPは、スタンドアロンモードまたはドメインモードで起動することができます。 ドメインモードでは、単一のコントロールポイントから複数のアプリケーションサーバーインスタンスを管理できます。 このようなアプリケーションサーバーの集合体をドメインと呼びます。 スタンドアロンモードとドメインモードの詳細については、『JBoss 6 EAP Admin Guide』のこのトピックに関するセクションを参照してください。 Liferayは、スタンドアローンモードで動作する場合はJBoss 6 EAPを完全にサポートしますが、ドメインモードで動作する場合はサポートしません。
Liferay on JBoss 6 EAPをドメインモードで動作させることは可能ですが、この方法は完全にはサポートされていません。 特に、JBoss 6 EAPではドメインモードでエクスプロードされていない.warファイルをデプロイできないため、Liferayのホットデプロイは機能しない。 その代わり、.war ファイルは domain/data/content ディレクトリにあります。 デプロイは、コマンドラインインターフェイスを使用してのみ可能です。 これにより、多くのLiferayプラグインが意図したとおりに動作しなくなります。 例えば、JSPフックはドメインモードで動作するJBoss 6 EAPでは機能しません。LiferayのJSPオーバーライド機構は、アプリケーションサーバーが分解されたプラグイン.warファイルの場所からカスタマイズされたJSPファイルを再ロードすることに依存するからです。 サービスやアクションフックなどの他のプラグインは、JBossがファイルシステム上の分解された.warファイルから何か(JSPファイルなど)にアクセスする必要がないため、依然として正常に動作するはずです。
JBossの構成
XML ファイル $JBOSS_HOME/standalone/configuration/standalone.xmlで JBoss サーバーインスタンスの設定を指定します。 また、 $JBOSS_HOME/bin/ フォルダにあるコンフィグレーションスクリプトとスタートアップスクリプトをユーザーが一部修正する必要があります。
standalone.xmlを修正する。
1. enable-welcome-root="false"を指定して、Web サブシステムの仮想サーバーのデフォルトホストのウェルカムルートを無効化します。
<subsystem xmlns="urn:jboss:domain:web:1.1"default-virtual-server="defaulthost">
<connector name="http" scheme="http" protocol="HTTP/1.1" socket-binding="http"/>
<virtual-server name="defaulthost" enable-welcome-root="false">
<alias name="localhost" />
<alias name="examplecom" />
</virtual-server>
</subsystem>
2. Web サブシステム要素内に、以下の <configuration> 要素を挿入する。
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="defaulthost">.
<configuration>
<jsp-configuration development="true" />
</configuration>
3. deployment-timeout="240" を設定し、デプロイスキャナーのタイムアウトを追加します。
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner name="default"
path="deployments"
scan-enabled="true"
scan-interval="5000"
relative-to="jboss.server.base.dir"
deployment-timeout="240"/>
</subsystem>
4. エレメント <subsystem xmlns="urn:jboss:domain:security:1.2">で定義されたセキュリティサブシステム <security-domains> に、以下の JAAS セキュリティドメインを追加します。
<security-domain name="PortalRealm">
<authentication>
<login-module code="com.liferay.portal.security.jaas.PortalLoginModule" flag="required"/>
</authentication>
</security-domain>
5. </extensions> と <management> のタグの間に、以下のシステムプロパティを追加します:
<system-properties>
<property name="orgapachecatalinaconnectorURI_ENCODING" value="UTF-8" />
<property name="orgapachecatalinaconnectorUSE_BODY_ENCODING_FOR_QUERY_STRING" value="true" />
</system-properties>
module.xmlを修正する。
$JBOSS_HOME/modules/sun/jdk/
に配置されています。
<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" />
コンフィギュレーションとスタートアップスクリプト
1. $JBOSS_HOME/bin/ フォルダにあるスタンドアローンドメインの設定スクリプトファイル standalone.conf (Windows では standalone.conf.bat) を修正します。
これらの修正により、以下のオプションが変更されます:
- ファイルエンコードを設定する
- ユーザーのタイムゾーンを設定する
- 優先プロトコルスタックを設定します。
- 利用可能なデフォルトのメモリ容量を増やします。
WindowsでJVMの設定をする場合:
- Windowsの場合、次の行のようにJAVA_OPTSの最初の割り当てをコメントアウトしてください:
Rem # set "JAVA_OPTS=-Xms64M -Xmx512M -XX:MaxPermSize=256M - 次に、ファイルの最後にあるJAVA_OPTS_SETの行の1行上に、次のJAVA_OPTSの割り当てを追加します:
set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true -Djava.security.manager -Djava.security.policy=%JBOSS_HOME%/bin/server.policy -Djboss.home.dir=$JBOSS_HOME -Duser.timezone=GMT -Xmx1024m-XX:MaxPermSize=256m"
UNIX/LinuxでJVMの設定を行う場合:
- Unixの場合、JAVA_OPTSに以下のような値をマージしてください:
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Djava.security.policy=server.policy -Djboss.home.dir=$JBOSS_HOME -Duser.timezone=GMT -Xmx2048m -XX:MaxPermSize=256m -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
2. データベース設定
JBossを使用してデータソースを管理する場合は、このセクションの指示に従います。 組み込みのLiferayデータソースを使用する場合は、このセクションをスキップしてください。
standalone.xmlで、データソースサブシステムの <datasources> 要素内にデータソースとドライバを追加します。
- まず、 <subsystem xmlns="urn:jboss:domain:datasources:1.1">の <datasources> 要素内にデータソースを追加します。
<datasource jndi-name="javajdbcLiferayPool" pool-name="LiferayPool" 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>URLのデータベース値(例:lportal)、ユーザー値、パスワード値は、必ずそのデータベース固有の値に置き換えてください。
- そして、
<datasources>要素の中にある<drivers>要素にもドライバを追加します。<drivers><driver name="mysql" module="comliferayportal"/></drivers>
最終的なデータソースサブシステムは次のようなものになるはずです:
<subsystem xmlns="urn:jboss:domain:datasources:1.1">
<datasources>
<datasource jndi-name="javajdbcLiferayPool"
pool-name="LiferayPool"
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="comliferayportal"/>
</drivers>
</datasources>
</subsystem>
メール設定
このドキュメントが書かれた時点では、JavaMailはまだJBoss AS 7.0.1に対応していませんでしたが、JBoss AS 7.1 alphaでは実装されています( https://issues.jboss.org/browse/AS7-1177を参照ください)。 ユーザーがJBossにメールセッションを管理させたい場合は、JBoss AS7.1 alphaにある実装に基づく以下の手順を使用してください。 ユーザーがLiferayのビルトインメールセッションを使用したい場合は、このセクションをスキップしてください。
standalone.xml が以下の例のように構成されていることを確認する:
<subsystem xmlns="urn:jboss:domain:mail:1.0">
<mail-session jndi-name="javamailMailSession" >
<smtp-server address="smtp.gmail.com" port="465">
<login name="username" password="password"/>
</smtp-server>
<pop3-server address="pop.gmail.com" port="110"/>
<imap-server address="imap.gmail.com" port="993">
<login name="username" password="password"/>
</imap-server>
</mail-session>
</subsystem>
データソースとメールセッションを設定する
- まず、JBossのインストール先の1つ上のフォルダ(例: $JBOSS/...)にある、Liferay Homeフォルダに移動します。
-
JBoss を使用してデータソースを管理する場合は、 Liferay Home の portal-ext.properties ファイルに以下を追加して、データソースを使用することを参照します:
jdbc.default.jndi.name=java:jdbc/LiferayPool
- Liferay Portal を使用してデータソースを管理する場合は、 Deploy Liferay セクションの指示に従って、セットアップウィザードを使用してください。
- Liferay Portal を使用してメールセッションを管理する場合、この設定は Liferay Portal 内で行われます。
- コントロールパネル > サーバー管理 > メール にアクセスし、メールセッションの設定を入力します。
- メールセッションの管理に JBoss を使用している場合は、そのメールセッションを参照するために portal-ext.properties ファイルに以下を追加します:
mail.session.jndi.name=java:mail/MailSession
セキュリティ構成
Marketplaceから他の人のアプリを使い始める準備ができたら、ポータルとJBossサーバーをセキュリティ脅威から保護したいと思うでしょう。 そのためには、JBossサーバーでJava Securityを有効にし、ポータルにサーバーへのアクセスを許可するセキュリティポリシーを指定します。
JBoss の設定」セクションで前述した standalone.conf.bat ファイルで -Djava.security.manager と -Djava.security.policy の Java オプションを設定したことを思い出してください。 -Djava.security.manager Javaオプションは、JBoss上のセキュリティを有効にします。 同様に、 -Djava.security.policy Javaオプションは、サーバーのJavaセキュリティポリシーの許可をリストアップします。 これらのオプションを設定していない場合、Javaセキュリティを使用する前に設定する必要があります。
この設定により、すべてのパーミッションが開放されます。 後でポリシーで権限を調整することができます。 $JBOSS_HOME/bin/server.policy ファイルを作成し、以下の内容を追加します:
grant {
permission java.security.AllPermission;
};
Java SE Security Architectureに関する広範な情報については、その仕様書(http://docs.oracle.com/javase/7/docs/technotes/guides/security/spec/security-spec.doc.html)を参照してください。 また、Liferayプラグインのリソースへのアクセスを設定する方法については、Developer's GuideのUnderstanding Plugin Security Managementのセクションを参照してください。
Liferayをデプロイする
-
$JBOSS_HOME/standalone/deployments/ROOT.warというフォルダがすでに存在する場合は、そのサブフォルダとファイルをすべて削除してください。 それ以外の場合は、新しいフォルダ$JBOSS_HOME/standalone/deployments/ROOT.warを作成します。 - Liferay
.warファイルを ROOT.war フォルダに解凍します。 -
ROOT.warファイルで、WEB-INF/jboss-deployment-structure.xmlファイルを開いてください。 このファイルで、<module name="comliferayportal" />の依存関係を次の構成に置き換えます:<module meta-inf="export" name="com.liferay.portal"> <imports> <include path="META-INF" /> </imports> </module>これにより、OSGiコンテナを通じてPortal APIを公開することで、Audience TargetingなどのOSGiプラグインが適切に動作するようになります。
- ROOT.warのデプロイを開始するには、 $JBOSS_HOME/standalone/deployments/フォルダにROOT.war.dodeployという空ファイルを作成します。 起動時にJBossはこのファイルの存在を検出し、Webアプリケーションとしてデプロイします。
- eclipselink.jar で提供されるものではなく、Hibernate の永続性プロバイダーが使用されるように、 $JBOSS_HOME/standalone/deployments/ROOT.war/WEB-INF/lib から eclipselink.jar を削除します。
- Liferay Portalを初めて起動する場合、サーバー起動時にセットアップウィザードが起動されます。 ウィザードを再実行したい場合は、プロパティファイル(例:portal-setup-wizard.properties)に
setup.wizard.enabled=trueを指定してください。 Liferay Portal と共にセットアップウィザードを開始する - ユーザーがポータルの設定、サイトの管理アカウントの設定、Liferay内でのデータベース管理を行う場合に行います。 - それ以外の場合、ユーザーが で現在のポータル設定を保持したい場合、、セットアップウィザードを起動せずにポータルを起動することができます。
セットアップウィザードを起動せずにサーバーを起動するには、portal-ext.properties に
setup.wizard.enabled=falseを指定してください。 ユーザーは、portal.propertiesを修正することを強く推奨します。注:
portal-setup-wizard.propertiesのプロパティ値は、portal-ext.propertiesのプロパティ値より優先されます。 - JBoss アプリケーションサーバーを起動します。コマンドコンソールで次のように入力します。
standalone.bat(./standalone.shUNIX/Linux 環境の場合)。- セットアップウィザードが無効の場合、サイトのホームページは、ブラウザで自動的に http://localhost:8080で開きます。
- それ以外の場合は、セットアップウィザードがブラウザで開きます。
追加情報
JBoss EAPバンドルには、単なるアプリケーションサーバーだけでなく、最新のJBoss EAPにはスタンドアロンインスタンスとクラスタ環境用のドメインモードが含まれています。 バンドルには、AS 7.xのコミュニティ版に加え、エンタープライズレベルの製品も含まれています。 AS 7の代替バージョンはWildflyです。WildflyのXSDは、6.3バージョン以上で見られます。
その他、jbossドメインやウェブサービスなど、バックエンドのすべてをアップグレードしています。 ユーザーは、スキーマだけでなく、⾳⽊⽊⽊⽊の増⼤を⾒ることができます。 ドメインのセキュリティ管理には、提案されたパスワードが要件を満たさない場合にヒントを与える、ユーザーパスワードの追加ポリシーがより使いやすいと思います。
詳しくは、 JBoss EAP リリースノートの変更ログを参照してください。
既知の問題
JBoss 6.x EAP上でポータルが動作している場合、ポータルのログに以下のような警告メッセージが表示されることがあります:
19:55:18,123 WARN [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015960: Class Path entry unoloader.jar in /JBOSS_HOME/jboss-eap-6.1/standalone/deployments/ROOT.war/WEB-INF/lib/jurt.jar does not point to a valid jar for a Class-Path reference. 19:55:18,124 WARN [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015960: Class Path entry ../../lib/ in /JBOSS_HOME/jboss-eap-6.1/standalone/deployments/ROOT.war/WEB-INF/lib/jurt.jar does not point to a valid jar for a Class-Path reference. 19:55:18,124 WARN [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015960: Class Path entry ../bin/ in /JBOSS_HOME/jboss-eap-6.1/standalone/deployments/ROOT.war/WEB-INF/lib/jurt.jar does not point to a valid jar for a Class-Path reference.
解像度
これらの警告はポータルの機能には影響しませんが、jbossの問題に起因しています。 解決策は、Redhat こちらから提供されています。 なお、このソリューションを使用するには、Redhatの契約者である必要があります。