Mosquitto是一個(gè)開(kāi)源的MQTT消息代理服務(wù)器。MQTT是一個(gè)輕量級(jí)的、基于發(fā)布/訂閱模式的消息傳輸協(xié)議。 mosquitto的安裝使用比較簡(jiǎn)單,可以方便的來(lái)進(jìn)行一些測(cè)試。
mosquitto介紹
Mosquitto的特點(diǎn):
1. 輕量級(jí):Mosquitto是一個(gè)輕量級(jí)的MQTT代理服務(wù)器,它的設(shè)計(jì)目標(biāo)是提供高效、快速和可靠的消息傳遞,適用于各種規(guī)模的應(yīng)用。
2. 容易部署:Mosquitto的安裝和部署非常簡(jiǎn)單,可以在多個(gè)平臺(tái)上運(yùn)行,包括Linux、Windows、macOS等。
3. 安全性:Mosquitto支持基于TLS/SSL的加密通信,可以保護(hù)消息的安全性和機(jī)密性。同時(shí),它還支持基于用戶名和密碼的身份驗(yàn)證,以及訪問(wèn)控制列表(ACL)來(lái)限制訪問(wèn)權(quán)限。
4. 可擴(kuò)展性:Mosquitto支持多個(gè)客戶端連接和多個(gè)主題的訂閱,可以滿足大規(guī)模應(yīng)用的需求。
Ubuntu下的安裝
方式一:源碼安裝
下載mosquitto
官網(wǎng):https://mosquitto.org/
源碼地址:https://mosquitto.org/files/source/mosquitto-2.0.9.tar.gz
優(yōu)點(diǎn)是可以任意指定需要的版本。 但就是稍麻煩些,需要自己編譯使用。若需要添加進(jìn)服務(wù),則也需要自己來(lái)配置。
cd /home/test
wget --no-check-certificate https://mosquitto.org/files/source/https://mosquitto.org/files/source/mosquitto-2.0.9.tar.gz
// 編譯、安裝
cd mosquitto-2.0.9
make
sudo make install
方式二:直接安裝
優(yōu)點(diǎn)是簡(jiǎn)單方便,只是版本不能由你自由選,不過(guò)版本應(yīng)該也不會(huì)太舊,Ubuntu18下默認(rèn)應(yīng)該是2.0以上的版本。
sudo apt-get install mosquitto
以上默認(rèn)只安裝了mosquitto的服務(wù),不帶測(cè)試客戶端工具mosquitto_sub和mosquitto_pub。如果需要,則可以安裝:
sudo apt-get install mosquitto-clients
服務(wù)管理
service --status-all
它將顯示 Ubuntu 上的完整服務(wù)列表。如過(guò)系統(tǒng)是 Ubuntu 18.04、Ubuntu 20.04 和 Ubuntu 22.04 版本或以上版本,建議使用Systemd systemctl 實(shí)用程序啟動(dòng)、停止或重新啟動(dòng)服務(wù)。較早的版本則可以使用 service 命令啟動(dòng)/停止/重啟服務(wù)。
service
是一種較舊的服務(wù)管理命令,用于與 System V init 系統(tǒng)兼容的 Linux 發(fā)行版。它可以啟動(dòng)、停止、重啟或查詢系統(tǒng)服務(wù)的狀態(tài)。使用 sudo service
命令時(shí),你需要指定服務(wù)的名稱,例如 sudo service apache2 stop
將停止 Apache 服務(wù)器。 sudo systemctl
是一個(gè)較新的服務(wù)管理命令,用于與 Systemd 系統(tǒng)兼容的 Linux 發(fā)行版,如最新版本的 Ubuntu、Fedora 和 CentOS。它提供了更多的功能和靈活性。
還有一種方式,可以使用 /etc/init.d 目錄中的初始化腳本啟動(dòng)、停止或重新啟動(dòng)服務(wù)。該目錄實(shí)際上包含用于不同服務(wù)的各種腳本。如使用:
/etc/init.d/mosquitto start
自從 Ubuntu 切換到 Systemd 后,不推薦使用初始化腳本。
systemctl
啟動(dòng) mosquitto 服務(wù):
sudo systemctl stop mosquitto
停止mosquitto 服務(wù):
sudo systemctl start mosquitto
要重新啟動(dòng) mosquitto 服務(wù):
sudo systemctl restart mosquitto
檢查 mosquitto 服務(wù)狀態(tài):
sudo systemctl status mosquitto
避坑指南
安裝成功并啟動(dòng)后,發(fā)現(xiàn)外網(wǎng)并不能成功訪問(wèn)到,防火墻也放行了1883端口,但是仍然無(wú)法訪問(wèn)到1883端口,為什么會(huì)連不上Linux上的mosquitto服務(wù)器?
原因是Ubuntu上的mosquitto服務(wù)默認(rèn)是 local only mode,當(dāng)使用sudo service mosquitto start,再使用sudo service mosquitto status是查看不到當(dāng)前服務(wù)器是運(yùn)行在哪種模式,當(dāng)使用mosquitto -v這個(gè)命令時(shí)可以看到下圖現(xiàn)象:
還有個(gè)更簡(jiǎn)單的方法,排查此類問(wèn)題。就是查看linux系統(tǒng)下開(kāi)放了哪些端口,端口的使用情況。
使用netstat命令,如:
netstat -ntpl
127.0.0.1
是IPv4環(huán)回地址,也稱為本地回環(huán)地址。它指向本地主機(jī)的網(wǎng)絡(luò)接口,用于在本地主機(jī)上訪問(wèn)自己的服務(wù)和應(yīng)用程序。 這類地址開(kāi)頭的服務(wù)只能本機(jī)訪問(wèn)。0.0.0.0
是通配符地址,表示任意主機(jī)。當(dāng)服務(wù)綁定到 0.0.0.0
時(shí),它將監(jiān)聽(tīng)所有可用的網(wǎng)絡(luò)接口上的傳入連接,意味著可以從任意地址訪問(wèn)該服務(wù)。在Linux下, :::
和 ::1
是IPv6環(huán)回地址的兩種表示形式,用于代表本地主機(jī)。
解決辦法
直接修改/etc/mosquitto
目錄下的mosquitto.conf
文件,開(kāi)放端口和允許訪問(wèn)的地址即可。
# 設(shè)置允許匿名連接,如果禁止匿名連接,則需要配置賬號(hào)、密碼連接
allow_anonymous true
# mqtt 協(xié)議配置,分為ipv4和ipv6兩種,當(dāng)前可以只配置啟用一種
listener 1883 0.0.0.0
socket_domain ipv4
protocol mqtt
測(cè)試使用
訂閱消息
# 無(wú)密碼
mosquitto_sub -t test1
# 有密碼
mosquitto_sub -u yang -P abc123 -t test1
發(fā)布消息
# 無(wú)密碼
mosquitto_pub -t test1 -m "發(fā)布的內(nèi)容"
# 有密碼
mosquitto_pub -u yang -P abc123 -t test1 -m "發(fā)布的內(nèi)容"
mqtt客戶端下載
在windows下,常用的mqtt客戶端工具為MQTTX。
工具下載地址:
MQTTX 下載
https://github.com/emqx/MQTTX/releases/latest
?密碼配置
?默認(rèn)安裝的mosquitto未啟用密碼,如果正式使用最好是啟用密碼驗(yàn)證。
配置mosquitto賬號(hào)密碼:
# 使用-c 參數(shù)會(huì)導(dǎo)致清空密碼文件,重新插入用戶
mosquitto_passwd -c pwfile.example 用戶名
# 不使用-c 表示追加用戶,不影響舊用戶
mosquitto_passwd pwfile.example 用戶名
經(jīng)過(guò)以上配置,在linux下默認(rèn)會(huì)在/etc/mosquitto/目錄下生成密碼的配置文件?pwfile.example。也可以指定要生成的pwfile文件路徑,使用以下形式:
mosquitto_passwd /etc/mosquitto/pwfile.example 用戶名
修改/etc/mosquitto
目錄下的mosquitto.conf
文件,啟用密碼。
# 設(shè)置是否允許匿名連接,如果禁止匿名連接,則需要配置賬號(hào)、密碼連接
allow_anonymous true
# 密碼文件路徑,禁止匿名連接配置,允許匿名則不用配置
password_file /etc/mosquitto/pwfile.example
# mqtt 協(xié)議配置,分為ipv4和ipv6兩種,當(dāng)前可以只配置啟用一種
listener 1883 0.0.0.0
socket_domain ipv4
protocol mqtt
# ipv6
listener 1883 ::
socket_domain ipv6
protocol mqtt
# webscoket 協(xié)議配置,如果有的話需要配置,分為ipv4和ipv6兩種,當(dāng)前可以只配置啟用一種
listener 1884 0.0.0.0
protocol websockets
socket_domain ipv4
listener 1884 ::
protocol websockets
socket_domain ipv4
# 允許的最大連接數(shù),-1表示沒(méi)有限制
max_connections -1
最后,重啟mosquitto服務(wù),配置文件的修改才能生效。
sudo systemctl restart mosquitto
其他MQTTBroker
除了Mosquitto,還有一些其他開(kāi)源免費(fèi)的MQTT代理服務(wù)器可供選擇。
包括但不限于以下幾種:
1. Eclipse Mosquitto:Eclipse Mosquitto是Mosquitto的一個(gè)分支,它提供了更多的功能和改進(jìn),如更好的性能、更豐富的配置選項(xiàng)等。
2. EMQX:EMQ X是一個(gè)高性能、可擴(kuò)展的MQTT和MQTT-SN代理服務(wù)器,它支持多種協(xié)議和功能,如MQTT、MQTT-SN、CoAP、LwM2M等。
3. HiveMQ:HiveMQ是一個(gè)專注于可靠性和可擴(kuò)展性的MQTT代理服務(wù)器,它提供了高可用性和負(fù)載均衡等功能。
4. RabbitMQ:RabbitMQ是一個(gè)通用的消息代理服務(wù)器,它支持多種協(xié)議和消息傳遞模式,包括AMQP、MQTT等。
5.Aedes:Aedes是一個(gè)基于JavaScript的輕量級(jí)MQTT消息代理服務(wù)器。
更多介紹:https://www.cnblogs.com/zhaojinhui/p/16790989.html
這些MQTT代理服務(wù)器都有各自的特點(diǎn)和適用場(chǎng)景,你可以根據(jù)自己的需求選擇合適的。
其他資源
Linux搭建MQTT服務(wù)器(mosquitto)并使用
Linux搭建MQTT服務(wù)器(mosquitto)并使用_linux mosquitto_碼仙?的博客-CSDN博客
百度安全驗(yàn)證
https://wenku.csdn.net/answer/138aada39619ea890fc382855cc37e54
mosquitto服務(wù)器搭建及配置_mosquitto 配置_胖濤的博客-CSDN博客
Mosquitto 搭建及配置_mosquitto.conf_量子物理學(xué)的博客-CSDN博客
Linux下安裝Mosquitto以及開(kāi)啟Websockets_linux mosquitto 啟動(dòng)_Quite不Quiet的博客-CSDN博客
RabbitMQ介紹及部署(超詳細(xì)講解)_rabbitmq服務(wù)器_char1otte的博客-CSDN博客
RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ
如何下載安裝RabbitMQ_雨會(huì)停rain的博客-CSDN博客
RabbitMQ安裝部署——超詳細(xì)哦~_懶羊羊夸夸~的博客-CSDN博客
小議 MQTT 物聯(lián)網(wǎng)傳輸協(xié)議 - UinIO.com 電子技術(shù)博客
RabbitMQ安裝部署——超詳細(xì)哦~_懶羊羊夸夸~的博客-CSDN博客
Bash Shell 腳本編程實(shí)踐 - UinIO.com 電子技術(shù)博客
從 GNU Make 到 CMake 快速入門(mén) - UinIO.com 電子技術(shù)博客
nodejs快速搭建MQTT服務(wù)器_aedes mqtt_qczxl520的博客-CSDN博客
EMQX 企業(yè)版: 企業(yè)級(jí) MQTT 物聯(lián)網(wǎng)接入平臺(tái)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-659229.html
MQTT服務(wù)器_鴻蒙道的博客-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-659229.html
到了這里,關(guān)于linux下的mosquitto服務(wù)安裝及使用(避坑指南)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!