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..tar.gz
cd mosquitto-1.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..tar.gz
cd c-ares-1.10.
./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.-chrome37-firefox30.tar.gz
cd libwebsockets-1.3-chrome37-firefox30
mkdir build; cd build;
cmake .. -DLIB_SUFFIX=
make install
//若遇到以上模块无法安装的情况,可将对应模块选项关闭即可,但相应功能也将无法提供;
 

开始安装mosquitto

make
make install
至此程序已经安装完毕!
程序文件将默认安装到以下位置
路径 程序文件
/usr/local/sbin mosquiotto server
/etc/mosquitto configuration
/usr/local/bin utility command
 

修正链接库路径

由于操作系统版本及架构原因,很容易出现安装之后的链接库无法被找到,如启动mosquitto客户端可能出现找不到
libmosquitto.so.1文件,因此需要添加链接库路径
//添加路径
vim /etc/ld.so.conf.d/liblocal.conf
/usr/local/lib64
/usr/local/lib
//刷新
ldconfig
 

启动与测试

创建用户

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
成功将启动1883端口监听
 

客户端测试

新建两个shell端口A/B
A 订阅主题:
mosquitto_sub -t location
B 推送消息:
mosquitto_pub -t location -h localhost -m "new location"
 
可以在A窗口看到由B推送的消息,此外服务端窗口也可以看到客户端连接和端口的日志
: New client connected from 127.0.0.1 as mosqpub/-iZ94eb8yq (c1, k60).
: Client mosqpub/-iZ94eb8yq disconnected.、

FAQ

启动mosquitto报错

error while loading shared libraries: libwebsockets.so.4.0.0: cannot open shared object file: No such file or directory
或者
error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决方法
找不到链接库,通过locate或find命令找到libwebsockets.so.4.0.0,将其目录添加至ldconfg配置中:
vim /etc/ld.so.conf.d/liblocal.conf
/usr/local/lib64
/usr/local/lib
ldconfig
//执行ln -s 添加软连接的方式也可行

编译找不到openssl/ssl.h

解决方法
yum install openssl-devel

编译报错

mosquitto.c:871: error: ‘struct mosquitto’ has no member named ‘achan’
找不到areas.h
解决方法
安装 c-areas模块(见上文)或将config.mk中WITH_SRV选项关闭
 

make test 提示不支持协议

Address family not supported by protocol
一般是指所访问的地址类型不被支持,比如IPV6,忽略该错误即可
 

参考文档


mosquitto1.4 搭建日记

https://goochgooch.wordpress.com/2014/08/01/building-mosquitto-1-4/

Ubuntu下搭建教程(日文)
http://qiita.com/aquaviter/items/cb3051cf42a3a3c4a4d9

使mosquitto支持websockets
https://www.justinribeiro.com/chronicle/2014/10/22/mosquitto-libwebsockets-google-compute-engine-setup/

使用JS实现mqtt-websocket
http://jpmens.net/2014/07/03/the-mosquitto-mqtt-broker-gets-websockets-support/

MQTT服务器搭建-mosquitto1.4.4安装指南的更多相关文章

  1. Mqtt服务器搭建

    .bg { background: #99CC99 } Mqtt服务器搭建 测试环境:CentOS64位 1.安装基础软件 yum install gcc-c++ yum install cmake ...

  2. 个人智能家居系统 - MQTT服务器搭建(centOS7.3)

    个人智能家居系统 - MQTT服务器搭建(centOS7.3) 0x00 参考 在CentOS7 上安装mosquitto1.4.1服务器,实现MQTT信息推送功能并增加websocket功能 mos ...

  3. 常见MQTT服务器搭建与试用

    常见MQTT服务器搭建与试用   简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠 ...

  4. 常见MQTT服务器搭建[转载]

    简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠的网络的进行远程传感器和控制设备通 ...

  5. Apollo mqtt 服务器搭建

    html { overflow-x: initial !important } :root { --bg-color: #ffffff; --text-color: #333333; --select ...

  6. MQTT——服务器搭建(一)

    MQTT介绍 MQTT,是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器和控制设备: 轻量级的消息订阅和发布(publish/subscribe)协议 建 ...

  7. MQTT服务器搭建--Mosquitto用户名密码配置

    Mosquitto用户认证配置 前言:基于Mosquitto服务器已经搭建成功,大部分都是采用默认的是允许匿名用户登录模式,正式上线的系统需要进行用户认证. 1.用户参数说明 Mosquitto服务器 ...

  8. MQTT服务器搭建--Apollo

    尊重原创,我是伸手党:https://blog.csdn.net/u012377333/article/details/68943416 1.Apollo下载 下载地址:http://activemq ...

  9. Windows 下 MQTT 服务器搭建之Apollo

    https://blog.csdn.net/wangh0802/article/details/84861226#%EF%BC%881%EF%BC%89%E4%B8%8B%E8%BD%BD%20Apo ...

随机推荐

  1. gcc -fvisibility=hidden,-fPIC选项

    1. http://www.tuicool.com/articles/fy6Z3aQ 2. http://www.ibm.com/developerworks/cn/linux/l-cn-sdlsta ...

  2. .net添加下拉框

    aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DropDownL ...

  3. springMVC 源码解读系列(一)初始化

    先看看DispatcherServlet的类机构: 初始化时序图: servlet初始化会调用 init 方法,换句话说就是springMVC进行初始化的时候首先会去执行HttpServletBean ...

  4. Project中分清楚挣值项

    在项目管理非常重要的挣值管理,有一些关键项,像PV,EV,AC,BAC,EAC,ETC等等这些都是关键项,如果这个没分清楚,计算出很多东西都是错的,下面两个图是我一个项目快要完成的报表. 图1 图2 ...

  5. MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射

    先说下问题产生的背景: 最近在做一个用到MyBatis的项目,其中有个业务涉及到关联查询,我是将两个查询分开来写的,即嵌套查询,个人感觉这样更方便重用: 关联的查询使用到了动态sql,在执行查询时就出 ...

  6. Linux下文件和目录的相关操作

    文件和目录的操作命令,按以下思路进行整理,感觉更便于记忆和使用 1.创建一个二进制文件 touch f1 2.向文件中写入数据 echo "hello" >> f1 e ...

  7. 新版Chrome自动禁用第三方插件的解决办法[转]

    原文地址:http://www.douban.com/note/375734834/?type=like Chrome的新策略里面禁用了除chrome web store下载的所有第三方扩展,这个很烦 ...

  8. 【BZOJ】2719 银河之星

    可以将棋子分为9种类型.且可以通过合并使得两个不同种类棋子转换为另一种棋子(不过要注意棋盘大小,有的时候硬要合并会到棋盘外面,可以先把棋盘全部转换,然后枚举每一个棋子的转换).然后把状态压成一个十位的 ...

  9. java中byte, int的转换

    最近在做些与编解码相关的事情,又遇到了byte和int的转换,看着那些关于反码.补码的说明依旧头疼,还是记下些实用的方法吧.int -> byte可以直接使用强制类型转换: byte b = ( ...

  10. MySQLdb 1031 Error

    Python import MySQLdb 有可能报:site-packages/pkg_resources.py:1031: UserWarning: /home/***/.python-eggs ...