跳到主要内容

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 数据库。