在云服务器(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)
输入密码时,是不会有字符显示的哦~
三、部署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容器正在运行
EMQ自带有一个前端页面,可以通过 ip:18083进入。默认账号:admin;密码:public
大功告成,emq已经完成部署,接入设备试一下吧~
四、更改默认账户密码
进入服务器控制台页面(IP:18083),默认账号:admin,密码:public。
点击ADMIN,可以在Setting中切换语言为中文。
在ADMIN->Users选项中,设置自己的新密码
五、连接数据库
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
三、设置连接权限
添加插件,在web控制页面中,选择 MANAGEMENT->Plugins,找到emqx_auth_mysql 让他running
此时,你再连接你的mqtt服务器时,你发现你会连接失败!说明你已经设置成功Mysql认证,在数据库里面添加你需要接入设备的ID、密码即可~
六、容器的开启、停止
查看:docker ps / docker images
停止:docker stop emqx
打开:docker start emqx
好了,此时你就已经拥有了自己的MQTT服务器,同时其他人未经允许也不能够轻易的访问或使用你的MQTT服务器,快去尝试吧~~
- 点赞
- 收藏
- 关注作者
评论(0)