「​​認識MQTT​​​」文章提到,MQTT的訊息全都透過稱為代理人(broker)的伺服器交流。本文將說明頗受歡迎的​​開放原始碼MQTT伺服器Mosquitto​​,在Windows系統上的安裝流程,以及替MQTT伺服器開啟Windows防火牆埠號的步驟。

下載與安裝Mosquitto

Mosquitto(註:這個名稱和英文的蚊子只差一個字母,所以Mosquitto的標誌中間帶有一個尖刺)是非營利軟體供應商聯盟Eclipse基金會的​​開源物聯網專案計畫(iot.eclipse.org)​​​中的一環,支援MQTT 3.1和3.1.1版通訊協定,可在Windows, macOS和Linux等作業系統上安裝執行。適用於Windows系統的安裝程式,可直接從​​Mosquitto官網下載(mosquitto.org/download)​​,請選擇“Native build”(原生編譯版):

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos

下載之後直接雙按它進行安裝。在安裝過程中,安裝程式會提示需要額外下載​​OpenSSL​​和pthreads程式元件:

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_eclipse_02

請按下Next(下一步)繼續安裝,最後,螢幕上將出現如下的兩個錯誤訊息,告訴我們因為缺乏必要的.DLL元件,Mosquitto伺服器無法啟動。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_eclipse_03

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_04

下載與安裝Mosquitto所需的元件

請下載pthreads裡的pthreadVC2.dll元件:

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_linux_05

接著下載Win32_OpenSSL_v1.0.2k_Light,32位元版本的OpenSSL安裝程式並執行它。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_06

底下是OpenSSL的數個安裝步驟畫面之一,為了方便複製DLL檔,請選擇第二個選項,將OpenSSL的二進制檔(以及.DLL檔)存放到/bin資料夾(第一個選項是「存入系統資料夾」)。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_07

這是OpenSSL最後一個安裝畫面,詢問你要捐助多少美金,如果目前尚未準備捐款,請取消勾選並按下Finish(完成)鈕。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_08

選取OpenSSL安裝路徑(預設為C:\OpenSSL-Win32)的bin資料夾裡的libeay32.dll和ssleay32.dll:

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_eclipse_09

把它們連同之前下載的pthreadVC2.dll元件,全都複製到Mosquitto安裝資料夾(預設路徑是C:\Program Files (x86)\mosquitto)。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_eclipse_10

重新安裝Mosquitto,就能順利安裝成功。

啟動Mosquitto伺服器

在Windows的「服務」或者「工作管理員」的「服務」項目中,找到mosquitto服務,然後在它的「狀態」欄位按滑鼠右鍵,選擇「啟動」。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_11

若要確認Mosquitto伺服器是否在運作狀態。可在「命令提示字元」視窗中執行netstat -an,列舉目前作用中的連線。Mosquitto服務預設運作於1883埠,因此我們也可以執行netstat -an|find “1883”,確認Mosquitto伺服器目前正在執行中:

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_eclipse_12

開通防火牆埠號1883

Windows的防火牆預設沒有開通1883埠號,因此本機電腦以外的MQTT裝置無法和Mosquitto伺服器連線。

設定Windows防火牆,允許外部裝置透過1883埠連入本機電腦的步驟如下:

1. 按下Windows防火牆設定面板左下角的「進階設定」,開啟「具有進階安全性的Windows防火牆」面板:

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_13

2. 底下畫面顯示所有可連入(輸入)和連出(輸出)本機的安全規則設定。請按右上角的「新增規則」,準備新增一個1883埠號的輸入規則。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_14

3. 在「新增輸入規則精靈」的第一個設定選項,選擇「連接埠」,再按「下一步」。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_15

4. 選擇“TCP”並指定1883連接埠。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_eclipse_16

5. 選擇「允許連線」。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_linux_17

6. 套用此規則的時機,可全部勾選,至少勾選前面兩項。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_macos_18

7. 最後,替此規則設定一個名稱和說明。

MQTT教學(二):安裝MQTT伺服器Mosquitto,Windows系統篇_eclipse_19