在物聯網項目中,我們經常用到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為例,發送消息后在監聽的窗口可以監聽到消息了。