具有多个服务器实例的Liferay

时间:2013-04-23 07:23:07

标签: liferay liferay-6 liferay-ide

我正在同时处理多个Liferay项目(不同的Portal,插件,用户和用户组等),并且经常需要在它们之间切换。此开关需要许多步骤,如

  • 编辑portal-ext.properties(更改Liferay数据库,编辑一些自定义项目特定属性),然后编辑'portal-setup-wizard.properties'
  • 从Eclipse Server实例添加/删除portlet主题和钩子,有时清理Tomcat的'数据''Webapps'和'work'文件夹
  • 转到Liferay的控制面板/服务器/插件安装并重新索引“用户和组织”或“文档和媒体”等portlet

所以,我认为使用新的tomcat和JRE为每个项目创建一个新的服务器实例是个不错的主意。当我不得不切换项目时,我可以停止旧服务器并启动另一个服务器。起初,我认为(实际上是建议)使用相同的Liferay插件SDK (6.1.0),应该没问题,只要服务器实例是相同的版本

实际上,这并非100%完美。虽然大部分工作都已完成,但是这里和那里存在一些问题,例如主题没有得到属性部署,钩子没有被应用等等。据我所知,有一些[Liferay SDK] - [Liferay Server]绑定,以及这意味着只有1个服务器(我创建的第一个)将完全工作。 例如,通过调查[Liferay SDK文件夹] / bild。[用户名] .properties,我可以看到一些引用特定服务器/ JRE位置的属性:

    app.server.portal.dir
app.server.lib.global.dir
app.server.deploy.dir
app.server.type
app.server.dir

所以,我的问题是,如何处理多个Liferay项目?

  1. 是多服务器实践,是处理多个项目的好方法吗?
  2. 如果是,我应该为每个服务器创建不同的SDK吗?也许是一个不同的Eclipse工作区?或者是否有某种方法可以使用相同的SDK
  3. 使用不同Liferay版本的服务器怎么样?

4 个答案:

答案 0 :(得分:3)

如果我们开始在公司开展新的Liferay项目,我们会设置:

  • 一个新的数据库架构,
  • 与该架构连接的新的,干净的Liferay服务器和
  • 一个全新的Eclipse工作区,带
  • 一个干净的SDK项目

只有这样,你才能确保完全独立的项目。要切换到另一个项目,只需关闭当前的Liferay服务器,启动新服务器并切换到Eclipse中的右侧工作区。这一切所需的时间不会超过2分钟,比共享工作区和服务器时必须执行的所有清理操作要少得多。

在我看来,这是大多数开发团队的方法。

答案 1 :(得分:3)

就个人而言,我使用自己的源,tomcat,数据库等设置每个项目,即使它意味着重复。这些天存储很便宜,这使得这成为可能。当然你的milage可能很多,但我想我会和你分享我的设置。

我有一个项目目录,其中包含我的所有项目:

/projects
    /foo-project
    /bar-project
    /my-project

我有一个项目

/my-project
    /tomcat
        /bin
        /conf
        ...
    /src
        /portal
            ... my portal source ...
        /plugins
            ... my plugin source ...
    /portal-ext.properties
  • 然后我设置tomcat使用不同的端口(8080,8081,8082等等),这样我就可以让它们全部运行,如果我不得不想要的话。
  • 我设置Liferay为每个Liferay实例使用不同的数据库。
  • 我将portal-ext.properties作为兄弟放在tomcat目录中,Liferay将读取此文件(假设默认行为)。这提供了快速简便的编辑,并可以确定如何设置每个项目。

优点应该是明确的。你可以从一个项目“走开”到另一个项目,而不必拆除和设置。当你返回时,一切都会像你离开时一样。如果您想回答有关您尚未处理的项目的问题,上下文切换也会更快更有帮助。

根据每个项目的复杂程度,多实例可能不适合您。钩子和EXT可能会相互冲突,看起来好像你的项目就是这种情况。

如果你能负担得起的空间(这并不多),这是我作为Liferay开发人员找到的最快的方式。

答案 2 :(得分:3)

为什么要在一台计算机上搞乱所有这些并发症?我使用Oracle VirtualBox并为每个项目设置一个单独的VM。即使我在笔记本电脑上工作,它也有8个内核,我的内存高达16GB,并为每台机器设置了4GB内存。

我可以同时运行多个虚拟机,并将所有活动项目设置为Chrome中的主页。使用桥接网络,每个VM都有自己的IP地址,并且它们都在8080上监听。

另一个好处是,尽管我的主要项目是使用Eclipse Indigo和LR 6.1 CE GA1开发的,但我还有另一个使用Eclipse Juno,它的特定IDE插件和LR 6.1.1 CE GA2。所以它也可以作为一个新版本的测试人员。

VirtualBox是免费的。记忆很便宜。请记住,您可以在不关闭VM的情况下让VM进入睡眠状态。这需要大约10-20秒,然后再次唤醒需要30-60秒。

答案 3 :(得分:1)

最简单的解决方案是:

创建3个不同的用户,Liferay SDK的bundle.properties文件对每个用户是独立的。因此,假设您想要使用相同的sdk运行3台服务器。创建3个文件,如

bundle.user1.properties bundle.user2.properties bundle.user3.properties

现在,当你想为服务器1部署一些东西时,使用user1登录服务器并尝试部署portlet,这将读取bundle.user1.properties,它将把portlet / hook部署到指定的位置。 / p>

希望这能解决您的部署问题。

此外,当你有3个用户时,你可以在不同的用户帐户中一起运行3个不同的服务器,这样,它们就是安全的,除了管理员,没有人可以关闭它。

希望这有帮助!