具有多个服务器实例的Liferay

我正在同一时间与多个Liferay项目(不同的门户,插件,用户和用户组等)合作,并且经常需要在它们之间切换。 这个开关需要很多步骤

  • 编辑portal-ext.properties(更改Liferay数据库,并编辑一些自定义项目特定的属性),并编辑“portal-setup-wizard.properties”
  • 从Eclipse服务器实例中添加/删除Portlet主题和钩子,有时清理Tomcat的'data''Webapps'和'work'文件夹
  • 去Liferay的控制面板/服务器/插件安装和重新索引portlets像'用户和组织'或'文件和媒体'
  • 所以,我认为为每个项目创建一个新的服务器实例,使用新的tomcat和JRE,将是一个不错的主意。 当我不得不切换项目时,我可以停止旧服务器并启动另一个服务器。 起初,我认为(事实上被告知)使用相同的Liferay Plugins SDK (6.1.0)应该没问题,只要服务器实例的版本相同即可

    实际上,这完全不起作用。 尽管大部分工作都已经完成,但这里和那里存在一些问题,比如一个没有被部署的主题,挂钩不适用等等。据我所知,有一些[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项目?

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

  • 就我个人而言,我使用自己的源代码,tomcat,数据库等来设置每个项目,即使它意味着重复。 这些天存储是便宜的,并使这成为可能。 当然你的米劳很可能会,但我想我会与你分享我的设置。

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

    /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开发者找到的最快速的方式。


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

  • 一个新的数据库模式,
  • 一个新的,干净的Liferay服务器连接到该模式和
  • 一个新的Eclipse工作区,与
  • 一个干净的SDK项目
  • 只有这样,你一定有干净独立的项目。 要切换到另一个项目,只需关闭当前的Liferay服务器,启动新的服务器并在Eclipse中切换到正确的工作区。 这一切只花费2分钟时间,比分享工作区和服务器时所做的所有清理操作少得多。

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


    为什么要在一台计算机上处​​理所有这些复杂问题? 我使用Oracle VirtualBox并为每个项目设置一个单独的VM。 尽管我在笔记本电脑上工作,但它拥有8个内核,而且我的内存高达16GB,每台计算机都配有4GB的RAM。

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

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

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

    链接地址: http://www.djcxy.com/p/60153.html

    上一篇: Liferay With Multiple Server Instances

    下一篇: Liferay: Customise the web.xml HeaderFilter added during portlet deployment