Mqtt服务器搭建
__
Mqtt服务器搭建
测试环境:CentOS64位
1.安装基础软件
yum install gcc-c++ yum install cmake yum install openssl-devel //mosquitto默认支持openssl
2.下载源码包
wget http://mosquitto.org/files/source/mosquitto-1.4.4.tar.gz wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz --no-check-certificate wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz
3.解压源码包
tar xf c-ares-1.10.0.tar.gz && mv c-ares-1.10.0 /usr/local/src/ tar xf v1.3-chrome37-firefox30 -C /usr/local/src/ tar xf mosquitto-1.4.4.tar.gz -C /usr/local/src/
4.编译准备
cd /usr/local/src/mosquitto-1.4.4/
vim compiling.txt #这个文件里有写需要的依赖包,内容如下
The following packages are required for mosquitto:
* tcp-wrappers (optional, package name libwrap0-dev)
* openssl (version 1.0.0 or greater if TLS-PSK support is needed, can be disabled)
* c-ares (for DNS-SRV support, can be disabled)
* libuuid (from e2fsprogs, can be disabled)
* On Windows, the Redhat pthreads library is required if threading support is
to be included.
To compile, run "make", but also see the file config.mk for more details on the
various options that can be compiled in.
vim config.mk #这个文件里包含多个选项,可以选择自己需要的功能
常见功能说明
WITH_SRV |
启用c-areas库,DNS查找的库 |
missing ares.h |
WITH_UUID |
启用lib-uuid为每个连接客户端生成uuid |
missing uuid.h |
WITH_WEBSOCKET |
启用WebSocket协议 |
missing libwebsockets.h |
5.安装tcp-wrappers
因为本机已经有了,所以就不安装了
rpm –qa | grep tcp_wrap*
tcp_wrappers-7.6-57.el6.x86_64
tcp_wrappers-libs-7.6-57.el6.x86_64
6.编译安装c-ares
cd /usr/local/src/c-ares-1.10.0 ./configure make make install
7.安装libuuid
yum -y install libuuid libuuid-devel
8.安装websocket
cd /usr/local/src/libwebsockets-1.3-chrome37-firefox30/ vim README.build #参照说明文档内容编译安装即内容如下
Generate the build files (default is Make files):
cd /path/to/src
mkdir build
cd build
cmake ..
(NOTE: The build/ directory can have any name and be located anywhere
on your filesystem, and that the argument ".." given to cmake is simply
the source directory of libwebsockets containing the CMakeLists.txt
project file. All examples in this file assumes you use "..")
NOTE2
A common option you may want to give is to set the install path, same
as --prefix= with autotools. It defaults to /usr/local.
You can do this by, eg
cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr #指定安装路径
NOTE3
On machines that want libraries in lib64, you can also add the
following to the cmake line
-DLIB_SUFFIX=64 #指定64位库
NOTE4
If you are building against a non-distro OpenSSL (eg, in order to get
access to ALPN support only in newer OpenSSL versions) the nice way to
express that in one cmake command is eg,
-DOPENSSL_ROOT_DIR=/usr/local/ssl #指定ssl文件位置
mkdir build; cd build; cmake .. -DLIB_SUFFIX=64 make install
9.开始安装mosquitto服务
cd /usr/local/src/mosquitto-1.4./ make && make install && echo $?
默认文件路径
| /usr/local/sbin | mosquitto server |
| /etc/mosquitto | configure |
| /usr/local/bin | utility command |
10.修改链接库
由于操作系统版本及架构原因,很容易出现安装之后的链接库无法被找到,如启动mosquitto客户端可能出现找不到libmosquitto.so.1文件,因此需要添加链接库路径
ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1 ldconfig
否则会出现注意的错误
error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
还有一些编译时可能会遇到的错误
mosquitto.c:871: error: ‘struct mosquitto’ has no member named ‘achan’
如果不使用可以在config.mk 把WITH_SRV功能关闭即可
其他问题也差不多,基本就是缺少相应的依赖包,解决办法两个
1在config.mk关闭相关选项
2 把依赖包装上
嫌麻烦可以直接yum install mosquitto mosquitto-clients –y一句话搞定上面所有
开始测试
1.添加组和用户
groupadd mosquitto useradd –g mosquitto mosquitto
2.启用,备份和编辑配置文件
cp /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
配置代理:
实验测试:在本地开启三个终端来代表发布者,服务代理,订阅者。来模拟远程测试
正常情况下:发布者 服务代理 订阅者是分别是不同的host 也就是各自IP不同
所以若要测试远程通信可以使用发布和订阅命令时加上 -h 代理服务器的地址
先在服务代理终端上开启mqtt服务
mosquitto -c /etc/mosquitto/mosquitto.conf –d


