前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MQTT服务器部署

MQTT服务器部署

作者头像
全栈程序员站长
发布2022-08-24 13:54:07
6.5K0
发布2022-08-24 13:54:07
举报
文章被收录于专栏:全栈程序员必看

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

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的需要添加)

代码语言:javascript
复制
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服务器的搭建就都可以搭建。

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月8,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MQTT服务器部署
    • 一、EMQ搭建
    相关产品与服务
    云服务器
    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档