- 更新系统并安装依赖
sudo dnf update -y
sudo dnf install -y epel-release # 若需要 EPEL 额外仓库
sudo dnf install -y gcc-c++ cmake openssl-devel c-ares-devel libuuid-devel libwebsockets-devel
- 安装 Mosquitto
通过默认仓库安装(推荐)
sudo dnf install -y mosquitto
3. 启动服务并设置开机自启
sudo systemctl start mosquitto
sudo systemctl enable mosquitto # 开机自启
确认 Mosquitto 服务状态
# 确保服务已启动
sudo systemctl status mosquitto
# 查看默认端口(通常为 1883/TCP)
netstat -tuln | grep 1883
MQTT 是应用层协议,可以运行在不同的传输层协议上:
TCP:默认方式(如 mqtt://,端口 1883)。
WebSocket:基于 HTTP 升级的 WebSocket 传输(如 ws:// 或 wss://,端口 9001)。
修改监听地址(如需允许外部访问)
编辑配置文件 /etc/mosquitto/mosquitto.conf:
# 允许所有 IP 访问(默认监听 127.0.0.1)
# 默认 MQTT over TCP(端口 1883)
listener 1883 0.0.0.0
# MQTT over WebSocket(端口 7001)
listener 7001 0.0.0.0
protocol websockets
# 允许匿名连接(测试用,生产环境建议关闭)
allow_anonymous true
#password_file /etc/mosquitto/passwd
# 持久化设置(保留消息和状态)
#persistence true
#persistence_file mosquitto.db
#persistence_location /var/lib/mosquitto/
#autosave_interval 300 # 每5分钟自动保存
# 创建密码文件并添加用户(如用户名:myuser)
sudo mosquitto_passwd -c /etc/mosquitto/passwd myuser
# 输入密码后确认
# 限制消息大小(默认无限制)
message_size_limit 1024
max_connections 1000 # 最大客户端连接数
max_queued_messages 100 # 单个客户端最大排队消息数
# 日志输出到文件
log_dest file /var/log/mosquitto/mosquitto.log
生成用户密码文件:
密码文件需对 Mosquitto 进程可读:
sudo chown mosquitto:mosquitto /etc/mosquitto/passwd
sudo chmod 600 /etc/mosquitto/passwd # 仅允许所有者读写
# 创建用户(首次使用 -c 参数,后续追加用户无需 -c)
sudo mosquitto_passwd -c /etc/mosquitto/passwd user1
# 输入密码后重启服务
sudo systemctl restart mosquitto
重启服务
sudo systemctl restart mosquitto
日志分析
# 实时查看日志
tail -f /var/log/mosquitto/mosquitto.log
带认证的订阅/发布
# 订阅(需用户名密码)
mosquitto_sub -h localhost -t "data" -u kd -P kd
# 发布 QoS=1 的消息
mosquitto_pub -h localhost -t "data" -m "QoS1 Test" -q 1
通信数据存储,使用sqlit3查看
sudo chown mosquitto:mosquitto /var/lib/mosquitto
sudo chmod 600 /var/lib/mosquitto # 仅允许所有者读写