一、引言
随着网络的不断发展,万物互联正成为现实,但是由于受限设备和低带宽、高延迟或不可靠的网络,影响着物联网的发展的。为了解决这些问题,IBM工程师在1999年发布MQTT协议,它是基于二进制消息的发布/订阅编程模式的消息协议,由于其优越的表现,在物联网方方面面都有着广泛应用,现在已经成为OASIS规范。
二、选择开源的MQTT 服务器
自从MQTT协议发布以来,随着时间发展,出现了许多MQTT服务器,其中比较有名的开源MQTT服务器主要有以下几个:
①、Eclipse Mosquitto:这是一个使用 C 语言实现的 MQTT 服务器,它主要是基于MQTT协议的5.0、3.1.1和3.1版。
②、EMQ X:这是一个使用 Erlang 语言开发的 MQTT 服务器,它支持MQTT-SN、 CoAP、LwM2M 等IoT 协议,使用比较广泛,我们选择的安装的也是这种。
③、Mosca:这是一个使用 Node.JS 开发的 MQTT 服务器,其官网:Mosca by mcollina。
④、VerneMQ:这是一个使用 Erlang 开发的 MQTT 服务器。
三、EMQX下载
1、EMQX中文官网:https://www.emqx.com/zh
2、在https://www.emqx.com/zh/server-estimate 查看配置估算 ,看下自己服务器配置是否足够。
3、去到https://www.emqx.com/zh/try?product=broker下载
4、选择ZIP安装方式和CPU架构后
下载方法一:直接在Centos服务器上执行下载命令
wget https://www.emqx.com/zh/downloads/broker/4.4.3/emqx-4.4.3-otp24.1.5-3-el8-amd64.zip
下载方法二:点击“立即下载”,完成EMQX的ZIP下载,然后再上传到Centos服务器上。
四、EMQX安装
1、由于EMQX是用Erlang语言编写的,所以,在Linux下安装时,需要先安装Erlang依赖项:
sudo yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
2、将ZIP包解压
unzip emqx-4.4.3-otp24.1.5-3-el8-amd64.zip
3、运行
./bin/emqx start
4、查看是否运行状态:
./bin/emqx_ctl status
5、如果启动过程提示“Please make sure openssl-1.1.1 (libcrypto) and libncurses are installed. ”错误,可以按如下步骤安装 openssl1.1.1依赖包后重新启动即可。
安装并编译: openssl
cd /usr/local/src/
下载wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar xf openssl-1.1.1d.tar.gz
编译
cd openssl-1.1.1d
./config
make && make install
安装完成后 路径:/usr/local/bin
五、EMQX命令
如果没设置EQMX的bin路径,则进入解压的ZIP的路径:
# 启动emqx
./bin/emqx start
# 停止emqx
./bin/emqx stop
# 重启emqx
./bin/emqx restart
# 检查运行状态
./bin/emqx_ctl status
# 服务卸载
./bin/emqx uninstall
六、EMQX相关
1、EMQX目录结构:目录结构 | EMQX 文档
不同安装方式得到的 EMQX 其目录结构会有所不同,具体如下:
描述 | 使用 ZIP 压缩包安装 | 使用二进制包安装 | Homebrew(MacOS)安装 |
可执行文件目录 |
|
|
|
数据文件 |
|
|
|
Erlang 虚拟机文件 |
|
|
|
配置文件目录 |
|
|
|
依赖项目录 |
|
|
|
日志文件 |
|
|
|
启动相关的脚本、schema 文件 |
|
|
|
以上目录中,用户经常接触与使用的是 bin
、etc
、data
、log
目录。
etc 目录
EMQX 通过 etc
目录下配置文件进行设置,主要配置文件包括:
配置文件 | 说明 |
emqx.conf | EMQX 配置文件 |
acl.conf | EMQX 默认 ACL 规则配置文件 |
plugins/*.conf | EMQX 各类插件配置文件 |
certs | EMQX SSL 证书文件 |
EMQX 具体的配置内容可以查看 配置项。
data 目录
EMQX 将运行数据存储在 data
目录下,主要的文件包括:
configs/app.*.config
EMQX 读取 etc/emqx.conf
和 etc/plugins/*.conf
中的配置后,转换为 Erlang 原生配置文件格式,并在运行时读取其中的配置。
2、EMQX配置说明:配置说明 | EMQX 文档
EMQX 的配置文件通常以 .conf
作为后缀名,你可以在 etc
目录找到这些配置文件,主要配置文件包括:
配置文件 | 说明 |
etc/emqx.conf | EMQX 配置文件 |
etc/acl.conf | EMQX 默认 ACL 规则配置文件 |
etc/plugins/*.conf | EMQX 扩展插件配置文件 |
需要注意的是,安装方式不同 etc
目录所处的路径可能不同,具体请参见 目录结构。
3、EMQ X 默认开启的 MQTT 服务 TCP 端口(需要在防火墙中添加规则,放行以下端口)
端口 | 说明 |
1883 | MQTT 协议端口 |
8883 | MQTT/SSL 端口 |
8083 | MQTT/WebSocket 端口 |
8084 | MQTT/WebSocket/SSL 端口 |
8081 | 管理 API 端口 |
18083 | Dashboard 端口 |