EMQX 安装完成后会创建一些目录用来存放运行文件和配置文件,存储数据以及记录日志。
不同安装方式得到的文件和目录位置有所不同,具体如下:
Docker 容器使用压缩包解压安装的方式,软件安装于 /opt/emqx 目录中
;这里介绍一下其中的部分目录,其中包含的文件和子文件夹。
注意:
EMQX 的配置项存储在 etc 和 data/configs 目录下,二者的主要区别是 etc 目录存储只读的配置文件,用户通过 Dashboard 和 REST API 提交的配置将被保存到 data/configs 目录下,并支持在运行时进行热更新。
EMQX 读取这些配置并将其合并转化为 Erlang 原生配置文件格式,以便在运行时应用这些配置。
配置文件手册:https://www.emqx.io/docs/zh/v5.1/configuration/configuration.html
后面通过 Docker Compose启动时,发现报错,会提示我们缺少一些文件等问题。所以,我们提前将下载压缩包中需要的文件复制到我们映射的数据卷中。文件在压缩包里面的 /opt/emqx/中。
通过我再三的试错摸索,emqx-5.1.6版本需要提前把下面几个文件复制到我们对应的数据卷中。
└── emqx
├── data
│ └── configs
├── etc
├── acl.conf
├── certs
│ ├── cacert.pem
│ ├── cert.pem
│ ├── client-cert.pem
│ ├── client-key.pem
│ ├── key.pem
│ └── README
├── emqx.conf
└── vm.args
1)在任意目录创建一个 mqtt_emqx5文件夹和数据卷所挂载的目录。
[root@centos7 ~]# mkdir /usr/local/src/mqtt_emqx5
[root@centos7 ~]# cd /usr/local/src/mqtt_emqx5
# 数据卷
[root@centos7 mqtt_emqx5]# mkdir -p ./emqx/data
[root@centos7 mqtt_emqx5]# mkdir -p ./emqx/etc
[root@centos7 mqtt_emqx5]# mkdir -p ./emqx/log
2)将上面压缩包中提到的那几个文件复制到我们的数据卷目录中
# 复制完之后,给挂载目录赋予权限
[root@centos7 mqtt_emqx5]# chmod 777 -R ./emqx/
3)创建并编写docker-compose.yaml
[root@centos7 mqtt_emqx5]# cat docker-compose.yaml
version: '3.7'
services:
emqx5_s1:
image: "emqx/emqx:5.1.6"
container_name: "emqx5_s1"
environment:
- "EMQX_NAME=emqx5_s1"
- "EMQX_HOST=127.0.0.1"
ports:
- 1883:1883
- 8083:8083
- 8084:8084
- 8883:8883
- 18083:18083
volumes:
- $PWD/emqx/etc:/opt/emqx/etc
- $PWD/emqx/data:/opt/emqx/data
- $PWD/emqx/log:/opt/emqx/log
#restart: always
[root@centos7 mqtt_emqx5]#
EMQX默认开启的MQTT服务各个端口说明:
最终 mqtt_emqx5文件夹中的内容如下:
[root@centos7 mqtt_emqx5]# tree
.
├── docker-compose.yaml
└── emqx
├── data
│ └── configs
├── etc
│ ├── acl.conf
│ ├── certs
│ │ ├── cacert.pem
│ │ ├── cert.pem
│ │ ├── client-cert.pem
│ │ ├── client-key.pem
│ │ ├── key.pem
│ │ └── README
│ ├── emqx.conf
│ └── vm.args
└── log
6 directories, 10 files
一般进入到 docker-compose.yml的上下文目录中,执行命令:
[root@centos7 mqtt_emqx5]# docker-compose up
Starting emqx5_s1 ... done
Attaching to emqx5_s1
emqx5_s1 | WARNING: Default (insecure) Erlang cookie is in use.
emqx5_s1 | WARNING: Configure node.cookie in /opt/emqx/etc/emqx.conf or override from environment variable EMQX_NODE__COOKIE
emqx5_s1 | WARNING: NOTE: Use the same cookie for all nodes in the cluster.
emqx5_s1 | EMQX_RPC__PORT_DISCOVERY [rpc.port_discovery]: manual
emqx5_s1 | EMQX_NODE__NAME [node.name]: [email protected]
emqx5_s1 | Listener ssl:default on 0.0.0.0:8883 started.
emqx5_s1 | Listener tcp:default on 0.0.0.0:1883 started.
emqx5_s1 | Listener ws:default on 0.0.0.0:8083 started.
emqx5_s1 | Listener wss:default on 0.0.0.0:8084 started.
emqx5_s1 | Listener http:dashboard on :18083 started.
emqx5_s1 | EMQX 5.1.6 is running now!
通过浏览器就可以访问 ip:18083端口(默认的用户名是admin,密码为public),登录成功后会打开一个管理控制台网页。主界面如下:
官方下载,傻瓜式安装:https://mqttx.app/zh
新建MQTT服务端连接。
MQTT 协议根据主题来转发消息。主题被用来标识和区分不同的消息,它是 MQTT 消息路由的基础。
主题通过 / 来区分层级,类似于 URL 路径。MQTT 主题支持以下两种通配符:+ 和 #。
注意:
通配符主题只能用于订阅,不能用于发布。
关于 MQTT 主题的更多详情,请参阅文章通过案例理解 MQTT 主题与通配符:https://www.emqx.com/zh/blog/advanced-features-of-mqtt-topics
MQTTX客户端的更多使用,查看官方文档。
– 求知若饥,虚心若愚。