MQTT服务器部署

MQTT服务器部署MQTT服务器部署现在物联网常用的通信方式有哪些?RF433/315M、蓝牙、Zigbee、wifi、以太网等等,通信协议也按不同功能分了许多种,例如TCP、MQTT等,具体可到https://blog.csdn.net/sinat_36098122/article/details/80930168研究。我当前用的比较多的是MQTT协议,它被较多的用来需要省电的设备通信上,采用发布/订阅的形式…

大家好,又见面了,我是你们的朋友全栈君。

MQTT服务器部署

现在物联网常用的通信方式有哪些?RF433/315M、蓝牙、Zigbee、wifi、以太网等等,通信协议也按不同功能分了许多种,例如TCP、MQTT等,具体可到https://blog.csdn.net/sinat_36098122/article/details/80930168 研究。我当前用的比较多的是MQTT协议,它被较多的用来需要省电的设备通信上,采用发布/订阅的形式传输消息,具体可参考https://www.cnblogs.com/skullboyer/p/9085210.html
要使用MQTT通信,就少不了MQTT服务器,它是消息传送的中转站(代理)。也就是说MQTT服务器并不存储消息,消息的发布与接收都由客户端完成。我主要写一下目前也是较流行的两者MQTT服务器的搭建:EMQ和Mosquitto。这两种服务器都是开源的,这里写的是部署在windows服务器上的方法(没办法菜鸟只能搞win,以后再玩玩Linux)。

一、EMQ搭建

1,下载EMQ。直接到官网上下,https://www.emqx.io/cn/downloads。EMQ是中国人搞的一个开源框架,基于ErLang语言开发的服务器框架(这个语言之前我也没听说过,没办法只能硬着头皮搞)。其他平台的部署也可参照官网的文档。
选择EMQ X Broker下载,这里选择的是最新的版本,3.0之后的版本安装文件是emqx,之前的版本是emqqt,名字稍有不同,安装过程一样,但它里面的配置有一些不同,这些后面再讲。
在这里插入图片描述
2,安装EMQ,这里要注意的是版本问题,3.0版本后如果安装出现问题,请先安装Erlang / OTP R21 +,具体安装ErLang的方法在这里我就不多赘述,可自行问度娘。
首先解压文件到emqx文件夹。打开cmd命令窗口,cd到bin路径下,接着输入emqx start(emqx是bin里面的执行文件),没有报错即可:
在这里插入图片描述
接着再次输入emqx_ctl status检查安装(记得cd 回bin目录),显示正在运行:
在这里插入图片描述
3,控制台
EMQ提供了web的控制后台,默认是18083端口,打开浏览器输入地址 http://127.0.0.1:18083,默认用户名 admin,默认密码public。可以看到EMQ的Dashboard界面(不习惯英文界面可以在Settings里面更改设置)。
控制台主要是可以看到客户端的一些连接状态,如连接数、客户端ID、订阅的消息、订阅的消息数、发布的消息及发布的消息数等等,还可以控制插件的运行。
在这里插入图片描述
如果想要更改web登录密码或添加用户(注意这里添加的是web管理用户),可以在Users设置里面添加。
在这里插入图片描述
EMQ默认设置了一些端口,如18083就是Dashboard,还有些就是:1883(MQTT 协议端口),这个是mqtt客户端连接服务器时使用的端口;8080(HTTP API 端口),这个也比较重要,在修改API时用到;8883(MQTT/SSL 端口);8083(MQTT/WebSocket 端口)。具体各部分端口的使用可参照官方文档https://docs.emqx.io/broker/v3/cn/guide.html

4,客户端连接
服务器初步搭建好了,就可以试试连接了。我用到的是MQTTBox客户端软件,这个是默认路径安装的,其它客户端也都行。下载地址http://workswithweb.com/mqttbox.html
在这里插入图片描述
接着测试连接服务器,点击Create MQTT Client创建一个连接,转到设置界面:
在这里插入图片描述
可以看到有许多的参数设置,这里的话只需填写MQTT Client Name(客户端名)、Protocol(通信方式)、Host(mqtt服务器地址,内网连接的话填127.0.0.1:1883即可,外网连接需要填写你自己的服务器公网地址)、Will – QoS(mqtt的传输方式,方式0—2)、Username和Password(用户名和密码)这里可填可不填,因为现在还没有给mqtt服务器添加用户连接认证,后面再讲怎么配置。
在这里插入图片描述
设置完后点击保存,状态图标显示绿色则表示连接成功。
在这里插入图片描述
左边是Pub发布消息界面,右边是订阅主题界面(当然你也可以多开一个客户端分别进行主题发布和订阅)。
首先先进行主题订阅,填写要订阅的主题名(具体主题名规则参考MQTT协议文档),还有mqtt的通信方式:
在这里插入图片描述
点击SUB订阅即可看到主题为‘zzz’的界面。
然后在发布对应的‘zzz’主题,点击pub发送消息。(注意发布跟订阅的通信方式要选择一样的才能进行消息传递)
在这里插入图片描述
在这里插入图片描述
可以看到订阅界面收到了订阅的消息。至此EMQ的初步搭建就完成,接下来就是对配置进行一些修改。例如添加安全认证连接、修改默认的端口等。

