1. 程式人生 > >記錄mosquitto在Linux環境下的部署/安裝/使用/測試過程

記錄mosquitto在Linux環境下的部署/安裝/使用/測試過程

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

參考文件