我知道Mule ESB Enterprise Edition可以安装在Raspberry Pi上,因为它支持基于ARM的处理器。不幸的是,社区版没有它。这使得在 pi 上使用 Mule ESB 变得困难,因为我没有企业许可证(它适用于个人项目,企业试用期在 30 天内结束)。我想知道,为什么社区版没有这种支持?在 pi 上使用社区版有什么限制吗?是否可以将支持添加到社区版?有没有人做过并使用它?
是的,可以在Raspberry PI 3(以及任何armhf/armel机器)上安装和运行Mule。您必须调整安装以确保Mule使用Linux armhf 32位Java服务包装器(或相关的操作系统/体系结构包装器)。详细步骤:
安装骡子 CE
像在任何其他计算机上一样安装 Mule Independent:
- 下载 Mule CE 运行时
- 将内容解压缩到某处,例如在
/opt/mule
(即MULE_HOME=/opt/mule
),并将内容的所有者更改为 Mule 用户(例如mule:mule
) - (可选)执行一些强化
您应该能够使用$MULE_HOME/bin/mule start|stop|restart
运行 Mule
配置 Java 服务包装器
您需要手动为您的操作系统和处理器架构添加 Java Service Wrapper 支持,对于 Raspberry PI 3,它将是 Linux armhf 32 位。
- 下载Linux armhf 32-bitCommunity Tanuki Java Service Wrapper 并解压缩
- 将 Wrapper lib/libwrapper.so 复制到$MULE_HOME/lib/boot/libwrapper-linux-armhf-32.so,确保它具有读取 + 执行权限并且是 Mule 用户拥有的 将 Wrapper lib/wrapper.jar
- 复制到$MULE_HOME/lib/boot/wrapper-{version}.jar(将 {version} 替换为您的包装器版本),确保它是 Mule 用户拥有的,并删除或备份以前的包装器-{oldVersion}.jar
- 将包装箱/包装器复制到$MULE_HOME/lib/boot/exec/wrapper-linux-armhf-32,确保它具有读取+执行权限并且是 Mule 用户拥有的
这个有点棘手,你必须更新$MULE_HOME/bin/mule启动脚本。查找
case "$PROC_ARCH" in
行,如:'x86_64') DIST_ARCH="x86" DIST_BITS="64" break;;
每个案例都匹配特定的硬件名称来定义DIST_ARCH和DIST_BITS变量,从而允许使用正确的包装器文件。添加一个新案例来处理您的树莓派硬件。对于Raspberry 3,它应该是类似于armv71
(如果需要,请与uname -m
核实):'armv71') DIST_ARCH="armhf" DIST_BITS="32" break;;
您可能需要更新
$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 - 检查日志中是否有启动时出现任何错误。
此方法已在 Mule CE 3.7 和 3.8 的 Raspberry PI 2 和 3 中进行了测试(它应该适用于以前的版本)。这可能有点棘手,如果您有任何问题发表评论,我将更新这篇文章以添加详细信息。
顺便说一下,此方法可用于添加对任何体系结构和操作系统的支持,只要 Java Service Wrapper 支持它。
我想知道,为什么社区版没有这种支持?
我不知道,Mule CE根本不支持ARM架构 - 目前。CE 仅支持有限的平台和体系结构列表(即启动脚本过滤体系结构类型)。也许他们只是没有花时间(~金钱)来添加支持,或者他们故意阻止ARM支持以支持Mule EE。考虑到 Mule CE 是开源的,理论上有人可以贡献来添加这样的支持......(只是说! :)