Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个服务器实例的Liferay_Liferay_Liferay 6_Liferay Ide - Fatal编程技术网

具有多个服务器实例的Liferay

具有多个服务器实例的Liferay,liferay,liferay-6,liferay-ide,Liferay,Liferay 6,Liferay Ide,我同时处理多个Liferay项目(不同的门户、插件、用户和用户组等),经常需要在它们之间切换。这个开关需要很多步骤,比如 编辑portal-ext.properties(更改Liferay数据库,编辑某些自定义项目特定属性),并编辑“门户设置向导.属性” 从Eclipse服务器实例添加/删除portlet主题和挂钩,有时清理Tomcat的“数据”“Webapps”和“工作”文件夹 转到Liferay的控制面板/服务器/插件安装并重新索引Portlet,如“用户和组织”或“文档和媒体” 因此,

我同时处理多个Liferay项目(不同的门户、插件、用户和用户组等),经常需要在它们之间切换。这个开关需要很多步骤,比如

  • 编辑portal-ext.properties(更改Liferay数据库,编辑某些自定义项目特定属性),并编辑“门户设置向导.属性”
  • 从Eclipse服务器实例添加/删除portlet主题和挂钩,有时清理Tomcat的“数据”“Webapps”和“工作”文件夹
  • 转到Liferay的控制面板/服务器/插件安装并重新索引Portlet,如“用户和组织”或“文档和媒体”
因此,我认为使用新的tomcat和JRE为每个项目创建一个新的服务器实例是一个好主意。当我不得不切换项目时,我可以停止旧的服务器并启动另一个。起初,我认为(实际上有人建议)只要服务器实例的版本相同,使用相同的Liferay插件SDK(6.1.0)就可以了

实际上,这并不是100%完美地工作。虽然大部分工作正在完成,但仍存在一些问题,如主题未正确部署、未应用挂钩等。据我所知,存在一些[Liferay SDK]-[Liferay Server]绑定,这意味着只有一台服务器(我创建的第一台)可以完全工作。 例如,通过调查[Liferay SDK文件夹]/bild.[user name].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服务器

  • 如果我们开始在公司中从事新的Liferay项目,我们将设置:

    • 一个新的数据库模式
    • 新的、干净的Liferay服务器与该架构连接,并且
    • 全新的Eclipse工作区,具有
    • 干净的SDK项目
    只有这样,您才能确保拥有完全独立的项目。要切换到另一个项目,只需关闭当前的Liferay服务器,启动新的Liferay服务器,然后在Eclipse中切换到正确的工作区。这一切只需不超过2分钟,比共享工作区和服务器时必须执行的所有清理操作要少得多


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

    就我个人而言,我用自己的源、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开发人员找到的最快的方法。

    最简单的解决方案是:

    创建3个不同的用户,Liferay SDK的
    捆绑包。每个用户的属性都是独立的。因此,假设您想使用相同的sdk运行3台服务器。创建3个文件,如

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

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

    希望这将解决您的部署问题

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


    希望这有帮助

    为什么要在一台计算机上处理所有这些复杂问题?我使用Oracle VirtualBox并为每个项目设置单独的VM。尽管我在笔记本电脑上工作,但它有8个内核,我已经将内存提升到16GB,并为每台机器设置了4GB的RAM

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

    另一个好处是,尽管我的主要项目是使用EclipseIndigo和LR6.1CEGA1开发的,但我还有另一个项目是使用EclipseJuno、其特定的IDE插件和LR6.1.1CEGA2开发的。因此,它也可以作为一个新的版本测试


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

    老实说,我不希望得到不同Eclipse工作区的解决方案,但如果切换项目只需要2分钟,