Mosquitto的搭建(websocket、ssl、auth-plug)及坑點總結

Mosquitto的搭建及坑點總結

  主要講述的是eclipse-mosquitto的C語言版本的搭建,主要是為了從1.4.15版本升級到1.6.9,為解決一些webSocket和數據格式問題。

  因為根據不同的業務和使用方式,需要不同的插件配合,本次在centos7搭建主要是需要WebSocket、SSL和mosquitto-auth-plug等一些插件組合


 

搭建準備工具

  1. centos7環境
  2. 安裝WebSocket
  3. 安裝Openssl,創建CA和SSL證書
  4. 下載編譯mosquitto的環境
  5. 安裝mosquitto-auth-plug插件,主要為了給mysql鑒權插件

 

搭建步驟

  1、首先下載相關必要的插件,避免在下面安裝中出現的問題

yum install gcc gcc-c++ -y
yum install c-ares-devel -y
yum install uuid-devel -y
yum install libuuid-devel -y

#mosquittos所需插件
yum install libxslt -y
yum install docbook-style-xsl -y
yum install crypto-utils -y

#安裝openssl相關插件
yum install openssl -y
yum install openssl-devel -y

#安裝git
yum install git -y

#安裝編譯工具
yum install cmake -y

yum install vim -y
 #安裝mysql插件
yum install mariadb-devel -y

 2、安裝Websocket,主要是github上的源程式碼編譯

git clone //github.com/warmcat/libwebsockets.git
cd libwebsockets
mkdir build
cd build
cmake ..
make
make install

   libwebsockets自身提供測試方法,在測試程式在編譯目錄build/bin中,libwebsockets-test-client 和 libwebsockets-test-server 

  • 運行服務端:libwebsockets-test-server
  • 運行客戶端:libwebsockets-test-client 127.0.0.1 –port=7681   

 

 3、mosquitto安裝,github最新程式碼,可自行checkout tag修改版本

 git clone https://github.com/eclipse/mosquitto.git

 cd mosquitto
#修改 支援websockets
 sed -i 's/WITH_WEBSOCKETS:=no/WITH_WEBSOCKETS:=yes/g'  config.mk 
 make
 make install
 adduser mosquitto

#啟動可能會報錯找不到鏈接庫
 echo "/usr/local/lib64" >> /etc/ld.so.conf.d/liblocal.conf
 echo "/usr/local/lib" >> /etc/ld.so.conf.d/liblocal.conf
 ldconfig

  不同的版本make編譯的時候可能需要安裝相關配置

  例如:mosquitto的1.4.15安裝的時候,有docbook相關的問題存在: xsltParseStylesheetProcess : document is not a stylesheet

  解決辦法:安裝yum -y install docbook-style-xsl ,還會發現 在man/manpage.xsl文件中docbook的地址不對應,需要找到對應的docbook地址(find / -name docbook.xsl)替換

  還有一些相關的問題可在這幾個部落客中得到解決:

  1. //blog.csdn.net/houjixin/article/details/46711547
  2. //blog.csdn.net/u013414502/article/details/79175871

  一般來說,安裝完之後,mosquitto的配置文件目錄是在/etc/mosquitto/下,可將mosquitto.conf.example 複製cp一份為mosquitto.conf 可以使用命令:mosquitto -c mosquitto.conf 測試是否啟動成功


 

  4、mosquitto-auth-plug安裝,需先安裝完mosquitto

git clone https://github.com/jpmens/mosquitto-auth-plug.git
cd mosquitto-auth-plug/
cp config.mk.in config.mk

#修改config.mk 其他為no 默認BACKEND_MYSQL ?= yes 

#mosquitto源碼位置
sed -i 's/MOSQUITTO_SRC =/MOSQUITTO_SRC = \/build\/mosquitto/g'  config.mk

#openssl位置,openssl version -a 查看 默認/etc/pki/tls
sed -i 's/OPENSSLDIR = \/usr/OPENSSLDIR = \/etc\/pki\/tls/g'  config.mk

#修改mosquitto-auth-plug的一些錯誤
sed -i "s/const struct mosquitto /struct mosquitto /g" /build/mosquitto-auth-plug/auth-plug.c 

make 
mv auth-plug.so /etc/mosquitto 

    


 

 5、SSL的安裝配置

  在最開始已經將openssl安裝好了,直接自己配置好證書文件就好

  • CA證書籤發
openssl req -new -x509 -days 36500 -extensions v3_ca -keyout ca.key -out ca.crt
  • 為mosquitto產生服務端的私鑰文件「server.key」和證書文件」server.crt」
#產生一個私鑰文件server.key
openssl genrsa -out server.key 2048
#簽發證書的請求文件「server.csr」
openssl req -out server.csr -key server.key -new
#證書文件server.crt
openssl x509 -req -in server.csr -CA ca.crt-CAkey ca.key -CAcreateserial -out server.crt -days 36500

  客戶端的證書也是一樣的流程,不同的名字而已,具體可以參考://mosquitto.org/man/mosquitto-tls-7.html


 

 

  以上五個步驟操作完成,就可以使用了,可能會根據不同的環境出現一些其他問題,可以多看看錯誤提示,一般性問題都是可以解決的,剩下的就是具體配置mosquitto.conf文件,根據不同的業務要求配置。

 

            轉載請註明出處 //www.cnblogs.com/zhouguanglin/p/13353350.html

 

Tags: