記錄mosquitto在Linux環境下的部署/安裝/使用/測試過程
阿新 • • 發佈:2018-12-14
Mosquitto
mosquitto是一款實現了 MQTT v3.1 協議的開源的訊息代理服務軟體.
其提供了非常輕量級的訊息資料傳輸協議,採用釋出/訂閱模式進行工作,可用於物聯裝置、中介軟體、APP客戶端之間的訊息通訊。 mosquitto官網
關於mqtt協議可參考
基礎準備
Linux核心版本:Centos 6.5_final_64bit 安裝基礎軟體
yum install gcc-c++
yum install cmake
yum install openssl-devel //mosquitto預設支援openssl
下載程式
官網下載
wget http://mosquitto.org/files/source/mosquitto-1.4.4.tar.gz tar -xzvf mosquitto-1.4.4.tar.gz cd mosquitto-1.4.4
編譯安裝
編譯選項
當前的程式目錄可直接編譯,在編譯之前需根據需要做一定的配置,否則會出現 xxx.h找不到的情況。
vim config.mk
config.mk包括了多個選項, 可按需關閉或開啟,但一旦開啟則需要先安裝對應的模組
模組說明
選項 |
說明 |
make出錯資訊 |
WITH_SRV |
啟用c-areas庫的支援,一個支援非同步DNS查詢的庫 見http://c-ares.haxx.se |
missing ares.h |
WITH_UUID |
啟用lib-uuid支援,支援為每個連線的客戶端生成唯一的uuid |
missing uuid.h |
WITH_WEBSOCKETS |
啟用websocket支援,需安裝libwebsockets對於需要使用websocket協議的應用開啟 |
missing libwebsockets.h |
安裝c-areas
wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz tar xvf c-ares-1.10.0.tar.gz cd c-ares-1.10.0 ./configure make sudo make install
安裝lib-uuid
yum install libuuid-devel
安裝libwebsockets
wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz
tar zxvf v1.3-chrome37-firefox30.tar.gz
cd libwebsockets-1.3-chrome37-firefox30
mkdir build; cd build;
cmake .. -DLIB_SUFFIX=64
make install
開始安裝mosquitto
cd /usr/local/mosquitto-1.4.9
make
make install
至此程式已經安裝完畢!
啟動與測試
建立使用者
mosquitto預設以mosquitto使用者啟動,可以通過配置檔案修改
groupadd mosquitto
useradd -g mosuqitto mosquiotto
程式配置
mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
配置說明
# 服務程序的PID
#pid_file /var/run/mosquitto.pid
# 服務程序的系統使用者
#user mosquitto
# 服務繫結的IP地址
#bind_address
# 服務繫結的埠號
#port 1883
# 允許的最大連線數,-1表示沒有限制
#max_connections -1
# 允許匿名使用者
#allow_anonymous true
啟動
mosquitto -c /etc/mosquitto/mosquitto.conf -d
調測步驟:
1、先開啟一個客戶端,模擬broker
2、再開啟一個客戶端,模擬訂閱
3、最後開啟一個客戶端,模擬釋出
4、訂閱介面可以實時收到釋出訊息
FAQ
1、在啟動過程中報錯:
Error: Invalid user 'mosquitto'.
解決方法:
2、報錯./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
[[email protected] ld.so.conf.d]# find / -name "libwebsockets.so.8"
/usr/local/lib64/libwebsockets.so.8
/usr/local/libwebsockets-2.0.2/build/lib/libwebsockets.so.8
[[email protected] ld.so.conf.d]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
[[email protected] ld.so.conf.d]# echo "/usr/local/lib">>/etc/ld.so.conf
[[email protected] ld.so.conf.d]# echo "/usr/local/libwebsockets-2.0.2/build/lib">>/etc/ld.so.conf
[[email protected] ld.so.conf.d]# ldconfig
[[email protected] ld.so.conf.d]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
/usr/local/libwebsockets-2.0.2/build/lib