有人在Raspberry Pi 3上安装了Mule ESB社区版吗?

时间:2017-07-15 19:44:52

标签: mule raspberry-pi3

我知道Mule ESB企业版可以安装在Raspberry Pi上,因为它支持基于arm的处理器。不幸的是,社区版没有它。这使得很难在pi上使用Mule ESB更长时间,因为我没有企业许可证(这是个人项目和企业试用在30天内结束)。我想知道,为什么社区版没有这种支持?在pi上使用社区版是否有任何限制?可以将支持添加到社区版本中吗?有人做过并使用它吗?

1 个答案:

答案 0 :(得分:1)

是的,可以在Raspberry PI 3上安装和运行Mule(以及扩展任何armhf / armel机器)。您必须调整安装以确保Mule使用 Linux armhf 32位 Java Service Wrapper(或相关的OS /架构包装器)。具体步骤如下:

安装Mule CE

像在任何其他计算机上一样安装Mule Standalone:

  1. 下载Mule CE Runtime
  2. 将内容解压缩到某个位置,例如/opt/mule(即MULE_HOME=/opt/mule)并将内容的所有者更改为Mule用户(例如mule:mule
  3. (可选)perform some hardening
  4. 您应该可以使用$MULE_HOME/bin/mule start|stop|restart

    运行Mule

    配置Java Service Wrapper

    您需要为您的操作系统和处理器架构手动添加Java Service Wrapper支持,对于Raspberry PI 3,它将是Linux armhf 32位。

    1. 下载Linux armhf 32-bit Community Tanuki Java Service Wrapper并解压缩
    2. 将包装器 lib / libwrapper.so 复制到 $ MULE_HOME / lib / boot / libwrapper-linux-armhf-32.so ,确保它具有读取+执行权限并且是Mule用户拥有的
    3. 将包装器 lib / wrapper.jar 复制到 $ MULE_HOME / lib / boot / wrapper- {version} .jar (用您的Wrapper版本替换{version}) ,确保它的Mule用户拥有并删除或备份以前的包装器 - {oldVersion} .jar
    4. 将包装器 bin / wrapper 复制到 $ MULE_HOME / lib / boot / exec / wrapper-linux-armhf-32 ,确保它具有读取+执行权限并且是骡子用户拥有
    5. 这个有点棘手,您必须更新 $ MULE_HOME / bin / mule 启动脚本。查找行case "$PROC_ARCH" in,例如:

      'x86_64') DIST_ARCH="x86" DIST_BITS="64" break;; 每个案例都匹配一个特定的硬件名称来定义DIST_ARCH和DIST_BITS变量,允许使用正确的Wrapper文件。添加一个新案例来处理您的Raspberry PI硬件。对于Raspberry 3,它应该类似于armv71(如果需要,请查看uname -m):

      'armv71') DIST_ARCH="armhf" DIST_BITS="32" break;;

    6. 您可能需要更新$MULE_HOME/conf/wrapper.conf以避免与内存相关的问题。我通常需要使用以下属性:

      wrapper.java.initmemory=512 wrapper.java.maxmemory=512 wrapper.java.additional.X=-XX:PermSize=256m wrapper.java.additional.Y=-XX:MaxPermSize=256m wrapper.java.additional.Z=-XX:NewSize=512m wrapper.java.additional.V=-XX:MaxNewSize=512m

    7. 当Mule在armv71硬件上运行时,它现在将使用wrapper-{OS}-{DIST_ARCH}-{DIST_BITS},在我们的案例wrapper-linux-armhf-32中。您应该能够像往常一样运行Mule - 检查日志以查找启动时的任何错误。

      此方法已经过Raspberry PI 2和3测试,用于Mule CE 3.7和3.8(它应该适用于以前的版本)。这可能有点棘手,如果您发表评论时有任何问题,我会更新此帖子以添加详细信息。

      顺便说一句,只要Java Service Wrapper支持,此方法就可用于添加对任何体系结构和操作系统的支持。

        

      我想知道,为什么社区版没有这种支持?

      我不知道,Mule CE现在根本不支持ARM架构。 CE仅支持有限的平台和体系结构列表(即启动脚本过滤体系结构类型)。也许他们根本没有花时间(〜金钱)来增加支持,或者他们故意阻止ARM支持以支持Mule EE。考虑到Mule CE是开源的,理论上有人可以为添加这样的支持做出贡献......(只是说!:)