Mosquitto的搭建(websocket、ssl、auth-plug)及坑點總結
Mosquitto的搭建及坑點總結
主要講述的是eclipse-mosquitto的C語言版本的搭建,主要是為了從1.4.15版本升級到1.6.9,為解決一些webSocket和數據格式問題。
因為根據不同的業務和使用方式,需要不同的插件配合,本次在centos7搭建主要是需要WebSocket、SSL和mosquitto-auth-plug等一些插件組合
搭建準備工具
- centos7環境
- 安裝WebSocket
- 安裝Openssl,創建CA和SSL證書
- 下載編譯mosquitto的環境
- 安裝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)替換
還有一些相關的問題可在這幾個部落客中得到解決:
- //blog.csdn.net/houjixin/article/details/46711547
- //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