2

您知道有关在 Glassfish 中安装 Liferay 集群的分步教程吗?

4

3 回答 3

6

谷歌为我找到了这篇名为how-to-install-and-configure-a-liferay-cluster 的文章

享受!

于 2009-05-28T13:27:54.760 回答
5

我正在解决同样的问题,或者非常相似的问题——将 Liferay WAR 文件部署到具有两个节点的 glassfish 集群。我还没有完全正确地配置它,但我确实成功部署了它。也许这也会对您有所帮助,我们可以比较笔记。

这是我必须做的。

第一,基础。GlassFish 部署 WAR 的方式对我来说有点奇怪。据我了解,WAR 文件是由节点代理在某处爆炸的,但是一旦它们被部署,您就无法访问这些文件。这意味着当您调整配置文件(portal-ext.properties)时,您每次都需要重新部署——Liferay 相当大,约为 73MB。这将定期导致 PermGen 空间不足异常,并要求您重新启动集群。因此,明智的做法是设置 JVM 选项以增加 glassfish 中 PermGen 空间的大小。这里有一个很好的问题解释:

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

该 JVM 选项不会解决问题,但会增加集群重新启动之间的延迟(glassfish 控制台无法重新启动,顺便说一句;我们必须通过命令行来完成)。

下一个问题是:依赖 JAR 文件在哪里?我们在运行其他服务的共享集群中运行,因此将其放在 domain/domain1/lib 文件夹中是行不通的。我们将依赖项 JAR 文件放在 liferay war 文件中,在 WEB-INF/lib 中,它似乎对此很满意。

下一篇:portal-ext.properties 覆盖文件到哪里去了?答案再次在 WEB-INF/classes 中的 liferay 战争文件中。这也是我们每次修改属性时都需要重新部署的一个重要原因,如上所述。

下一个:上下文。默认情况下,liferay 尝试部署到根上下文“/”。我们处于共享环境中,因此我们将 WAR 部署到上下文 /lr1。在 portal-ext.properties 我们必须设置属性

门户网站.ctx=/lr1

下一篇:在集群环境中使用嵌入式HSQL没有多大意义;我们使用 GlassFish 为我们的数据库连接池设置了一个 JNDI 名称。Liferay 文档指南中有关于如何执行此操作的说明。在 portal-ext.properties 文件中,我们可以将

jdbc.default.jndi.name=jdbc/LiferayPool

我们也不想在文件系统上存储 Lucene 索引。我们在 portal-ext.properties 文件中覆盖了这些属性来解决这个问题:

lucene.store.type=jdbc

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

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

类似的逻辑适用于 JackRabbit 存储库;我目前有以下属性设置(我不知道这是否正确,但文档库正在工作):

jcr.jackrabbit.repository.root=WEB-INF/classes/

我也必须将 jackrabbit 的 repository.xml 文件放入 WEB-INF/classes 中。该 xml 文件告诉 jackrabbit 使用哪些数据库连接参数(有关更多详细信息,请参阅 Apache 的 Jackrabbit 配置页面)。同样,我不确定将它放在 WEB-INF/classes 中是否正确,但它可能必须放在 WAR 文件中的某个位置,或者位于某个共享文件系统上,以便集群中的所有节点共享相同的数据.

我还没有弄乱 EHcache,但我确实放入了 hibernate 属性:

hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

对于我们的 oracle 数据库。我相信它使用上面的默认 JDBC 属性来引用我们的 JNDI 数据库连接。

“Liferay 主目录”变量是“服务器主目录上方的一个文件夹”的概念是我仍在努力解决的问题,它导致我每次发送与 /opt/ee/license 相关的 HTTP 请求时都会出错.

liferay 运行的用户没有修改/opt 的权限,在任何情况下,这在集群环境中都是一个坏主意。我不确定设置在哪里,因为当我查看时,我看到的只是

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

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

我还不知道 default.liferay.home 是在哪里定义的;仍在努力。

不幸的是,将 liferay 部署到集群环境还没有很好的文档记录,但我希望分享这些对您有所帮助。

祝你好运!

于 2009-09-25T17:14:10.247 回答
2

Liferay 是一个与服务器无关的 Spring / Hibernate 应用程序,您的大部分集群配置应该是您的门户(-ext).properties 文件的集群部分:Hibernate、EHCache 和 JGroup 配置。唯一的应用服务器特定配置应该是会话故障转移,就像在部署的任何 Web 应用中一样。

于 2009-05-28T13:19:14.200 回答