如何 运行 在线 openshift 上的 mosquitto mqtt 代理

How to run mosquitto mqtt broker on openshift online

有没有人成功运行mosquitto on the openshift online version in a free account

有两个 SO 问题相关但并没有真正解决所有问题:

到目前为止已经完成的事情:

从这里将 mosquitto 放到 openshift 上的 运行 的具体步骤是什么?

我终于让它在 openshift 上工作了,尽管配置最简单。以下是关键步骤:

  • 使用 openshift DIY 插件获取 websocket 支持,它公开外部端口 8000 并路由到 [=13] 指定的虚拟 IP 地址上的内部端口 8080 =].
  • config.mk 中关闭以下所有功能编译 mosquitto 只是为了避免将大量软件包安装到 openshift:WITH_TLSWITH_TLS_PSKWITH_THREADINGWITH_BRIDGEWITH_SRVWITH_UUIDWITH_DOCSWITH_SOCKS
  • 修改mosquitto的Makefile注释掉从DOCSDIR安装的命令。这似乎是 mosquitto 中的一个小错误,因为如果 WITH_DOCS 被关闭,它不应该尝试从 DOCSDIR 安装。
  • config.mk 中开启 WITH_WEBSOCKETS
  • 修改文件src/webockets.c。在函数mosq_websockets_init()中,大约在第625行,在info.user = user;行下方添加一行info.iface = listener->host;。这是为了让 mosquitto 能够绑定到 openshift DIY 设备中的虚拟 IP 地址。默认情况下,mosquitto 只允许您绑定到任何 IP 地址的 0.0.0.0。这似乎是 mosquitto 和 libwebosockets 之间的脱节。
  • 安装 libwebsocketslibwebsockets-devel 包。
  • 运行 make 构建蚊子。
  • 假设您要将 mosquitto 安装到 ../mosrun 目录。创建目录。 运行make prefix= DESTDIR=$(pwd)/../mosrun install
  • 删除 ../mosrun 下除 sbin 之外的所有文件夹。 cd ../mosrun/sbincp /usr/lib/libwebsockets.so.7 .。调整库存 libwebsockets 库的源路径。
  • https://github.com/jpmens/simple-mqtt-websocket-example 中获取所有文件。将它们放入您的 mosrun/sbin/simpleweb 目录。
  • 修改 mosrun/sbin/simpleweb/config.js 以使用您的 openshift DIY 域名和端口 8000。这是 javascript 从浏览器连接到您的 DIY 服务器的地方。
  • 创建一个包含四行的 mosquitto 配置文件 mosrun/sbin/mosquitto.conflistener 8080 <OPENSHIFT_DIY_IP>protocol websocketshttp_dir simplewebconnection_messages。使用您实际的 DIY 虚拟 IP 地址代替 <OPENSHIFT_DIY_OP>
  • 将整棵树复制到您的 openshift DIY 装备中。
  • 使用浏览器从浏览器浏览到您的 DIY 域,这样您就会看到默认的服务器页面。
  • 修改 openshift .openshift/action_hooks/start.../stop 脚本以注释掉现有命令。推送到 openshift。现在您应该无法连接到默认服务器,但齿轮是 运行。
  • 进入您的 mosquitto mosrun/sbin 目录。
  • 运行 LD_LIBRARY_PATH=. ./mosquitto -c mosquitto.conf -v 启动 mosquitto。
  • 浏览到您的diy-yourdomain.rhcloud.com:8000/index.html。您将看到从 jpmen 的 github 存储库复制的 mqtt websockets 测试页面。

下一步是将树移到 DIY git 树中。修改启动和停止挂钩以启动和停止您的 mosquitto 而不是默认服务器。以及 openshift 齿轮上的脚本 运行,用于从实际的 openshift 环境变量创建 config.jsmosquitto.conf

两个帖子非常有助于指导您完成构建 mosquitto 的步骤:the blog by jpman, and the blog by Jeremy Gooch

以防其他人遇到这个post;我在 OpenShift v3.11 上有一个非 websocket Mosquitto 运行:https://github.com/john2exonets/OpenShift-MQTT-Mosquitto