在物联网项目中,我们经常用到MQTT协议,用MQTT协议做交互就需要部署一个MQTT服务,而mosquitto是一个常用的MQTT应用服务,
Mosquitto是一个实现了消息推送协议MQTT v3.1的开源消息代理软件。MQTT(Message Queuing Telemetry Transport)是一种轻量级、高效的协议,专为低带宽、高延迟或不可靠的网络而设计,使其适用于各种物联网(IoT)和消息传递应用。
Mosquitto的主要功能包括消息代理,它充当消息代理,促进使用MQTT协议的设备或应用程序之间的通信。同时,Mosquitto还提供了用户密码管理工具(mosquitto_passwd)和其他相关程序文件,如mosquitto_pub(用于发布消息的命令行客户端)和mosquitto_sub(用于订阅消息的命令行客户端)。
总的来说,Mosquitto是一个功能强大、易于使用和部署的开源消息代理软件,广泛应用于物联网和其他需要轻量级和高效消息传递的场景中,这节讲如何用docker部署一个mosquitto。
首先需要安装有docker,先用docker拉下来mosquitto,他的镜像名是eclipse-mosquitto,执行以下命令从远程仓库获取到mosquitto的镜像文件:
docker pull eclipse-mosquitto
下载好镜像后可以通过docker images查看下拉好的镜像,确认没有问题后面就开始做运行前的准备了,为了以后方便操作我们需要把常用的文件夹挂在到磁盘中,现在磁盘中创建三个文件夹分别是config,data和log,一个是存放配置文件,可以用来修改mosquitto的端口,配置支持scoket或者匿名访问等。data用来存放数据,log用来存放日志。
mkdir -p /usr/local/mosquitto/config
mkdir -p /usr/local/mosquitto/data
mkdir -p /usr/local/mosquitto/log
在上面创建的config文件夹中创建mosquitto的配置文件mosquitto.conf内容如下:
persistence true
persistence_location /usr/local/mosquitto/data
log_dest file /usr/local/mosquitto/log/mosquitto.log
listener 9001
port 1883
allow_anonymous true
然后为创建的目录授权
chmod -R 755 /usr/local/mosquitto
chmod -R 777 /usr/local/mosquitto/log
一切就绪后执行运行命令:
docker run -it --name=mosquitto --privileged -p 1883:1883 -p 9001:9001 -v /usr/local/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /usr/local/mosquitto/data:/mosquitto/data -v /usr/local//mosquitto/log:/mosquitto/log -d eclipse-mosquitto
运行后可以通过docker ps -a查看是否运行成功,如果是用阿里云服务器,还要记得把出入站规则添加上1883和9001端口,方便外网访问
然后就可以用MQTT连接工具来测试了,这里以MQTTX为例,发送消息后在监听的窗口可以监听到消息了。