5,配置修改
(1)设置用户认证连接
当建立好mqtt服务器之后,默认是不开启连接认证,这是不安全的,所以我们要添加认证连接。认证方式有ClientId 认证、用户名、密码认证、MySQL 认证/访问控制等等,并且这些功能都可以在web管理界面的插件中开启(修改配置属性需在文件中修改),这里写的是用户名认证。
首先关闭匿名登录功能,打开emqx/etc文件夹,然后打开emqx.conf文件,!!!这里有一点注意的,windows操作系统用系统自带的记事本或其他自带的编辑器打开会出问题(这也是我遇到的一个坑,如果没有问题,当我没说),可以选择用Notepad++打开,找到allow_anonymous = true这里,将true改为false,即关闭匿名登录。(这里还是建议按我说的做,否则出错就要重新替换掉这个.conf文件)
在这里插入图片描述
修改完后关闭保存。接着打开cmd命令,cd 到bin目录,输入emqx stop关闭服务器,然后在emqx start打开服务器(每次修改完配置好都要重启服务器才能生效)。此时可以查看之前客户端连接的状态,可以看到已经断开了连接,则设置成功。
在这里插入图片描述
在这里插入图片描述
接着设置用户和密码,这里直接修改配置文件不行,这是因为EMQ3.0之后把许多的插件设置放到了管理监控API (REST API),REST API通过URL访问,地址:127.0.0.1:8080/api/v3/。这里的话给大家推荐一款网页访问工具Postman(老问题,安装自行度娘哈哈),通过Postman来对REST API进行操作。
在这里插入图片描述
API后台需要密码登录,所以操作之前先进入web管理界面,点击Applications,点击 + 添加用户,输入AppName保存。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建完之后view查看,可以看到有我们所需的ID和密码(注意这个APP功能必须开启它,否则rest api后台无法登陆)
在这里插入图片描述
选择Authorization,在Type下拉列表中选择Basic Auth。然后用户名跟密码就填写刚刚创建的AppID和Appsecrat(复制过去即可),最后点击send访问。
在这里插入图片描述
在这里插入图片描述

可以看到Body里面返回了一堆信息,全都是EMQ的API信息,有用的信息就是API名‘name’以及访问方式‘method’跟路径‘path’。
在这里插入图片描述
成功返回信息后就开始设置我们需要的用户名密码设置,首先先在web管理界面打开插件emqx_auth_usernam,然后在Postman地址栏中填写http://127.0.0.1:8080/api/v3/auth_username
点击Body,选择raw,输入用户名和密码,选择访问方式为POST,点击Send访问。
在这里插入图片描述
在这里插入图片描述

添加成功可以在下面看到返回code:0。
在这里插入图片描述
改变访问方式为GET,点击send就可以看到刚刚添加的用户。
在这里插入图片描述
再回到MQTT客户端,在设置里面添加你创建的用户名和密码保存,可以看到客户端又重新连接到MQTT服务器。至此MQTT服务器添加用户认证连接全部设置完。

