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  -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文件,根据不同的业务要求配置。

转载请注明出处 https://www.cnblogs.com/zhouguanglin/p/13353350.html

Mosquitto的搭建(websocket、ssl、auth-plug)及坑点总结的更多相关文章

  1. Mosquitto服务器的搭建以及SSL/TLS安全通信配置

    Mosquitto服务器的搭建以及SSL/TLS安全通信配置 摘自:https://segmentfault.com/a/1190000005079300 openhab  raspberry-pi ...

  2. 基于mosquitto的MQTT服务器---SSL/TLS 单向认证+双向认证

    基于mosquitto的MQTT服务器---SSL/TLS 单向认证+双向认证 摘自:https://blog.csdn.net/ty1121466568/article/details/811184 ...

  3. 小程序开发之搭建WebSocket的WSS环境(Apache+WorkerMan框架+PHP)

    最近公司的一个IoT项目用到了小程序的WSS协议环境,现在把整个的搭建开发过程分享给大家. 这里我们用的是WorkerMan框架,服务器是CentOS,Web服务器是Apache,开发语言是PHP. ...

  4. 使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...

  5. 【C#】MVC项目中搭建WebSocket服务器

    前言 因为项目需要,前端页面中需要不断向后台请求获取一个及一个以上的状态值.最初的方案是为每个状态值请求都建立一个定时器循环定时发起Ajax请求,结果显而 易见.在HTTP1.1协议中,同一客户端浏览 ...

  6. (转)使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...

  7. 使用Node.js+Socket.IO搭建WebSocket实时应用【转载】

    原文:http://www.jianshu.com/p/d9b1273a93fd Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新 ...

  8. 【Netty】(7)---搭建websocket服务器

    [Netty](7)---搭建websocket服务器 说明:本篇博客是基于学习某网有关视频教学. 目的:创建一个websocket服务器,获取客户端传来的数据,同时向客户端发送数据 一.服务端 1. ...

  9. 用C#搭建WebSocket

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在 W ...

随机推荐

  1. 使用CImage双缓冲

    一普通显示:现在的VC显示图片非常方便,远不是VC6.0那个年代的技术可比,而且支持多种格式的如JPG,PNG. CImage _img; 初始化: _img.Load(L"map.png& ...

  2. 表达式计算开源组件(NCalc.NetCore)

    首先,这款组件是开源的,NCalc是.net中的一个数学表达式求值程序.NCalc可以解析任何表达式并计算结果,包括静态或动态参数和自定义函数. 官网地址:http://ncalc.codeplex. ...

  3. 【总结-前台发送后台接收表单】MVC提交表单的四种方式

    https://www.cnblogs.com/chenwolong/p/Form.html#commentform 后台控制器接收前台表单参数三种方法: 一.普通参数 HTML标签name 和参数名 ...

  4. JedisUtils工具类模板

    redis.properties配置文件 redis.maxIdle=30 redis.minIdle=10 redis.maxTotal=100 redis.url=192.168.204.128 ...

  5. 【react】实现动态表单中嵌套动态表单

    要实现一个功能动态表单中嵌套动态表单如下: 仔细看看antd的文档其实不难 具体步骤如下 1.建立一个 名为 ConcatRegion的组件(动态表单A)代码如下 export function Co ...

  6. Vmware - 安装并启动 Centos 8

    下载 Linux 安装包 https://mirrors.aliyun.com/centos/8.1.1911/isos/x86_64/ 不同版本的 Centos https://mirrors.al ...

  7. Layui数据表格加入自定义扩展方法(重新渲染Render当前页数据)

    具体开发中遇到的问题如下, 数据表格的重新渲染或重新加载会导致当前操作的分页 或 配置被清空.我正在操作第5页,重新渲染后就回到了最原始第1页. 需要达到的效果是: 不调用接口,仅仅只是从table. ...

  8. 【TokyoWesterns CTF】shrine

    信息: 题目来源:TokyoWesterns CTF 标签:flask.SSTI 解题过程 构建题目环境后,访问主页可以获得程序源码: import flask import os app = fla ...

  9. java 基本语法(八) 数组(一) 数组的概述

    * 1.数组的理解:数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名, * 并通过编号的方式对这些数据进行统一管理. * * 2.数组相关的概念: * >数组名 * ...

  10. redis(二十三):Redis 集群(proxy 型)二

    redis的确是一个非常高效的缓存服务器,但是单台redis服务器的内存管理能力有限,如果一味的加大内存的话会导致redis服务器的性能下降,所以就必须要搭建redis集群来提供服务.在redis官方 ...