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
小提示: 如果你在生产环境用 CentOS,装完后记得检查一下 SELinux 的上下文。我曾经遇到过一台机器,Mosquitto 死活连不上,查了半天发现是 SELinux 把 1883 端口给拦了。临时解决可以 setenforce 0,但正规做法是配好 SELinux 策略。

3.2 在 Windows 上安装 Mosquitto

Windows 下的安装其实更简单,但有个坑我得先告诉你——Mosquitto 在 Windows 上默认不会注册成服务,你得手动来。

步骤很简单:

  1. 去 mosquitto.org/download 下载 Windows 版的安装包(比如 mosquitto-2.x.x-install-windows-x64.exe)。
  2. 双击安装,一路 Next。安装路径我建议用默认的 C:\Program Files\mosquitto,省得后面配环境变量麻烦。
  3. 装完后,打开命令提示符(管理员权限),进到安装目录:
cd C:\Program Files\mosquitto
mosquitto.exe -v

-v 参数是让日志输出到控制台,方便你调试。看到类似 mosquitto version 2.x.x running 的日志,就说明 Broker 已经起来了。

注意: Windows 上如果直接关掉命令提示符窗口,Mosquitto 就停了。想让它一直跑,得手动注册成 Windows 服务: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 后,再试一次上面的命令,应该会报连接被拒绝。这说明安全策略生效了。

避坑指南: 我曾经在测试时发现订阅端收不到消息,排查了半天,最后发现是防火墙把 1883 端口拦了。Linux 上记得检查 firewalld 或 iptables,Windows 上检查 Windows Defender 防火墙。开放端口命令:sudo firewall-cmd --add-port=1883/tcp --permanent。

3.5 本章知识体系

下面这张图帮你把这一章的核心逻辑串起来,安装、配置、启动、测试,每一步都环环相扣。

Mosquitto 安装与基础配置流程 ① 安装 Mosquitto ② 编辑配置文件 ③ 启动 Broker ④ 命令行测试 ❌ 失败:检查防火墙/配置 ✅ 成功:基础环境就绪 💡 核心要点 • 生产环境必须禁止匿名访问(allow_anonymous false) • 配置文件语法严格:参数名与值之间用空格,不用等号