在云服务器(Ubuntu)下安装MQTT服务器以及设置连接权限

举报
ttking 发表于 2020/10/31 22:30:27 2020/10/31
【摘要】 在物联网中,设备接入尤为重要。本文从零基础,手把手带你在云服务器-Ubuntu下搭建MQTT服务器,并更改相应配置,设置登录密码以及连接权限。

本文仅供学习参考,通过自己在云服务器搭建Mqtt服务器,更深入的了解MQTT协议。

一、效果

  • 在云服务器上安装EMQ服务器,实现MQTT服务器的搭建

  • 更改EMQ默认密码

  • 更改连接权限,进行数据库认证

二、准备工作

1.购买云服务器

本地服务器也可以。但是为了设备接入以及操作的方便,还是建议在云服务器进行。

买一个低配置的服务器就可以,比如我购买的是轻量应用服务器,CentOS Ubuntu18.04、1核、内存2G、系统盘40G。

2.开放相应的端口号、允许远程连接。

使用EMQ,至少需要开放的端口号:1883、18083、8083、8883、8084。可以在控制台里面的防火墙(安全组)设置。

同时,为了在本地通过ssh连接服务器,需要开放端口号22,同时允许远程连接。

3.连接自己的云服务器。

建议直接通过Cmd进行SSH连接(windows用户)。

即ssh root@ip (ip为你云服务器的公网ip)

输入密码时,是不会有字符显示的哦~

image.png

三、部署EMQ

以下是通过docker安装,详细内容请参考EMQ官网

1.配置docker CE

Ubuntu操作系统,其他操作系统可以自行百度配置。

连接服务器后,只需要6个命令,通过apt-get安装docker(阿里云镜像),步骤如下:

# step 1:更新

sudo apt-get update

# step 2: 安装必要的系统工具

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 3: 安装GPG证书

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# step 4: 写入软件源信息

sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# step 5: 更新

sudo apt-get -y update

# step 6:安装Docker-CE

sudo apt-get -y install docker-ce

成功安装后,输入docker -v可查看docker版本。

2.获取镜像

执行命令:$ docker pull emqx/emqx:v4.0.0

即让docker下载emq镜像,存储在硬盘中。

下载完成后,输入 docker images 可以已经拥有的镜像。

3.启动emq

执行命令:$ docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0

启动emq,成功启动后,执行 docker ps 可以看到emq容器正在运行

image.png


EMQ自带有一个前端页面,可以通过 ip:18083进入。默认账号:admin;密码:public

大功告成,emq已经完成部署,接入设备试一下吧~

image.png

四、更改默认账户密码

进入服务器控制台页面(IP:18083),默认账号:admin,密码:public。

点击ADMIN,可以在Setting中切换语言为中文。

在ADMIN->Users选项中,设置自己的新密码

image.png

五、连接数据库

1.数据库新建表

通过mysql新建一个用户表格

CREATE TABLE `mqtt_user` (

  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,

  `username` varchar(100) DEFAULT NULL,

  `password` varchar(100) DEFAULT NULL,

  `salt` varchar(35) DEFAULT NULL,

  `is_superuser` tinyint(1) DEFAULT 0,

  `created` datetime DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `mqtt_username` (`username`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2.修改配置文件

a.关闭匿名登录。

修改emq.conf(文件在安装EMQ目录的./etc中)

mqtt.allow_anonymous = false // 修改为false

b.修改默认mysql配置

mysql版本为mysql5,mysql8会有不同!

进入etc/plugins/emqx_auth_mysql.conf,修改emqx_auth_mysql.conf

## 服务器地址

auth.mysql.server = 127.0.0.1:3306



## 连接池大小

auth.mysql.pool = 8



auth.mysql.username = emqx



auth.mysql.password = public



auth.mysql.database = mqtt



auth.mysql.query_timeout = 5s

只需修改为你的msyql信息即可。(ip:port、username、password)


注意:如果你是通过docker安装,进入emq目录方式为:docker exec -ti emqx /bin/sh

退出:ctrl + P + Q

image.png


三、设置连接权限

添加插件,在web控制页面中,选择 MANAGEMENT->Plugins,找到emqx_auth_mysql 让他running

image.png

此时,你再连接你的mqtt服务器时,你发现你会连接失败!说明你已经设置成功Mysql认证,在数据库里面添加你需要接入设备的ID、密码即可~


六、容器的开启、停止

  • 查看:docker ps / docker images

  • 停止:docker stop emqx

  • 打开:docker start emqx


好了,此时你就已经拥有了自己的MQTT服务器,同时其他人未经允许也不能够轻易的访问或使用你的MQTT服务器,快去尝试吧~~


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200