目录
简介1. 下载与编译 Mosquitto1.1 安装依赖1.2 下载与编译源码1.3 编译常见问题与解决1.3.1 找不到 `openssl/ssl.h` 或链接错误1.3.2 找不到 `ares.h`1.3.3 找不到 `uuid/uuid.h`1.3.4 找不到 `cJSON/cJSON.h`1.3.5 找不到 `libmosquitto.so.1`
2. 匿名登录测试2.1 启动服务器与客户端2.2 指定配置文件启动
3. 用户名密码配置3.1 修改配置文件3.2 添加用户3.3 配置主题权限3.4 验证认证
简介
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的、基于发布/订阅模型的通信协议,广泛应用于物联网设备的数据传输与远程控制。主流的开源代理平台包括:
Mosquitto:由 Eclipse 基金会维护,体积小、易部署,社区活跃。VerneMQ:基于 Erlang,实现高并发和分布式部署。EMQTT:同样基于 Erlang/OTP,性能卓越,商业版提供企业特性,社区版免费开源。
本篇博客以 Mosquitto 为例,演示在 Ubuntu 上从源码下载、编译安装,到匿名测试和用户名密码配置的完整流程。
1. 下载与编译 Mosquitto
1.1 安装依赖
在 Ubuntu 系统下,首先更新软件源并安装基础开发包:
sudo apt-get update
sudo apt-get install -y libssl-dev libc-ares-dev uuid-dev
若需使用 cJSON 库还需额外安装或编译:
git clone https://github.com/DaveGamble/cJSON.git
cd cJSON && make && sudo make install
1.2 下载与编译源码
# 下载 Mosquitto(以 v2.0.15 为例)
wget https://mosquitto.org/files/source/mosquitto-2.0.15.tar.gz
tar -zxvf mosquitto-2.0.15.tar.gz
cd mosquitto-2.0.15
# 编译与安装
make
sudo make install
编译完成后,可执行文件安装在 /usr/local/bin,库文件安装在 /usr/local/lib。
1.3 编译常见问题与解决
1.3.1 找不到 openssl/ssl.h 或链接错误
确保安装并配置了 OpenSSL 开发包,或从源码编译指定版本:
git clone https://github.com/openssl/openssl.git
cd openssl
git checkout OpenSSL_1_1_1a
./config
make
sudo make install
sudo ldconfig
1.3.2 找不到 ares.h
安装异步 DNS 库:
sudo apt-get install libc-ares-dev
1.3.3 找不到 uuid/uuid.h
安装 UUID 开发包:
sudo apt-get install uuid-dev
1.3.4 找不到 cJSON/cJSON.h
下载并安装 cJSON:
git clone https://github.com/DaveGamble/cJSON.git
cd cJSON && make && sudo make install
1.3.5 找不到 libmosquitto.so.1
创建软链接并更新动态链接缓存:
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
sudo ldconfig
2. 匿名登录测试
2.1 启动服务器与客户端
启动 Mosquitto 服务:
mosquitto -v
-v 为详细模式,打印调试信息,默认监听 1883 端口。
订阅主题:
mosquitto_sub -v -t hello
发布消息:
mosquitto_pub -t hello -m world
订阅端会收到并打印 world。
2.2 指定配置文件启动
如需使用自定义配置,执行:
mosquitto -c /etc/mosquitto/mosquitto.conf -d
-d 表示后台运行,加载指定的配置文件。
3. 用户名密码配置
3.1 修改配置文件
编辑 /etc/mosquitto/mosquitto.conf,添加:
allow_anonymous false
password_file /etc/mosquitto/pwfile
acl_file /etc/mosquitto/aclfile
3.2 添加用户
使用 mosquitto_passwd 创建并添加用户:
sudo mosquitto_passwd -c /etc/mosquitto/pwfile your_username
# 按提示输入密码
3.3 配置主题权限
编辑 /etc/mosquitto/aclfile,赋予用户读写权限:
user your_username
topic write your/topic/#
topic read your/topic/#
3.4 验证认证
重启 Mosquitto:
pkill mosquitto
mosquitto -v -c /etc/mosquitto/mosquitto.conf
使用用户名密码订阅:
mosquitto_sub -h 127.0.0.1 -t your/topic -u your_username -P your_password
使用用户名密码发布:
mosquitto_pub -h 127.0.0.1 -t your/topic -u your_username -P your_password -m "测试消息"
这样,你就完成了基于 Mosquitto 的 MQTT 开发环境搭建及基础认证配置,能够快速上手物联网项目的消息传输与管理。
参考:
0voice · GitHub