Mosquitto
mosquitto是一款實現了 MQTT v3.1 協議的開源的消息代理服務軟件.
其提供了非常輕量級的消息數據傳輸協議,採用發佈/訂閱模式進行工作,可用於物聯設備、中間件、APP客戶端之間的消息通訊。 mosquitto官網
http://mosquitto.org/
關於mqtt協議可參考
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
基礎準備
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
//關於詳細配置可參考 http://mosquitto.org/man/mosquitto-conf-5.html
啓動
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
[root@localhost 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
[root@localhost ld.so.conf.d]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
[root@localhost ld.so.conf.d]# echo "/usr/local/lib">>/etc/ld.so.conf
[root@localhost ld.so.conf.d]# echo "/usr/local/libwebsockets-2.0.2/build/lib">>/etc/ld.so.conf
[root@localhost ld.so.conf.d]# ldconfig
[root@localhost 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
參考文檔
https://www.cnblogs.com/littleatp/p/4835879.html