Linux下构建MQTT服务器的指南

一、引言

        随着网络的不断发展,万物互联正成为现实,但是由于受限设备和低带宽、高延迟或不可靠的网络,影响着物联网的发展的。为了解决这些问题,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)安装
可执行文件目录 ./bin /usr/lib/emqx/bin /usr/local/bin
数据文件 ./data /var/lib/emqx/data /usr/local/Cellar/emqx/*/data
Erlang 虚拟机文件 ./erts-* /usr/lib/emqx/erts-* /usr/local/Cellar/emqx/*/erts-
配置文件目录 ./etc /etc/emqx/etc /usr/local/Cellar/emqx/*/etc
依赖项目录 ./lib /usr/lib/emqx/lib /usr/local/Cellar/emqx/*/lib
日志文件 ./log /var/log/emqx /usr/local/Cellar/emqx/*/log
启动相关的脚本、schema 文件 ./releases /usr/lib/emqx/releases /usr/local/Cellar/emqx/*/releases

以上目录中,用户经常接触与使用的是 binetcdatalog 目录。

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 端口

物联沃分享整理
物联沃-IOTWORD物联网 » Linux下构建MQTT服务器的指南

发表评论