【问题标题】:Has anyone installed Mule ESB community version on Raspberry Pi 3?有人在树莓派 3 上安装过 Mule ESB 社区版吗?
【发布时间】:2019-01-02 08:58:38
【问题描述】:

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

【问题讨论】:

    标签: mule raspberry-pi3


    【解决方案1】:

    是的,可以在 Raspberry PI 3(以及任何 armhf/armel 机器)上安装和运行 Mule。您必须调整您的安装以确保 Mule 使用 Linux armhf 32 位 Java 服务包装器(或相关的操作系统/架构包装器)。详细步骤:

    安装 Mule CE

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

    1. 下载Mule CE Runtime
    2. 在某处解压内容,例如/opt/mule(即MULE_HOME=/opt/mule)并将内容的所有者更改为Mule用户(例如mule:mule
    3. (可选)perform some hardening

    你应该可以使用$MULE_HOME/bin/mule start|stop|restart运行Mule

    配置 Java 服务包装器

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

    1. 下载Linux armhf 32-bit Community Tanuki Java Service Wrapper并解压
    2. 将 Wrapper lib/libwrapper.so 复制到 $MULE_HOME/lib/boot/libwrapper-linux-armhf-32.so,确保它具有读取+执行权限并且是 Mule 用户拥有的
    3. 将 Wrapper lib/wrapper.jar 复制到 $MULE_HOME/lib/boot/wrapper-{version}.jar(将 {version} 替换为您的 Wrapper 版本) , 确保它是 Mule 用户拥有的并删除或备份以前的包装器-{oldVersion}.jar
    4. 将 Wrapper 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

    当 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 是开源的,理论上有人可以为添加此类支持做出贡献......(只是说!:)

    【讨论】:

    • 感谢@Pierre-B 的描述性回答。我想我已经完成了所有步骤,除了为 pi 使用 armhf 特定的 java 服务包装器。我在 EE 中看到了一个包装器,但不确定它是否可以使用。我将获得 Java Service Wrapper 并尽快尝试一下。我会在这里更新结果。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2019-12-04
    相关资源
    最近更新 更多