一、引言
隨著網絡的不斷發展,萬物互聯正成為現實,但是由於受限設備和低帶寬、高延遲或不可靠的網絡,影響著物聯網的發展的。為瞭解決這些問題,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 |
以上目錄中,用戶經常接觸與使用的是 bin
、etc
、data
、log
目錄。
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 端口 |