Linux 搭建MQTT服務器

一、引言

        隨著網絡的不斷發展,萬物互聯正成為現實,但是由於受限設備和低帶寬、高延遲或不可靠的網絡,影響著物聯網的發展的。為瞭解決這些問題,IBM工程師在1999年發佈MQTT協議,它是基於二進制消息的發佈/訂閱編程模式的消息協議,由於其優越的表現,在物聯網方方面面都有著廣泛應用,現在已經成為OASIS規范。

二、選擇開源的MQTT 服務器

        自從MQTT協議發佈以來,隨著時間發展,出現瞭許多MQTT服務器,其中比較有名的開源MQTT服務器主要有以下幾個:

        ①、Eclipse Mosquitto:這是一個使用 C 語言實現的 MQTT 服務器,它主要是基於MQTT協議的5.0、3.1.1和3.1版。

        ②、EMQ X:這是一個使用 Erlang 語言開發的 MQTT 服務器,它支持MQTT-SN、 CoAP、LwM2M 等IoT 協議,使用比較廣泛,我們選擇的安裝的也是這種。

        ③、Mosca:這是一個使用 Node.JS 開發的 MQTT 服務器,其官網:Mosca by mcollina。

        ④、VerneMQ:這是一個使用 Erlang 開發的 MQTT 服務器。

三、EMQX下載

       1、EMQX中文官網:https://www.emqx.com/zh

        2、在https://www.emqx.com/zh/server-estimate 查看配置估算 ,看下自己服務器配置是否足夠。

       3、去到https://www.emqx.com/zh/try?product=broker下載

   4、選擇ZIP安裝方式和CPU架構後

        下載方法一:直接在Centos服務器上執行下載命令

wget https://www.emqx.com/zh/downloads/broker/4.4.3/emqx-4.4.3-otp24.1.5-3-el8-amd64.zip

        下載方法二:點擊“立即下載”,完成EMQX的ZIP下載,然後再上傳到Centos服務器上。

        

四、EMQX安裝

       1、由於EMQX是用Erlang語言編寫的,所以,在Linux下安裝時,需要先安裝Erlang依賴項:

sudo yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

       2、將ZIP包解壓

unzip emqx-4.4.3-otp24.1.5-3-el8-amd64.zip

      3、運行

./bin/emqx start

        4、查看是否運行狀態:

./bin/emqx_ctl status

     5、如果啟動過程提示“Please make sure openssl-1.1.1 (libcrypto) and libncurses are installed. ”錯誤,可以按如下步驟安裝 openssl1.1.1依賴包後重新啟動即可。

安裝並編譯: opensslcd /usr/local/src/下載wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1d.tar.gztar xf openssl-1.1.1d.tar.gz編譯cd openssl-1.1.1d./configmake && make install安裝完成後 路徑:/usr/local/bin

五、EMQX命令

      如果沒設置EQMX的bin路徑,則進入解壓的ZIP的路徑:

# 啟動emqx./bin/emqx start # 停止emqx./bin/emqx stop # 重啟emqx./bin/emqx restart # 檢查運行狀態./bin/emqx_ctl status # 服務卸載./bin/emqx uninstall

六、EMQX相關

 1、EMQX目錄結構:目錄結構 | EMQX 文檔

不同安裝方式得到的 EMQX 其目錄結構會有所不同,具體如下:

描述 使用 ZIP 壓縮包安裝 使用二進制包安裝 Homebrew(MacOS)安裝
可執行文件目錄 ./bin /usr/lib/emqx/bin /usr/local/bin
數據文件 ./data /var/lib/emqx/data /usr/local/Cellar/emqx/*/data
Erlang 虛擬機文件 ./erts-* /usr/lib/emqx/erts-* /usr/local/Cellar/emqx/*/erts-
配置文件目錄 ./etc /etc/emqx/etc /usr/local/Cellar/emqx/*/etc
依賴項目錄 ./lib /usr/lib/emqx/lib /usr/local/Cellar/emqx/*/lib
日志文件 ./log /var/log/emqx /usr/local/Cellar/emqx/*/log
啟動相關的腳本、schema 文件 ./releases /usr/lib/emqx/releases /usr/local/Cellar/emqx/*/releases

以上目錄中,用戶經常接觸與使用的是 binetcdatalog 目錄。

etc 目錄

EMQX 通過 etc 目錄下配置文件進行設置,主要配置文件包括:

配置文件 說明
emqx.conf EMQX 配置文件
acl.conf EMQX 默認 ACL 規則配置文件
plugins/*.conf EMQX 各類插件配置文件
certs EMQX SSL 證書文件

EMQX 具體的配置內容可以查看 配置項。

data 目錄

EMQX 將運行數據存儲在 data 目錄下,主要的文件包括:

configs/app.*.config

EMQX 讀取 etc/emqx.conf 和 etc/plugins/*.conf 中的配置後,轉換為 Erlang 原生配置文件格式,並在運行時讀取其中的配置。

2、EMQX配置說明:配置說明 | EMQX 文檔

EMQX 的配置文件通常以 .conf 作為後綴名,你可以在 etc 目錄找到這些配置文件,主要配置文件包括:

配置文件 說明
etc/emqx.conf EMQX 配置文件
etc/acl.conf EMQX 默認 ACL 規則配置文件
etc/plugins/*.conf EMQX 擴展插件配置文件

需要註意的是,安裝方式不同 etc 目錄所處的路徑可能不同,具體請參見 目錄結構。

3、EMQ X 默認開啟的 MQTT 服務 TCP 端口(需要在防火墻中添加規則,放行以下端口)

端口 說明
1883 MQTT 協議端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8084 MQTT/WebSocket/SSL 端口
8081 管理 API 端口
18083 Dashboard 端口

本文來自網絡,不代表程式碼花園立場,如有侵權,請聯系管理員。https://www.codegarden.cn/article/30283/
返回顶部