6,其它配置修改
3.0版本开始EMQ X配置文件主要包括: etc/emqx.conf(EMQ X 消息服务器配置文件)、etc/acl.conf(EMQ X 默认ACL规则配置文件)、etc/plugins/*.conf(EMQ X 各类插件配置文件),其它配置修改包括端口修改、插件等等这里不做叙述,可参考官方的配置文档:
https://docs.emqx.io/broker/v3/cn/

至此EMQ的mqtt服务器windows部署就告一段落,如有错误,欢迎指点。

——————————————————分界线—————————————————

二,Mosquitto部署
1,Mosquitto安装:
Mosquitto是基于C语言实现的一种MQTT代理,这是一个轻量级的代理器,所以整体部署难度不大,也支持多种平台,这里我就还是选择的是windows上的部署。先说一下安装前提,Mosquitto的安装需要java环境,所以还是那句老话(度娘哈哈)。Mosquitto下载地址:https://mosquitto.org/download/,根据自己系统选择下载。
在这里插入图片描述
下载完成后直接打开运行,直接按照默认操作即可,可以自己选择安装目录(建议安装目录路径名不要有空格,否则后续安装完后配置时可能会报错),安装过程没有报错即可,如果报错,多半是java没有配置好,从头就行。
在这里插入图片描述

安装完后直接打开windows服务,找到Mosquitto Broker,启动mosquitto服务
在这里插入图片描述
现在mosquitto代理就安装好了,贼简单是吧。

2.mosquitto配置
Mosquitto没有像EMQ那样的管理界面(毕竟是轻量级的嘛),它实现了较基本的mqtt服务器功能,当然这些也都够我们用。配置文件位于安装目录下的mosquitto.conf文件中,默认情况下用默认配置服务器就可以工作,连接端口号是1883。

3,添加用户登录验证
打开mosquitto.conf文件,在文件中加入以下文本(这里只有初次创建mosquitto的需要添加)

allow_anonymous false 
password_file /mqtt/mosquitto/pwfile.example

allow_anonymous false指的是设置不允许匿名登录
/mosquitto/pwfile.example 是设置账户密码文件的位置,根据你的安装目录写,如我的安装路径是C:\ mosquitto
修改完后重启mosquitto服务,cmd到安装目录输入
mosquitto_passwd -c /mqtt/mosquitto/pwfile.example zzz
在这里插入图片描述
会有两次密码输入(密码不显示),命令中 –c 指的是清空之前所有用户在创建一个,可以不填写。
设置好用户密码之后用MQTT客户端连接
在这里插入图片描述

到此两种MQTT服务器的搭建就都可以搭建。

(第一篇博客完成,有一丢丢激动哈哈)
——————————————————————————————————————

(本文属个人经验杂谈,转载请注明出处,文章若有侵权字段,联系本人侵删。)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140206.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • POJ 1182 :食物链(并查集)[通俗易懂]

    POJ 1182 :食物链(并查集)

  • 命令行升级pip_pip升级版本命令

    命令行升级pip_pip升级版本命令查询当前pythonpip版本:pipshowpip输入python-mpipinstall–upgradepip命令升级;报错:ERROR:CouldnotinstallpackagesduetoanEnvironmentError:[WinError5]拒绝访问。:‘c:\programfiles\python37\lib\site-packages\pip-19.2.3.dist-info\entry_points.txt’Considerusin.

    2022年10月31日
  • iOS跑步软件开发-从无到有

    iOS跑步软件开发-从无到有前言经过两个多月的开发与调试,全民星跑1.0.1终于上线了,首先要感谢曲总和洛洛爱吃肉的技术支持.全民星跑作为一个以跑步计步为主要功能的软件,骚栋在开发过程中实在是遇到了不少的坑,这篇博客会分为加速仪计步和跑步计步两个模块来说明,不过有一点我想先声明,因为人力资源有限,所以可能在计步的逻辑上跟不上咕咚或者是Keep这些大厂,望各位看官见谅.????????????功能规划一个App如何统计一个人的运动?这里主要有两种方式,一种是使用陀螺仪(或是加速仪)获取手机各个方向的加速度来统计用户的

  • JAVA float转int 如何取整_int型变量n转化成float

    JAVA float转int 如何取整_int型变量n转化成float网上巴巴的说了那么多,倒是给个结论啊.搜索半天,浪费一堆时间,不知道到底哪个说的对哪个说的错.直接自己写着看吧. floata1=2.42f; floata2=2.13f; floata3=2.89f; floata4=2.99f; floata5=2.35f; floata6=35.67f; floata7=9.8f; …

    2022年10月26日
  • java 高级程序员_如何才能成为java高级程序员?「建议收藏」

    java 高级程序员_如何才能成为java高级程序员?「建议收藏」身为程序员,一旦进入技术行列,就开启了持续学习的道路,更迭迅速的互联网时代,技术自然也是一代一代的更新,在技术进阶的道路上,要不断吸收新的想法和技术知识。牛逼的人总是让人羡慕,但如何才能让自己成为牛逼的人对我们来说更重要,本文分享的是如何才能成为java高级程序员,你和java高级程序员只差这一篇鸡汤!干了这碗鸡汤,未来不可限量!1、离开舒适区,提高个人代码能力不安于现状,高级程序员一般都具有丰富…

    2022年10月28日
  • Java线程(五):Timer和TimerTask

    Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号