1.Linux搭建MQTT服务器(mosquitto)并使用
2.如何搭建自己的码配MQTT低成本服务器(Ubuntu)
3.用mosquitto+paho+protobuf实现mqtt的示例代码
4.如何为 Mosquitto MQTT 代理启用 WebSocket?
5.海豚MQTT-Mosquitto(1)
6.Linux 配置Mosquitto(MQTT)
Linux搭建MQTT服务器(mosquitto)并使用
### MQTT与Linux环境搭建
MQTT(消息队列遥测传输)是ISO标准下基于发布/订阅范式的消息协议,适用于硬件性能受限、码配网络状况不佳的码配远程设备。它在TCP/IP协议族上运行,码配适用于物联网(IoT)场景,码配如传感器通信、码配图说hadoop源码医疗设备、码配智能家居等。码配
**Linux上MQTT环境搭建
**为了在Linux系统中部署MQTT服务器,码配以CentOS7为例,码配遵循以下步骤搭建环境。码配
**1. 安装必备软件
**确保系统具备基础软件包,码配为后续操作做准备。码配
**2. 下载Mosquitto
**选择稳定版本1.6.8,码配避免因新版本的码配兼容性问题导致的依赖缺失。从官方网站mosquitto.org下载,或通过wget命令直接下载并传输至服务器。
**3. 解压、编译与安装
**解压下载的包,执行编译与安装命令。遇到libmosquitto.so.1找不到的问题时,通过修改链接路径,确保动态链接库的可用性。
**4. 创建配置文件
**替换默认example配置文件,根据需求调整端口、密码文件位置、监听端口、绑定网卡及日志记录等参数。
**5. 创建用户组与用户
**创建mosquitto用户组与用户,源码管理系统确保程序运行权限正确。如不需特定用户,考虑修改配置文件以适应环境。
**6. 启动、查看与关闭程序
**启动mosquitto服务,使用命令行工具检查进程状态与执行关闭操作。默认后台运行,通过ps命令查看后台进程。
**7. 本地测试
**使用订阅者与发布者工具,设置相同topic进行消息交换。发布者发送内容至订阅者,验证消息传递。
**8. 修改默认配置
****1. 关闭匿名用户登录
**在mosquitto.conf中修改allow_anonymous节点,设置为false,禁用匿名登录功能。
**2. 设置用户密码文件路径
**在配置文件中指定password_file节点,配置用户密码文件路径,确保密码存储安全。
**3. 创建自定义用户
**通过命令行创建用户,并设置密码。注意用户信息存储于指定路径的配置文件中,密码已加密。
**4. 重启mosquitto服务
**完成配置修改后,重启mosquitto服务,确保新配置生效。
**Python实现订阅与发布
**在Python环境中,使用MQTT库实现订阅者与发布者功能。启动订阅者并连接至MQTT服务器,报名接龙 源码验证连接状态。通过发布者发送消息至指定topic,订阅者接收并显示消息内容。
如何搭建自己的MQTT低成本服务器(Ubuntu)
搭建自己的低成本MQTT服务器(Ubuntu)的关键步骤如下: 首先,确保安装Mosquitto。在Ubuntu上,执行以下操作:安装mosquitto服务:使用`sudo apt-get install mosquitto`
安装mosquitto-client:`sudo apt-get install mosquitto-clients`
检查服务是否正常:在三个终端中分别运行命令以测试连接和通信,如监听端口,订阅和发布消息。
接着,配置MQTT服务以提高安全性并允许公网访问:关闭认证:编辑mosquitto配置文件(通常是`/etc/mosquitto/mosquitto.conf`),去掉认证相关设置,尽管这可能带来潜在风险。
允许所有端口访问:在配置文件中添加`listener `,以确保frp能正常工作。
重启服务:关闭所有终端,然后通过`sudo systemctl restart mosquitto`重启mosquitto。
为使公网能够访问,利用frp(Forwarded Rules Proxy)进行内网穿透:创建frp隧道,参考相关教程,记得将frp监听端口改为。
设置frp和mosquitto为开机自启动,参考文章《Ubuntu设置脚本开机自启动》进行配置。
获取服务器的公网IP和端口,用于测试。
最后,使用MQTT测试软件连接到你的公网IP和端口,验证服务器之间的源码定点小数通信是否畅通无阻。用mosquitto+paho+protobuf实现mqtt的示例代码
mqtt通信示例代码利用mosquitto+paho+protobuf实现。mosquitto是一款轻量级的mqtt服务器实现,适用于多种环境。示例代码中,服务器搭建在阿里云服务器上,使用mosquitto和mosquitto-clients工具,安装命令为:
sudo apt install mosquitto mosquitto-clients
验证服务是否启动,如未启动,使用命令
sudo systemctl start mosquitto
启动服务。实现客户端与服务器间的通信时,使用
mosquitto_sub -h localhost -p -t "demo/1"
进行订阅,和
mosquitto_pub -h localhost -p -t "demo/1" -m "test"
进行发布。在topic配置中,使用"/"进行划分,支持单层通配符("+")和多层通配符("#")来匹配特定主题。
服务器配置在/etc/mosquitto/mosquitto.conf文件下,或在/etc/mosquitto/conf.d/目录下的port.conf文件中,可以自定义监听端口。配置密码文件使用命令
sudo mosquitto_passwd -c /etc/mosquitto/passwd username
,允许匿名访问可通过修改配置文件来实现。
对于c++部分,使用mosquitto库与protobuf结合,完成消息订阅与发布。代码示例在GitHub上提供,包含在proto目录下的proto文件、src目录下的pub_simple.cpp和sub_callback.cpp文件。在proto目录下生成消息定义,src目录下的set源码剖析文件执行发布与订阅操作。为了简化编译过程,提供了一个脚本,确保用户能够轻松获取所需库文件,无论是树莓派还是服务器上都能顺利运行。
paho库是多平台多语言的mqtt客户端库,支持多种编程语言,具备丰富的示例代码和文档,适合集成于其他语言的项目中。对于c/c++项目,使用mosquitto库已经足够高效,paho在某些特定场景下使用可能较为复杂,不如直接使用mosquitto库来得简便。
完整的c++mosquitto客户端使用protobuf进行消息发布和订阅的代码位于GitHub仓库中,提供了一个完整的示例环境,用户可直接运行,无需额外编译步骤,适配于多种开发环境。
如何为 Mosquitto MQTT 代理启用 WebSocket?
WebSocket是一种全双工通信协议,提供实时双向数据传输,对于集成Web应用与MQTT代理服务器尤其有用。Mosquitto作为一款广泛使用的开源MQTT代理,本文将指导您如何将其配置为支持WebSocket,以便通过Web浏览器与MQTT代理服务器进行通信。
启用WebSocket支持后,Web应用可通过JavaScript直接与MQTT代理服务器通信,无需额外客户端库,实现更便捷的实时数据交换。以下是为Mosquitto MQTT代理启用WebSocket的步骤:1. 首先,确保在服务器上安装并配置了Mosquitto MQTT代理。在Ubuntu上,使用以下命令进行安装:
安装完成后,Mosquitto将自动启动并监听默认MQTT端口()。
2. 要启用WebSocket支持,请编辑Mosquitto的配置文件,如Ubuntu上的配置文件位于 /etc/mosquitto/mosquitto.conf。添加以下配置以在端口启用WebSocket服务:
保存配置后,重启Mosquitto服务以使更改生效,具体命令如下:
至此,Mosquitto MQTT代理已配置为支持WebSocket,并在端口监听WebSocket连接。
3. 测试WebSocket连接时,可以使用Web浏览器来验证配置是否生效。通过JavaScript和MQTT over WebSocket库(例如Paho MQTT库)创建WebSocket连接,并与MQTT代理进行通信。以下是一个使用JavaScript实现的简单示例代码:
在代码中,创建了一个名为mqttClient的Paho MQTT客户端对象,通过指定代理服务器地址(mqtt.example.com)和WebSocket连接端口()建立WebSocket连接。设置连接选项,包括超时时间、是否使用SSL,并定义连接成功和失败的回调函数。在连接成功后,可以订阅主题,并在接收到消息时处理消息。最后,通过调用connect方法建立WebSocket连接并连接到MQTT代理。
通过以上步骤,已成功启用Mosquitto MQTT代理的WebSocket支持,并实现Web浏览器与MQTT代理之间的通信。WebSocket为集成MQTT协议与Web技术提供了灵活便捷的方式,尤其适用于物联网应用开发。启用WebSocket支持后,Web开发人员可更方便地构建实时数据交换功能,提升物联网应用的响应速度与用户体验。
海豚MQTT-Mosquitto(1)
在决定使用MQTT协议后,搭建MQTT服务器的首要任务是选择MQTT Broker。虽然云平台提供了付费服务,但个人项目成本较高,因此个人用户可能会选择自建服务器,如之前双十一购买的低配服务器,非常适合实验用途。
在选择后台方案时,市场上MQTT Broker选项众多。早期,我曾参考过一些资料,那时Mosquitto因其轻量级和C语言实现的优点,是我的首选。然而,鉴于其更新不频繁且扩展功能有限,上一次搭建过程中遇到不少困难,这次我决定寻找更为现代化的解决方案,尽管它曾是我的起点。
安装和运行Mosquitto在Centos服务器上相对简单,只需要几个命令即可。为了保证安全性,我关闭了默认的匿名访问,通过创建adam用户并存储在/etc/mosquitto/clipasswd文件中,并设置了用户密码登录。接着,我修改了mosquitto.conf文件,强制客户端使用用户名和密码进行认证,并重启了服务。
接下来,我开始转向SSL加密,需要生成自签名的证书。通过一系列命令,我生成了cacert.pem, server.crt, 和server.key文件。然后,我修改了mosquitto.conf,将非加密端口绑定到本地,添加了SSL相关配置,并重启了服务。测试连接时,确保使用正确的域名和证书文件。
然而,仅此还不够,我需要对访问权限进行控制。这超出了Mosquitto的基本功能,需要借助第三方插件mosquitto-auth-plug来实现。但该插件已停止维护,且与我使用的mosquitto-1.6.版本存在兼容性问题。我下载了对应版本的源码和openssl,进行了编译,并对auth-plug.c文件进行了必要的修改。接着,我将mosquitto的动态库调整到正确位置,并在Makefile中添加了链接参数。
在配置mosquitto时,我删除了之前用到的密码文件,转而依赖数据库管理。我创建了数据库表,定义了新的权限规则,并利用mosquitto的np工具生成用户密码,将其写入数据库。至此,通过MySQL控制用户登录和权限的Mosquitto配置已完成。
最后,为了测试MQTT服务器的性能,我附带了一个压测工具。通过以上步骤,一个安全且可扩展的MQTT服务器已经搭建完毕,满足了对用户访问权限的控制需求。
Linux 配置Mosquitto(MQTT)
在配置Linux下的Mosquitto(MQTT)时,首先需要确保安装了所有必需的依赖。这包括使用cJSON库,它用于解析和生成JSON格式的数据。安装此库后,接着安装Mosquitto软件包。
为了确保Mosquitto服务能够成功运行并拥有适当的权限,需建立软链接,同时创建特定的用户和用户组。若未执行此步骤,启动Mosquitto服务时可能会出现"Unable to drop privileges to 'mosquitto'"的错误信息。创建用户和用户组之后,将它们关联到Mosquitto服务,以确保服务以适当权限运行。
启动测试Mosquitto服务,通过mosquitto_sub命令进行订阅,与mosquitto_pub命令进行发布消息。确保这些命令参数设置正确,以实现预期的MQTT消息传递。检查命令参数,确保订阅和发布操作顺利进行。
Mosquitto.conf文件包含了三个关键属性,它们对服务配置至关重要。这些属性包括:listen_address、listen_port 和 ca_cert。listen_address定义了服务监听的网络接口,listen_port指定了服务使用的端口号,而ca_cert用于指定证书验证所需的证书文件。正确配置这些属性,确保Mosquitto服务能够安全且高效地进行连接和通信。