Mqtt服务器搭建

.bg { background: #99CC99 }

测试环境: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 –C /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服务

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

配置代理:

打开一个终端叫B,在B里开启代理服务

mosquitto -c /etc/mosquitto/mosquitto.conf –d

再打开一个终端叫A,A里充当订阅者,输入如下命令

mosquitto --help

这里报错了

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_sub -t goodafternoon   #订阅good_afternoon
 

再打开一个终端叫C,在C里执行如下命令

发布消息

mosquitto_pub -t goodafternoon -m "hello world"

可以在代理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

时间: 2024-10-28 20:52:04

Mqtt服务器搭建的相关文章

转 【MQTT】在Windows下搭建MQTT服务器

MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合. 对负载内容屏蔽的消息传输. 使用 TCP/IP 提供网络连接. 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量. 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制. 有三种消息发布服务质量:

使用EMQ搭建MQTT服务器

前言寒假的时候开始搭建mqtt服务器,一开始使用的是RabbitMQ,基于Erlang语言.但是RabbitMQ的本职工作是AMQP,MQTT只是他的一个插件功能,似乎有些大材小用,很多MQTT的功能也没有集成.这次我打算使用EMQ来重新部署我的MQTT服务器.EMQ也是基于 Erlang/OTP 语言平台开发.他是支持大规模连接和分布式集群,发布订阅模式的开源 MQTT 消息服务器.支持的输入协议不仅仅是MQTT,还包括WebSocket,以及物联网同样著名的与MQTT基于TCP传输协议不同的

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

基于mosquitto的MQTT服务器---SSL/TLS 单向认证+双向认证 摘自:https://blog.csdn.net/ty1121466568/article/details/81118468 2018年07月19日 16:51:57 曾来过 阅读数:1632 本文为参考网上其他博文搭建出服务器后的步骤记录,如有冒犯,请私信!!! 目录... 3 第 1 章 安装Mosquitto. 4 1.1 方法一:手动编译安装... 4 1.2方法二:在Ubuntu下使用apt-get安装..

配置MQTT服务器

第一步:下载一个Xshell 链接:https://pan.baidu.com/s/16oDa5aPw3G6RIQSwaV8vqw 提取码:zsb4 打开Xshell 前往MQTT服务器软件下载地址:http://emqtt.com/downloads ,复制链接.注意对应的版本! 主机下载MQTT软件,把刚刚拷贝的链接复制过来!因为不能直接拷贝,所以我们选择"复制命令输入",最终在控制台输入: wget http://emqtt.com/static/brokers/emqttd-c

Linux下的SVN服务器搭建

鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始*********/ 系统环境:Centos 6.5 第一步:通过yum命令安装svnserve,命令如下: >yum -y install  subversion 此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行 若需查看svn安装位置,可以用以下命令: >rpm -ql subve

Linux NTP 服务器搭建

Linux时间同步服务器搭建 NTP(Network Time Protocol)是用来使计算机时间同步化的一种协议,它使用UDP协议123号端口对外提供服务,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做时间的同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击.时间按NTP服务器的等级传播.按照离外部UTC源的远近把所有服务器归入不同的Stratum(层)中. 今天做一个项目需要配置一台NTP时间同步服

持续集成(二)工具搭建篇—内网邮件服务器搭建

在我们的持续构建中,项目构建中出现错误提醒,或者开发人员之间的沟通交流,进度汇报的事务,都是离不开一个通信工具,那就是邮件.在我们的项目开发中如果使用第三方的邮件平台,这肯定不是最好的选择,因为第三方的邮件需要外网的支持,但是外网又不是特别的可靠,假如外网链接出现了问题,这样就会不必要的延误我们的工期.再或者很多项目都是保密项目,在开发中只能用内网.但是不用邮件吧又不行.为了解决这个头疼的问题,我们的内网邮件服务器工具就出现了,只要用它安装在我们的服务器上,配置好账户,配置好客户端,在内网里就可

Webrtc服务器搭建

1.WebRTC后台服务: 通话的房间服务器(Room Server) 房间服务器是用来创建和管理通话会话的状态维护,是双方通话还是多方通话,加入与离开房间等等,我们暂时沿用Google部署在GAE平台上的AppRTC这个房间服务器实现,该GAE App的源码可以在github.com上获取.该实现是一个基于Python的GAE应用,我们需要下载Google GAE的离线开发包到我们自己的Linux服务器上来运行该项目,搭建大陆互联网环境下的房间服务器. 通话的信令服务器(Signaling S

windows下subversion服务器搭建

一.下载subversion服务器端和客户端软件 1.subversion下载地址:http://subversion.tigris.org/ 2.svn比较流行的客户端Tortoisesvn下载地址:http://tortoisesvn.net/downloads 3.安装subversion服务器和Tortoisesvn,若是exe文件直接安装,若是zip解压后即可(若是想方便,可以在环境变量中配置bin) 二.创建版本库(Repository) 若是想在f:\svnroot下建立版本库,需