蓝易云CDN:Ubuntu 20.04 编译安装运行 EMQX(源码方式)

在 <span style="color:red">Ubuntu 20.04</span> 上部署 EMQX,当前更稳妥的路径是走 <span style="color:red">源码编译</span>(而不是直接按新版 Ubuntu 包文档来装),因为官方安装页当前明确列出的 Ubuntu 包支持版本是 <span style="color:red">22.04 / 24.04</span>。(docs.emqx.com)
同时,EMQX 官方仓库仍提供 make 源码构建入口。(GitHub)

下面方案按 EMQX 6.1.0 给出(2025-12 发布,属于较新版本)。(GitHub)

一、版本与依赖(关键点先讲清)

EMQX 6.1.0 仓库的 .tool-versions 显示构建工具链为: <span style="color:red">Erlang 28.2-2</span>、<span style="color:red">Elixir 1.19.1-otp-28</span>、<span style="color:red">Rust 1.88.0</span>。(GitHub)

另外,asdf-erlang 的文档里有 Ubuntu 20.04 的依赖安装建议(包含 wx、OpenJDK、ncurses 等),可直接复用到 Erlang 编译前置环境。(GitHub)


二、编译安装步骤(可直接执行)🛠️

sudo apt update
sudo apt -y install git curl build-essential autoconf m4 \
libncurses5-dev libncurses-dev libwxgtk3.0-gtk3-dev libwxgtk-webview3.0-gtk3-dev \
libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev \
xsltproc fop libxml2-utils openjdk-11-jdk unzip

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc
source ~/.bashrc

asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf plugin add elixir https://github.com/asdf-vm/asdf-elixir.git
asdf plugin add rust https://github.com/code-lever/asdf-rust.git

asdf install erlang 28.2-2
asdf install elixir 1.19.1-otp-28
asdf install rust 1.88.0
asdf global erlang 28.2-2
asdf global elixir 1.19.1-otp-28
asdf global rust 1.88.0

git clone --branch 6.1.0 https://github.com/emqx/emqx.git
cd emqx
make

_build/emqx-enterprise/rel/emqx/bin/emqx start
_build/emqx-enterprise/rel/emqx/bin/emqx_ctl status

三、命令解释(逐段说明,避免踩坑)

1)系统依赖安装

  • apt update:刷新软件索引,避免装到过期包。
  • apt install ...:安装编译 Erlang/Elixir 所需库。

    • build-essential/autoconf/m4:基础编译链。
    • libncurses*:终端交互能力。
    • libwxgtk*:Erlang observer/debugger 相关组件依赖。
    • libssh-dev/unixodbc-dev:SSL、ODBC 相关编译能力。
    • openjdk-11-jdk:部分 Erlang 构建场景会用到 Java 工具链。
      这些依赖组合与 asdf-erlang 的 Ubuntu 20.04 建议项一致。(GitHub)

2)安装 asdf

  • git clone ... ~/.asdf:安装版本管理器,用来精确控制 Erlang/Elixir/Rust 版本。
  • echo ... >> ~/.bashrc:把 asdf 初始化脚本加入 shell 启动文件。
  • source ~/.bashrc:立即生效,不用退出重登。

3)安装语言插件与版本

  • asdf plugin add ...:给 asdf 增加 Erlang/Elixir/Rust 的管理能力。
  • asdf install ...:安装 EMQX 6.1.0 对应版本(按 .tool-versions 对齐)。(GitHub)
  • asdf global ...:设置全局默认版本,避免 make 时用错解释器版本。

4)拉取并编译 EMQX

  • git clone --branch 6.1.0 ...:固定版本编译,避免 master 分支变更带来不确定性。
  • make:执行 EMQX 官方仓库提供的源码构建流程。官方 README 已给出 make 与运行路径。(GitHub)

5)启动与状态验证

  • .../bin/emqx start:后台启动 EMQX。
  • .../bin/emqx_ctl status:检查节点是否正常运行(最直接的自检命令)。

四、工作流程图(Vditor/Markdown 可用)

flowchart TD
A[Ubuntu 20.04 安装系统依赖] --> B[asdf 安装与初始化]
B --> C[安装 Erlang/Elixir/Rust 指定版本]
C --> D[拉取 EMQX 6.1.0 源码]
D --> E[make 编译]
E --> F[启动 EMQX]
F --> G[emqx_ctl status 验证状态]

五、实战提醒(很关键)⚠️

  • <span style="color:red">不要直接用 Ubuntu 22/24 的 apt 包教程套到 20.04</span>,版本支持边界不同。(docs.emqx.com)
  • <span style="color:red">优先按 tag + .tool-versions 对齐工具链</span>,比“凭经验猜 OTP 版本”更稳。(GitHub)
  • make 失败,先排查是否为 <span style="color:red">Erlang/Elixir/Rust 版本不匹配</span>,这是最常见原因之一。

这套方案的核心逻辑就一句话:<span style="color:red">用源码版本锁定 + 工具链版本锁定</span>,把“编译不稳定”变成“可重复交付”。这才是生产环境该有的打法。

标签: none

添加新评论