阅读本文大概需要 6.66 分钟
在上一篇文章
MQTT 教程详解(入门篇)
中,我们已经了解了什么是 MQTT ,MQTT 的基本原理,基本概念以及 MQTT 独特的优势,我们知道 MQTT 是一个基于订阅/发布的消息传输协议,在这个过程中,需要客户端来扮演订阅者和发布者,同时还需要一个服务器来帮忙进行数据中转,那么今天我们就来搭建一个服务器。
对于服务器的选择,其实有很多种,具体可以参考链接:
https://github.com/mqtt/mqtt.github.io/wiki/servers
windows 下可以使用 Apache-Apollo ,我之前也测试过,毕竟图形化界面,几分钟就可以搭建好并让服务跑起来,很容易上手,但是今天我不推荐在 windows 下搭建 Apollo,我个人认为,两个字 — 规范,因为我们在实际开发中其实大多数服务都是部署到 linux 服务器上的,而且我也习惯了在 linux 下搭建服务器,习惯了折腾。
那好,今天我们就来介绍在 linux 下搭建服务器,linux 下我使用的是 mosquitto,它是一款实现了 MQTT v3.1 的开源消息代理软件,提供了轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。接下来我们需要将其搭建在我们的 linux 服务器上。
linux 内核版本:
1.各种基础软件及模块安装
这些是为我们后面安装 mosquitto 做准备的,后面你就知道他们的作用了,如果不事先装好,后面会报各种错,到时候还是需要安装,所以,提前装好这些,特别提示,默认情况下 mosquitto 安装需要 OpenSSL 支持,所以需要先安装 OpenSSL。
2.下载并编译安装 libwebsockets
(1)下载 libwebsockets 的源码包
(2)解压源码包
(3)进入 libwebsockets-1.3-chrome37-firefox30 目录,新建一个 build 目录并进入。
(4)配置并安装
不知道大家注意到没?在编译 libwebsocket 的过程中我们需要使用到 cmake 工具,其实它是一个跨平台的安装(编译)工具,这也是我们在安装 libwebsockets 前使用 yum 命令提前安装好 cmake 的原因。
PS:
(1)在使用 「wget」 命令在线下载 libwockets 源码包如果时出现 unable to establish SSL connection 错误,则升级一下 「wget」即可,使用如下命令:
(2)libsockets 的安装是非必须的,但是 config.mk 中对应 WITH_WEBSOCKETS
选项,如果开启则需要安装对应模块,如果我们需要启动 websocket 支持,则需要安装 libsockets 模块,这里我选择安装了。
3.下载并编译安装 mosquitto
(1)进入到 /usr/local/ 目录下
(2)下载 mosquitto 源码包
(3)解压
(4)进入 mosquitto-1.5 目录
(5)编译
(6)安装
4.配置 mosquitto.conf 文件
mosquitto.conf 文件是一个很重要的配置文件,在使用 mosquitto 时,我们需要在该文件中进行一系列的配置。
(1)将mosquitto.conf 复制到 /etc/ 目录下
(2)进入 mosquitto 目录并编辑 mosquitto.conf 文件
(3)在 mosquitto.conf 文件中通过移动光标找到#port 1883 ,并将其改为 port 1883,没错,就是将「#」去掉,这是 mosquitto 默认对外访问的端口。
(4)找到 #max_connections -1 并改为 max_connections -1,这是最大的连接数,-1表示不限制。
5.添加用户 mosquitto
6.启动 mosquitto 服务
此时如果命令没有报错则说明已经启动成功,或者也可以使用如下命令查看该服务端口是否正在运行来判断程序启动的结果。
如果看到 1883 的端口正在处于 linsten 状态,则说明程序启动成功。
7.进行 mosquitto 发布和订阅的功能测试
(1)打开两个终端,A :订阅
(2)发布
此时你可以看到,当一个终端发布消息后可以在另一个订阅了该主题的终端显示,且每发布一次另一个终端就相应显示一条消息,如下图:
是不是很酷?没错,服务器搭建完美结束!
注:mosquitto 在linux 下是通过命令行来进行订阅和发布的,订阅和发布的主题必须一致,且同时在一个服务器环境下。
mosquitto_sub 表示订阅 「subscribe」
mosquitto_pub 表示发布「publish」
-t 表示发布的主题「topic」
-m 表示服务器的 IP 「host」
文 : dolphkon
封面图:来源于网络
PS:如果觉得文章不错,还请大家帮忙点赞或分享下,算是对我最大支持!
领取专属 10元无门槛券
私享最新 技术干货