3. Mosquitto 安装与基础配置:Linux/Windows 安装、mosquitto.conf 核心参数、启动与测试
好,咱们正式开始动手了。这一章我带你把 Mosquitto 装起来,跑通第一个 MQTT 消息。说实话,很多人在 Broker 的权限配置上栽跟头,其实根源往往是最开始的安装和基础配置就没搞对。咱们把地基打牢,后面讲主题授权时才不会手忙脚乱。
3.1 在 Linux 上安装 Mosquitto
我个人习惯在 Linux 上做生产部署,稳定、可控。Ubuntu 和 CentOS 的安装方式略有不同,我分别说一下。
Ubuntu / Debian 系
直接用 apt 安装,非常省事:
sudo apt update
sudo apt install mosquitto mosquitto-clients -y
装完以后,Mosquitto 会自动注册成系统服务,默认就已经在后台跑着了。你可以用下面这条命令确认一下:
sudo systemctl status mosquitto
如果看到 active (running),说明成了。
CentOS / RHEL 系
CentOS 默认仓库里的 Mosquitto 版本可能比较老。我建议先加一下官方维护的 EPEL 仓库:
sudo yum install epel-release -y
sudo yum install mosquitto mosquitto-clients -y
启动方式一样:
sudo systemctl start mosquitto
sudo systemctl enable mosquitto
setenforce 0,但正规做法是配好 SELinux 策略。
3.2 在 Windows 上安装 Mosquitto
Windows 下的安装其实更简单,但有个坑我得先告诉你——Mosquitto 在 Windows 上默认不会注册成服务,你得手动来。
步骤很简单:
- 去 mosquitto.org/download 下载 Windows 版的安装包(比如
mosquitto-2.x.x-install-windows-x64.exe)。 - 双击安装,一路 Next。安装路径我建议用默认的
C:\Program Files\mosquitto,省得后面配环境变量麻烦。 - 装完后,打开命令提示符(管理员权限),进到安装目录:
cd C:\Program Files\mosquitto
mosquitto.exe -v
-v 参数是让日志输出到控制台,方便你调试。看到类似 mosquitto version 2.x.x running 的日志,就说明 Broker 已经起来了。
mosquitto install。之后就可以在服务管理器里管理它了。
3.3 mosquitto.conf 核心参数
配置文件是 Mosquitto 的灵魂。默认的配置文件一般在 /etc/mosquitto/mosquitto.conf(Linux)或安装目录下的 mosquitto.conf(Windows)。
我挑几个最常用的核心参数讲,这些你后面配置主题授权时几乎天天都要打交道。
| 参数名 | 默认值 | 说明 |
|---|---|---|
listener |
1883 | 监听端口。可以写多行,支持同时监听多个端口。 |
allow_anonymous |
true | 是否允许匿名连接。生产环境必须设为 false。 |
password_file |
无 | 指定密码文件路径。配合 mosquitto_passwd 工具生成。 |
acl_file |
无 | 指定 ACL 规则文件路径。这是咱们课程的核心。 |
persistence |
false | 是否持久化消息。如果开启,Broker 重启后保留 retained 消息和会话。 |
log_dest |
stderr | 日志输出目标。可以写 syslog、file 或 stdout。 |
max_connections |
-1(无限制) | 最大并发连接数。防止客户端把 Broker 拖垮。 |
举个例子,一个最简的生产级配置大概长这样:
# 监听 1883 端口
listener 1883
# 禁止匿名访问
allow_anonymous false
# 密码文件
password_file /etc/mosquitto/passwd
# ACL 文件
acl_file /etc/mosquitto/aclfile
# 日志写到文件
log_dest file /var/log/mosquitto/mosquitto.log
# 开启持久化
persistence true
persistence_location /var/lib/mosquitto/
allow_anonymous false 写成 allow_anonymous=false,结果 Mosquitto 直接报错启动不了。
3.4 启动与测试
配置写好了,怎么验证它能不能用?我一般分三步走。
第一步:启动 Broker
Linux 下用 systemctl:
sudo systemctl restart mosquitto
sudo systemctl status mosquitto
Windows 下如果注册了服务,在服务管理器里启动;如果没注册,直接运行 mosquitto.exe -c mosquitto.conf -v。
第二步:用命令行客户端测试
打开两个终端窗口。一个用来订阅:
mosquitto_sub -h localhost -t "test/topic" -v
另一个用来发布:
mosquitto_pub -h localhost -t "test/topic" -m "Hello, MQTT!"
如果订阅端收到了 test/topic Hello, MQTT!,说明 Broker 工作正常。
第三步:验证匿名访问是否被禁止
当你配置了 allow_anonymous false 后,再试一次上面的命令,应该会报连接被拒绝。这说明安全策略生效了。
firewalld 或 iptables,Windows 上检查 Windows Defender 防火墙。开放端口命令:sudo firewall-cmd --add-port=1883/tcp --permanent。
3.5 本章知识体系
下面这张图帮你把这一章的核心逻辑串起来,安装、配置、启动、测试,每一步都环环相扣。