然后再打开一个终端订阅主题,模拟订阅者
mosquitto --help
mosquitto_sub -t goodafternoon #订阅goodafternoon主题
这里如果报错:
mosquitto_sub: error while loading shared libraries: libcares.so.2: cannot open shared object file: No such file or directory
原因:找不到libcares.so.2库文件
vim /etc/ld.so.conf.d/qt-x86_64.conf
添加下面两行
/usr/local/lib64
/usr/local/lib
ldconfig #刷新配置
然后再打开一个终端发布主题,模拟发布者
mosquitto_pub -t goodafternoon -m "hello world" #向goodaftnoon发布消息
可以在代理B端上看到连接日志
1494420735: New connection from ::1 on port 1883.
1494420735: New client connected from ::1 as mosqsub/23455-demon-cli (c1, k60).
1494420850: New connection from ::1 on port 1883.
1494420850: New client connected from ::1 as mosqpub/23456-demon-cli (c1, k60).
1494420850: Client mosqpub/23456-demon-cli disconnected.
而在订阅A端可以收到hello world这条消息!!

本文实验参考http://www.cnblogs.com/littleatp/p/4835879.html及一些大神的文章才得出的成功。感谢各位大神的努力和汗水。
Mqtt服务器搭建的更多相关文章
- 常见MQTT服务器搭建与试用
常见MQTT服务器搭建与试用 简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠 ...
- 个人智能家居系统 - MQTT服务器搭建(centOS7.3)
个人智能家居系统 - MQTT服务器搭建(centOS7.3) 0x00 参考 在CentOS7 上安装mosquitto1.4.1服务器,实现MQTT信息推送功能并增加websocket功能 mos ...
- 常见MQTT服务器搭建[转载]
简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠的网络的进行远程传感器和控制设备通 ...
- Apollo mqtt 服务器搭建
html { overflow-x: initial !important } :root { --bg-color: #ffffff; --text-color: #333333; --select ...
- MQTT——服务器搭建(一)
MQTT介绍 MQTT,是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器和控制设备: 轻量级的消息订阅和发布(publish/subscribe)协议 建 ...
- MQTT服务器搭建-mosquitto1.4.4安装指南
Mosquitto mosquitto是一款实现了 MQTT v3.1 协议的开源的消息代理服务软件. 其提供了非常轻量级的消息数据传输协议,采用发布/订阅模式进行工作,可用于物联设备.中间件.APP ...
- MQTT服务器搭建--Mosquitto用户名密码配置
Mosquitto用户认证配置 前言:基于Mosquitto服务器已经搭建成功,大部分都是采用默认的是允许匿名用户登录模式,正式上线的系统需要进行用户认证. 1.用户参数说明 Mosquitto服务器 ...
- MQTT服务器搭建--Apollo
尊重原创,我是伸手党:https://blog.csdn.net/u012377333/article/details/68943416 1.Apollo下载 下载地址:http://activemq ...
- Windows 下 MQTT 服务器搭建之Apollo
https://blog.csdn.net/wangh0802/article/details/84861226#%EF%BC%881%EF%BC%89%E4%B8%8B%E8%BD%BD%20Apo ...
随机推荐
- cassandra高级操作之索引、排序以及分页
本次就给大家讲讲cassandra的高级操作:索引.排序和分页:处于性能的考虑,cassandra对这些支持都比较简单,所以我们不能希望cassandra完全适用于我们的逻辑,而是应该将我们的逻辑设计 ...
- Docker建立本地Registry
从容器运行一个Registry # docker run -p : registry 查看yelinyuntest/static_web镜像 # docker images yelinyuntest/ ...
- git 远程仓库管理
要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库 ...
- 开源 & 免费使用 & 打包下载自行部署 :升讯威 周报系统
这个周报系统大约写于2015年,缘起当时所带的开发团队需要逐步建立或完善一些项目管理方法. 在调研了网上的诸多项目管理或周报/日报管理系统之后,并没有找到符合当时情况的系统,这里最大的问题不是网上既有 ...
- window.onload 和 $(document).ready(function(){})的区别
这篇作为我的新的起点开始吧,发现年纪大了,记性就不好了,有些东西老是记了忘,忘了百度.在学一些新知识的时候也是这样的毛病,总是重复学习,这样效率真心差!所以决定开始认真写博客! 本来想封装一个预加载的 ...
- Nginx + ngx_lua安装测试【CentOs下】
最近打算搞搞nginx,扒着各位先驱的文章自己进行测试下,中间过程也是错误不断,记录一下,以备使用. nginx的安装挺简单的,主要还是研究下一些第三方的模块,首先想试下初始化 ...
- CF615D Multipliers [数学]
tags:[计数原理][乘法逆元][归纳の思想]题解(复杂度:O(mlogm)):棘手之处:n的约数多到爆炸.因此我们不妨从因子的角度来分析问题.对n分解质因数得:n = p1^a1 * p2^a2 ...
- AngularJS1.X学习笔记5-加强版的表单
大家愚人节快乐!表单是沟通服务器端和客户端的桥梁,为数据从客户端传到服务端打开了一扇大门.AngularJS增加了一些新特性,使我们能够更加方便的操作表单.OK!开始学习!学习使我快乐. 一.双向数据 ...
- 第一章开发简单的Java应用程序
1.什么是程序? 程序一词来源于生活,通俗点讲就是把生活的的事用程序编写出来 并执行. 2.为什么要学习Java呢? Java是Sun Microsystems于1995年推出的高级编程语言 Java ...
- 一个web应用的诞生(10)--关注好友
下面回到首页中,使用一个账户登录,你肯定已经注意到了这里的内容: 没错,现在都是写死的一些固定信息,其中分享数量很容易就可以获取,只需要修改首页模板: <p class="text-m ...
