系統版本centos7 X64
1.設置保存安裝包路徑
# cd /usr/local/src
2、開始下載源包
官網資源: https://mosquitto.org/files/source/
# wget https://mosquitto.org/files/source/mosquitto-1.6.7.tar.gz
3、解壓
解壓后得到mosquitto-1.6.7文件目錄
# tar zxvf mosquitto-1.6.7.tar.gz
# mv mosquitto-1.6.7 /usr/local/mosquitto-1.6.7
4、安裝MQTT運行依賴環境
1)以下三個必須安裝,不然make時無法通過。 另外安裝MQTT之前,我們也可以# cat compiling.txt文件閱讀一下官方的說明。
# yum -y install openssl-devel # yum -y install gcc-c++ # yum -y install cmake
2)以下可選擴展功能,不安裝也不影響MQTT使用,只是缺少部分對應的功能
c-ares(用於DNS-SRV支持,默認禁用)c-ares官網:http://c-ares.haxx.se
tcp-wrappers(可選,包名libwrapp0 dev)
lib-uuid(支持為每個連接客戶端生成唯一uuid)
libwebsockets(可選,默認禁用,版本1.3及以上,安裝可支持websocket功能) 關於MQTT和Websocket的區別,有興趣可以到這個鏈接了解一下。
下面安裝擴展功能:
# yum install -y c-ares-devel # yum install -y uuid-devel # yum install -y libuuid-devel
# yum install -y libwebsockets
如果想了解安裝的庫在哪個位置,# rpm -ql libuuid 可知道哪些文件是通過yum指令安裝來的,卸載包使用# yum remove libuuid
需要查詢是否已經安裝RPM包可輸入# rpm -q libuuid-devel
5、修改config.mk配置文件
# cd /usr/local/mosquitto-1.6.7 # vim config.mk
修改以下為yes,如果前面有#就去掉,保存退出。
WITH_SRV:=yes
WITH_WEBSOCKETS:=yes
WITH_ADNS:=yes
6、編譯安裝
# make # make install
以上執行# make時,如果不報錯的話,就跳過以下說明。如果報錯: mosquitto.c:49:29: fatal error: libwebsockets.h: No such file or directory
那么說明libwebsockets 沒有安裝好,執行卸載# yum remove libwebsockets,下載新的源包的進行安裝,步驟如下。
源包鏈接:https://github.com/warmcat/libwebsockets 我們選擇一個版本復制zip下載鏈接,這里我選擇的是1.5版本。
# wget https://github.com/warmcat/libwebsockets/archive/v1.5-stable.zip # yum -y install unzip # unzip libwebsockets-1.5.zip # mkdir -p /usr/local/websocket # mv libwebsockets-1.5-stable /usr/local/websocket # cd /usr/local/websocke/libwebsockets-1.5-stable # cmake . # make # make install
執行以上安裝ibwebsockets后,重新編譯安裝MQTT # cd /usr/local/mosquitto-1.6.7 # make # make install 這3個命令前面已經列出過了。
7、啟動
# mosquitto -c /etc/mosquitto/mosquitto.conf -d -p 1883 -v
8、啟動MQTT報錯解決
錯誤信息:mosquitto: error while loading shared libraries: libwebsockets.so.5: cannot open shared object file: No such file or directory
解決方法:使用whereis可以查找 libwebsockets.so.5的所在路徑,建立一個軟鏈接到/usr/lib 下即可。
# ln -s /usr/local/lib/libwebsockets.so.5 /usr/lib/libwebsockets.so.5 # ldconfig
9、測試
打開2個shell 窗口,登錄你的linux賬號。
訂閱:mosquitto_sub -t mtopic -h 47.0.0.0 -u sun_read
發布:mosquitto_pub -t mtopic -h 47.0.0.0 -m "我發消息給你了"