• 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 https://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. https://blog.csdn.net/houjixin/article/details/46711547
    2. https://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

      客户端的证书也是一样的流程,不同的名字而已,具体可以参考:https://mosquitto.org/man/mosquitto-tls-7.html


       以上五个步骤操作完成,就可以使用了,可能会根据不同的环境出现一些其他问题,可以多看看错误提示,一般性问题都是可以解决的,剩下的就是具体配置mosquitto.conf文件,根据不同的业务要求配置。

  • 相关阅读:
    乐乐的作业
    Spring中配置数据源的5种形式
    乐观锁和悲观锁的区别
    使用Nexus搭建Maven私服
    Maven错误记录
    Maven学习笔记(一)
    Eclipse的SVN插件下载
    SSH整合(Struts2+Spring+Hibernate)
    java.lang.NoClassDefFoundError: org/objectweb/asm/Type
    使用mss2sql将SqlServer转换为Mysql
  • 原文地址:https://www.cnblogs.com/zhouguanglin/p/13353350.html
Copyright © 2020-2023  润新知