具有多个服务器实例的Liferay

yan*_*Lar 7 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)应该没问题,只要Server实例是相同的版本.

实际上,这并非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
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,我应该怎样做才能使用多个Liferay项目?

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

rp.*_*rp. 4

就我个人而言,我为每个项目设置了自己的源、tomcat、数据库等,即使这意味着重复。如今,存储成本低廉,使得这成为可能。当然,您的里程可能会很长,但我想我会与您分享我的设置。

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

/projects
    /foo-project
    /bar-project
    /my-project
Run Code Online (Sandbox Code Playgroud)

在我的一个项目中

/my-project
    /tomcat
        /bin
        /conf
        ...
    /src
        /portal
            ... my portal source ...
        /plugins
            ... my plugin source ...
    /portal-ext.properties
Run Code Online (Sandbox Code Playgroud)
  • 然后,我将 tomcat 设置为使用不同的端口(8080、8081、8082 等),这样如果我必须或想要的话,我可以让它们全部运行。
  • 我将 Liferay 设置为每个 Liferay 实例使用不同的数据库。
  • 我将其portal-ext.properties作为同级文件放置到 tomcat 目录中,Liferay 将读取该文件(假设默认行为)。这提供了快速、简单的编辑以及弄清楚您如何设置每个项目。

优点应该很明显。您可以“离开”一个项目并进入另一个项目,而无需拆除和安装。当你回来时,一切都还是你离开时的样子。如果您想回答有关您尚未处理的项目的问题,上下文切换也会更快且更有帮助。

根据每个项目的复杂性,多实例可能不适合您。挂钩和 EXT 可能会相互冲突,而且您的项目似乎已经出现这种情况。

如果你能负担得起空间(空间不大),这是我作为 Liferay 开发人员发现的最快方法。

  • 作为额外的好处,如果您将属性设置为相对链接,您只需复制该文件夹并拥有一个新项目 (2认同)