跳到主要内容

MQTT云服务器-Linux

本教程介绍的是如何在云服务器(linux)上搭建 MQTT 服务器和 MySQL 数据库。


配置云服务器​

1. 注册登录​

我们可以选择在阿里云或者华为云等直接购买 MQTT 服务器及 MySQL 数据库。这里介绍的是使用阿里云服务器来搭建自己的 MQTT 服务器和 MySQL 数据库。

首先可以进入阿里云官网https://www.aliyun.com/账号并登录,云服务器需要进行实名制验证才能进行购买。

2. 购买云服务器​

选择产品基础服务的弹性云服务器 ECS。

按照需求选择合适的云服务器规格。

镜像选择 Linux 下-Ubuntu 系统,这里选择的镜像是公共镜像 Ubuntu 18.04 64 位。然后点击立即购买并完成支付。

根据提示配置登录密码,这里的密码用于远程登录云服务器。

3. 远程登录云服务器​

在完成购买后,点击控制台进入阿里云服务器的管理控制台。

在控制台找到已开通的云产品,再点击云服务器 ECS 进入云服务器控制台。

选择远程登录即可登录云服务器。建议可以使用第三方软件如 Xshell、FinalShell 进行 SSH 方式登录。

搭建 MQTT 服务器​

1. 下载​

这里介绍的是使用 EMQ 开源项目来搭建自己的 MQTT 服务器,可在EMQ 官网找到对应的下载链接。这里需要安装的版本是与云服务器系统一致的 emqx-ubuntu18.04- v4.2.6.zip,下载链接为https://www.emqx.cn/downloads/broker/v4.2.6/emqx-ubuntu18.04-4.2.6-x86_64.zip.

复制下载链接后,在云服务器输入命令wget +下载链接,如下所示。

wget https://www.emqx.cn/downloads/broker/v4.2.6/emqx-ubuntu18.04-4.2.6-x86_64.zip

2. 解压​

解压前进行更新升级并获取解压软件。

输入命令sudo apt-get update进行更新。

sudo apt-get update

输入命令sudo apt-get upgrade进行升级。

sudo apt-get upgrade

输入命令sudo apt-get install unzip获取解压软件。

sudo apt-get install unzip

输入命令unzip +下载文件名解压下载的 EMQ 软件包。

unzip ubuntu18_04

3.启动​

本例安装的版本为 emqx,因此输入cd emqx进入 EMQ 的安装目录。

cd emqx

移到 emqx 的文件夹后,输入./bin/emqx start启动 EMQ X 服务。

./bin/emqx start

4. 运行状态​

我们可以输入./bin/emqx_ctl status查询 EMQ X 服务器的运行状态。

./bin/emqx_ctl status

如果服务器运行状态正常,会返回如下命令:

5. 相关指令​

EMQ X 停止服务的指令为./bin/emqx stop。

./bin/emqx stop

6. 端口配置​

EMQ X 服务占用的 TCP 端口如下图所示。

我们需要对云服务器的防火墙添加规则。返回阿里云的云服务控制台,选择安全组标签。

点击配置规则。

之后在入方向规则的页面点击添加规则。

在这里我们需要添加 EMQ X 所占用的 TCP 端口,点击确定保存。

7. Web 管理控制台(Dashboard)​

EMQ X 服务启动并配置好服务器防火墙后,用户可以通过 Web 管理控制台(Dashboard)查看 MQTT 服务器状态。在浏览器打开输入服务器公网 IP:18083进行登录,默认用户名 admin,密码 public。例如云服务器的 IP 地址为 114.116.16.xxx,则输入 114.116.16.xxx:18083。

在 User 界面可以更改默认用户密码以及添加用户。

在 Clinents 界面可以查看当前服务器的连接状态。

搭建 MySQL 数据库​

1. 安装 MySQL 数据库​

在 Ubantu 18.04 中,我们只需要输入 apt-get 命令更新升级服务器上的包索引并安装默认包,如下所示。

更新

sudo apt-get update

升级

sudo apt-get upgrade

获取安装 MySQL 服务

sudo apt-get install mysql-server

2. 配置 MySQL​

输入sudo mysql_secure_installation进行 MySQL 的配置。

sudo mysql_secure_installation

设置密码,输入 y|Y 确认。这个密码请务必牢记,通过 root 用户访问 MySQL 数据库都需要使用到这个密码。

这里配置较多仅供参考。

3. 运行状态​

配置完成后,通过输入命令systemctl status mysql.service可以检查 MySQL 的运行状态。返回命令如下说明 MySQL 服务的运行是正常的。

systemctl status mysql.service

4. 端口配置​

MySQL 的默认端口号为 3306,我们需要为 MySQL 添加入方向规则,具体步骤可以参考第三步搭建 MQTT 服务器的端口配置。

5. 开启远程访问权限​

MySQL 默认只允许本地 localhost 登录,所以需要开启远程访问权限。

第一步是输入命令行sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf进入 MySQL 的配置文档。如果是 MySQL5.7 之前的版本则是输入sudo vim /etc/mysql/my.cnf。弹出地址配置界面,按Insert,将配置内容里面的bind-address = 127.0.0.1修改为bind-address = 0.0.0.0,修改完之后,按退出键Esc,然后输入命令:wq进行保存。

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

第二步是输入命令sudo mysql -uroot -p,输入刚刚配置的 root 用户密码进入 MySQL 的命令行界面。

执行以下命令获取远程访问权限。

进入数据库

use mysql;

创建用户

CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';

授权

GRANT ALL ON *.* TO 'root'@'%';

刷新权限

FLUSH PRIVILEGES;

通过输入命令select host, user from user;,可以看到 root 用户的 host 变成了%,说明已经修改成功。

select host, user from user;

输入命令quit退出 MySQL 命令界面。

quit

退出 MySQL 的命令行界面后,输入命令/etc/init.d/mysql restart重启 MySQL 服务,使配置生效。

/etc/init.d/mysql restart

6. 远程访问数据库​

远程访问数据库的可视化工具有很多,像 MySQL Workbench、Navicat、HeidiSQL 等。这里使用的是 MySQL-Front 作为例子。

打开 MySQL-Front -> 文件 -> 连接管理 -> 添加,在弹出的窗口填写 MySQL 服务器信息。主机填写云服务器的公网 IP 地址,端口默认为 3306。用户和密码为 MySQL 数据库的 root 用户和密码。设置完之后点击确定,即可远程访问 MySQL 数据库。