如何在CentOS7上搭建MQTT服务器(使用mosquitto)并用Python进行测试

如何在CentOS7上搭建MQTT服务器(使用mosquitto)并用Python进行测试缩略图

Mosquitto: 轻量级的MQTT代理服务器

随着物联网(IoT)和机器与机器(M2M)通信的普及,需要一个轻量级、高效、易于实现的消息协议来满足这些需求。这就是MQTT(消息队列遥测传输)的诞生背景。而Mosquitto则是该协议的一个开源实现。

1. 什么是Mosquitto?

Mosquitto是一个开源的MQTT代理服务器,它允许开发者快速、简单地搭建和运行MQTT服务器。它旨在为各种设备和应用提供轻量级的发布/订阅消息模式,特别是在网络带宽有限、可靠性要求高、或者运行环境资源受限的情境下。

2. 主要特点

  • 轻量级:对于资源受限的设备和网络,Mosquitto提供了一个紧凑、低带宽的解决方案。
  • 开源:Mosquitto是完全开源的,允许开发者自由地查看源代码、修改并根据需求进行部署。
  • 跨平台:支持多种操作系统,如Linux、Windows和MacOS。
  • 安全性:支持TLS/SSL加密,确保数据的安全性和隐私性。

3. 如何使用Mosquitto?

使用Mosquitto非常简单。首先,你需要安装Mosquitto代理服务器。此篇教程将引导你在CentOS7上搭建MQTT服务器,并使用Python进行简单的测试。

1. 环境准备:

确保你的系统是CentOS7,并具有sudo权限。

2. 安装必备软件:

yum install gcc-c++ cmake openssl-devel -y

3. 下载并安装mosquitto:

wget http://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz
tar -zxvf mosquitto-1.6.8.tar.gz
cd mosquitto-1.6.8
make
sudo make install

如果出现链接问题,可以通过以下命令修复:

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
sudo ldconfig

4. 配置mosquitto:

  • 创建配置文件:
mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
  • 创建用户组和用户:
sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto -s /sbin/nologin

5. 启动mosquitto:

mosquitto -c /etc/mosquitto/mosquitto.conf -d

6. 使用mosquitto进行简单的测试:

打开订阅者终端:

mosquitto_sub -t topic

打开发布者终端:

mosquitto_pub -t topic -m "Hello MQTT"

7. 使用Python进行测试:

首先,确保安装了paho-mqtt库:

pip install paho-mqtt
  • 订阅者:
import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code: " + str(rc))

def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect('localhost', 1883, 600)
client.subscribe('test', qos=0)
client.loop_forever()
  • 发布者:
import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code: " + str(rc))

client = mqtt.Client()
client.on_connect = on_connect
client.connect('localhost', 1883, 600)
client.publish('test', payload='Hello from Python', qos=0)

先运行订阅者脚本,然后运行发布者脚本。此时订阅者应该能够接收到来自发布者的消息。

至此,您已成功在CentOS7上搭建了一个MQTT服务器,并用Python进行了简单测试。如果希望进一步加强安全性,可以考虑为MQTT添加TLS/SSL加密等安全措施。

技术术语(共 6 个)—— 点击展开
MQTT轻量级物联网消息传输协议,基于发布/订阅模式,适合低带宽不稳定网络
Mosquitto轻量级开源 MQTT Broker,适合边缘与嵌入式部署
QoS服务质量等级,0 最多一次 / 1 至少一次 / 2 恰好一次
TopicMQTT 主题,消息路由的层级字符串,支持通配符 + 与 #
订阅客户端向 Broker 注册感兴趣的主题以接收消息
发布客户端向指定主题发送消息
来源/工具信息 —— 点击展开
来源 MQTT中文网(mqtt.cn) —— 国内领先的MQTT通信协议技术社区 分类 MQTT 教程 字数 1910 字 · 阅读约 5 分钟 更新 2023-10-13 永久链接 https://www.mqtt.cn/984.html
推荐工具:MQTT调试助手 微信小程序
MQTT中文网官方推出的MQTT调试工具,支持 MQTT 3.1.1/5.0 实时连接调试、主题订阅、消息收发监控与报文分析。 无需安装,微信搜索「MQTT调试助手」即可使用。 电脑端入口:https://www.mqtt.cn/mqtttool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 mqtt.cn
📝 作者声明
本文由 MQTT中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口