安装部署
概览
本章将向您介绍如何下载和安装 EMQX,运行 EMQX 所需满足的最低硬件规则,以及安装完成后 EMQX 所在目录的文件夹结构,以便后续的配置和维护操作。
安装环境
EMQX 所使用的 Erlang 虚拟机依赖于系统区域设置来启用各种功能的 Unicode 支持,包括交互式 Erlang Shell 中的文件名
(opens new window)和终端 IO
(opens new window)。
如果您使用的是 Linux 操作系统,在启动 EMQX 前建议确认系统环境中已启用了 UTF-8 区域设置。关于如何在不同平台上启用 UTF-8 区域设置,点击下列标签:
使用 cloud-init
(opens new window) 配置启用 UTF-8 locale 区域设置:
cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/99_locale.cfg
#cloud-config
locale: C.utf8
EOF
通过 systemd,通常可以使用 localectl 命令启用 UTF-8 locale 区域设置:
sudo localectl set-locale LANG=C.UTF-8
UTF-8 区域设置可以通过两种方式启用。
- 通过 systemd,通常使用
localectl
(opens new window) 命令启用:
sudo localectl set-locale LANG=C.UTF-8
- 否则,使用
update-locale
(opens new window) 命令启用:
sudo update-locale LANG=C.UTF-8
可以使用 update-locale
(opens new window) 命令启用:
sudo update-locale LANG=C.UTF-8
下载
在每个 EMQX 版本中,我们都会针对不同的操作系统与平台发布不同的安装包选项,您可点击以下链接下载:
此外,您还可在我们的 GitHub Release 页面
(opens new window) 下载 alpha、beta、rc 等版本的安装包。
提示
除了私有部署外,我们也提供了全托管的 EMQX Cloud 服务,您只需几步注册即可轻松体验 EMQX 提供的 MQTT 消息服务,欢迎前往 EMQX Cloud 门户
(opens new window)页面免费试用。
支持的操作系统与平台
EMQX 可以跨平台的在多种操作系统和硬件平台上运行,以下是支持情况:
| 操作系统 | 支持版本 | x86_64/amd64 | arm64 |
|---|---|---|---|
| Ubuntu | Ubuntu 18.04 | ||
| Ubuntu 20.04 | |||
| Ubuntu 22.04 | 是 | 是 | |
| Debian | Debian 10 | ||
| Debian 11 | 是 | 是 | |
| CentOS/RHEL | CentOS 7 | ||
| CentOS 8 | 是 | 是 | |
| Amazon Linux | - | 是 | 是 |
| macOS | macOS 11 | ||
| macOS 12 | 是 | 是 | |
| Windows | - | 是 | 是 |
硬件规格
EMQX 的硬件要求根据客户端连接数、消息消息速率和消息大小以及启用的功能而异。 下面的最低硬件规格适用于运行 EMQX 并进行简单的功能验证,推荐配置能够支撑 10 万客户端连接以及每秒 10 万条消息吞吐。
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 节点数 | 1 | 2 |
| CPU | 1 核 | 16 核 |
| 内存 | 512 MB | 32 GB |
| 磁盘空间 | 1 GB | 50 GB |
提示
在生产环境中,您可通过我们的配置估算计算器
(opens new window)来计算不同连接与消息吞吐下的推荐硬件规格。
文件和目录
EMQX 安装完成后会创建一些目录用来存放运行文件和配置文件,存储数据以及记录日志。
不同安装方式得到的文件和目录位置有所不同,具体如下:
| 目录 | 描述 | 压缩包解压安装 | 二进制包安装 |
|---|---|---|---|
etc |
配置文件目录 | ./etc |
/etc/emqx |
data |
数据文件 | ./data |
/var/lib/emqx |
log |
日志文件 | ./log |
/var/log/emqx |
releases |
启动相关的脚本 | ./releases |
/usr/lib/emqx/releases |
bin |
可执行文件目录 | ./bin |
/usr/lib/emqx/bin |
lib |
Erlang 代码 | ./lib |
/usr/lib/emqx/lib |
erts-__ |
Erlang 虚拟机文件 | ./erts- |
/usr/lib/emqx/erts-* |
plugins |
插件 | ./plugins |
/usr/lib/emqx/plugins |
提示
- 压缩包解压安装时,目录相对于软件所在目录;
- Docker 容器使用压缩包解压安装的方式,软件安装于
/opt/emqx目录中; data、log、plugins目录可以通过配置文件设置,建议将data目录挂载至高性能磁盘以获得更好的性能。但对于属于同一集群的节点,data目录的配置应该相同。更多关于集群的介绍,见集群章节。
接下来我们将详细介绍下其中的部分目录,其中包含的文件和子文件夹。
| 目录 | 描述 | 权限 | 目录文件 |
|---|---|---|---|
| bin | 存放可执行文件 | 读 | emqx、emqx.cmd:EMQX 的可执行文件,具体使用可以查看 基本命令。 |
emqx_ctl、emqx_ctl.cmd:EMQX 管理命令的可执行文件,具体使用可以查看 管理命令 CLI。
etc| 存放配置文件| 读| emqx.conf:EMQX 的主配置文件,默认包含常用的配置项。
emqx-example-en.conf:EMQX 示例配置文件,包含所有可选的配置项。
acl.conf:默认 ACL 规则。
vm.args:Erlang 虚拟机的运行参数。
certs/:X.509 的密钥和证书文件。这些文件被用于 EMQX 的 SSL/TLS 监听器;当要与和外部系统集成时,也可用于建立 SSL/TLS 连接。
data| 存放 EMQX 的运行数据| 写| authz:Dashboard 或 REST API 上传的 基于文件进行授权 规则内容。
certs:Dashboard 或 REST API 上传的证书。
configs:启动时生成的配置文件,或者从 Dashboard/REST API/CLI 进行功能设置时覆盖的配置文件。
mnesia:内置数据库目录,用于存储自身运行数据,例如告警记录、客户端认证与权限数据、Dashboard 用户信息等数据,一旦删除该目录,所有业务数据将丢失。
— 可包含以节点命名的子目录,如 emqx@127.0.0.1;如节点被重新命名,应手动将旧的目录删除或移走。
— 可通过 emqx_ctl mnesia 命令查询 EMQX 中 Mnesia 数据库的系统信息,具体请查看 管理命令 CLI。
patches:用于存储热补丁 .beam 文件,用于补丁修复。
trace: 在线日志追踪文件目录。
在生产环境中,建议定期备份该文件夹下除 trace 之外的所有目录。
log| 日志文件| 读| emqx.log.___:EMQX 运行时产生的日志文件,具体请查看日志与追踪。
erlang.log._:当以 emqx start 方式后台启动 EMQX 时,控制台日志的副本文件。
提示
EMQX 的配置项存储在 etc 和 data/configs 目录下,二者的主要区别是 etc 目录存储只读 的配置文件,用户通过 Dashboard 和 REST API 提交的配置将被保存到 data/configs 目录下,并支持在运行时进行热更新。
etc/emqx.confdata/configs/cluster.hocon
EMQX 读取这些配置并将其合并转化为 Erlang 原生配置文件格式,以便在运行时应用这些配置。
