Ubuntu22.04下Mosquitto2.0.11配置双协议监听器遇端口占用问题
问题原因及解决方法
问题根源
你的Mosquitto配置里包含了include_dir /etc/mosquitto/conf.d,而Ubuntu系统默认安装Mosquitto后,这个目录下会自带一个默认配置文件(通常名为defaults.conf),里面已经配置了listener 1883。加上你自己在主配置文件里又写了一遍listener 1883,导致程序启动时尝试两次监听1883端口,触发了"Address already in use"错误。
解决步骤
先确认conf.d目录下的重复配置:
ls /etc/mosquitto/conf.d cat /etc/mosquitto/conf.d/defaults.conf你会看到里面存在和主配置重复的
listener 1883设置。任选一种方式解决:
- 方式一:保留主配置,移除默认重复项
把conf.d目录下的默认配置文件重命名或删除:sudo mv /etc/mosquitto/conf.d/defaults.conf /etc/mosquitto/conf.d/defaults.conf.bak - 方式二:保留默认配置,修改主配置
删除主配置文件里自行添加的listener 1883相关配置块,WebSocket的配置可以留在主文件中,或者移到conf.d目录下的新文件里,只要确保1883端口只被配置一次即可。
- 方式一:保留主配置,移除默认重复项
验证修复效果
重新启动Mosquitto:mosquitto -c /etc/mosquitto/mosquitto.conf -v查看日志,此时应该不会再出现端口占用错误,同时1883(MQTT协议)和8080(WebSocket协议)端口都能正常监听。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

