2009-05-28 11 views
2

GlassfishにLiferayクラスタをインストールするためのステップバイステップチュートリアルはありますか?Liferay Cluster

答えて

2

Liferayは、サーバーに依存しないSpring/Hibernateアプリケーションです。ほとんどのクラスタ構成は、ポータル(-ext).propertiesファイルのHibernate、EHCache、およびJGroup構成のクラスタリングセクションである必要があります。アプリケーションサーバー固有の唯一の設定は、展開されたすべてのWebアプリケーションと同様に、セッションフェイルオーバーでなければなりません。

5

Liferay WARファイルを2つのノードを持つglassfishクラスタに配置するのと同じ問題、またはそれに類似した作業を行っています。まだ完全には正しく設定されていませんが、正常に展開されています。たぶんこれもあなたを助け、メモを比較することができます。

ここで私は何をしなければなりませんでした。

まず、基礎作業。 GlassFishは、WARをデプロイする方法で私には少し奇妙です。私が理解しているように、WARファイルはノードエージェントのどこかで展開されていますが、展開された後はファイルをポックするためのアクセス権がありません。つまり、毎回再配備する必要のある設定ファイル(portal-ext.properties)を調整すると、Liferayは〜73MBとかなり大きくなります。これにより、PermGenの領域外の例外が定期的に発生し、クラスタを再起動する必要があります。したがって、glassfishのPermGenスペースのサイズを増やすためにJVMオプションを設定することをお勧めします。ここでの問題の良い説明があります:JVMオプションは、問題を解決することはできませんが、それはクラスタのリブートの間の遅延(GlassFishのコンソールがところで、再起動して動作しませんでしたが増加すること

http://www.freshblurbs.com/explaining-java-lang-outofmemoryerror-permgen-space

。我々はコマンドラインでそれをやらなければならなかった)。

次に、依存関係のJARファイルはどこにありますか?私たちは他のサービスを実行する共有クラスタで動作しているため、domains/domain1/libフォルダに入れることはできません。私たちは依存関係のJARファイルをWEB-INF/libのliferay warファイルに貼り付けました。これはうれしいようです。

次:portal-ext.propertiesはどこにファイルを上書きしますか?答えはWEB-INF/classesの生涯戦争ファイルに再び載っています。これは、前述のようにプロパティを変更するたびに再展開する必要がある理由もあります。

次へ:コンテキスト。デフォルトでは、liferayはルートコンテキスト "/"にデプロイを試みます。私たちは共有環境にあるので、WARをcontext/lr1にデプロイしました。 portal-ext.propertiesでは、

あるportal.ctx =/LR1

次のプロパティを設定する必要がありました:これは、クラスタ環境に埋め込まれHSQLを使用するようにあまり意味がありません。 GlassFishを使用してdatabse接続プールのJNDI名を設定します。 Liferayのドキュメンテーションガイドでこれを行う方法に関する指示があります。 portal-ext.propertiesファイルでは、我々は、我々はまた、上のLuceneインデックスを格納する必要はありません、その後

jdbc.default.jndi.name = JDBC/LiferayPool

を置くことができましたファイルシステム。 portal-extでこれらのプロパティをオーバーライドします。プロパティは、その問題を解決するためのファイル:

lucene.store.type = JDBC

lucene.store.jdbc.auto.clean.up =真

lucene.store.jdbc.dialect.oracle = org.apache.lucene.store.jdbc.dialect.OracleDialect

同様のロジックがJackRabbitリポジトリに適用されます。私は現在、(これが正しいかどうかはわからないが、ドキュメントライブラリが動作している)次のプロパティのセットアップを持っている:

jcr.jackrabbit.repository.root = WEB-INF /クラス/

私はjackrabbitのrepository.xmlファイルもWEB-INF/classesに入れなければなりませんでした。そのxmlファイルは、使用するデータベース接続パラメータをjackrabbitに伝えます(詳細については、ApacheのJackrabbit設定ページを参照してください)。繰り返しますが、私はWEB-INF/classesに入れるのは間違いありませんが、クラスタ内のすべてのノードが同じデータを共有するためには、おそらくWARファイルのどこかにあるか、共有ファイルシステム上にある必要があります。

私はのEHcacheでめちゃくちゃしていない、まだ、私は休止状態プロパティに入れた:私たちのOracle DBの

hibernate.dialect = org.hibernate.dialect.Oracle10gDialect

。私はJNDIデータベース接続を参照するために上記のデフォルトのJDBCプロパティを使用していると思います。

"Liferay Home Directory"という変数が "サーバーのホームの上の1つのフォルダ"であるという概念は、私がまだ苦労していることであり、/ optに関するHTTP要求が送信されるたびにエラーが発生しています/ ee/license。

liferayが実行されているユーザーには、/ optを変更する権限がありません。また、いずれの場合もクラスタ環境では悪い考えです。私が見たときに、私が見るすべては

liferay.home = $ {} resource.repositories.root

資源であるので、私は、設定がどこにあるかわからないんだけど.repositories.root = $ {default.liferay.home}

default.liferay.homeはまだ定義されていません。まだそれに取り組んでいます。

クラスタ化された環境にliferayを配備することは、残念ながらそれほど実証されていませんが、これを共有することが、ほんの少しの助けになることを願っています。

幸運を祈る!

+0

PropsUtilのソースを見ると、 SystemProperties.set( "default.liferay.home"、_getDefaultLiferayHome()); これは、アプリサーバーに基づいて居住地を検出します。これはすべてのアプリケーションサーバーで同様です:SystemProperties.get( "jetty.home")+ "/ .."; システムプロパティが設定されていない場合、null/..となります。 – Priit