# 安装

EMQX 目前支持的操作系统:

  • EL7 (RedHat 7, CentOS 7)
  • EL8 (RedHat 8, RockyLinux 8, AmazonLinux 2022)
  • Raspbian 10
  • Debian 9
  • Debian 10
  • Ubuntu 16.04
  • Ubuntu 18.04
  • Ubuntu 20.04
  • macOS 10
  • macOS 11
  • Windows Server 2019

# 通过 Docker 运行 (包含简单的 docker-compose 集群)

# 运行单个容器

  1. 获取 docker 镜像

    docker pull emqx/emqx:5.0.9
    
    1
  2. 启动 docker 容器

    docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:5.0.9
    
    1

# 使用 docker-compose 创建简单的 static 集群

  1. 创建 docker-compose.yaml 文件

    version: '3'
    
    services:
      emqx1:
        image: emqx/emqx:5.0.9
        container_name: emqx1
        environment:
        - "EMQX_NODE_NAME=emqx@node1.emqx.io"
        - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
        - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]"
        healthcheck:
          test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
          interval: 5s
          timeout: 25s
          retries: 5
        networks:
          emqx-bridge:
            aliases:
            - node1.emqx.io
    
      emqx2:
        image: emqx/emqx:5.0.9
        environment:
        - "EMQX_NODE_NAME=emqx@node2.emqx.io"
        - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
        - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]"
        healthcheck:
          test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
          interval: 5s
          timeout: 25s
          retries: 5
        networks:
          emqx-bridge:
            aliases:
            - node2.emqx.io
    
    networks:
      emqx-bridge:
        driver: bridge
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
  2. 启动 docker-compose 集群

    docker-compose up -d
    
    1
  3. 查看集群

    $ docker exec -it emqx1 sh -c "emqx_ctl cluster status"
    Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'],
                      stopped_nodes => []}
    
    1
    2
    3

更多关于 EMQX Docker 的信息请查看 Docker Hub (opens new window)Github (opens new window)

# RPM/DEB包安装 (Linux)

注意

EMQX 默认以节点名称 emqx@127.0.0.1 启动,该名称是内置数据库的一部分。 如需更改名称,请先清除数据库目录 /var/lib/emqx/data/mnesia,然后再更改为其他名称启动。

  1. 访问 emqx.io (opens new window)Github (opens new window) 下载 EMQX 的二进制包。
  1. 安装 EMQX,将下面的路径更改为您下载 EMQX 软件包的路径。

    • RPM 包 (RedHat/CentOS/RockyLinux/AmazonLinux):

      sudo yum install emqx-full-package-name.rpm
      
      1
    • DEB 包 (Ubuntu/Debian/Raspbian):

      sudo apt install ./emqx-full-package-name.deb
      
      1
  2. 启动 EMQX

    • 直接启动

      sudo su - emqx
      emqx start
      emqx_ctl status
      
      1
      2
      3
    • systemctl 启动

      sudo systemctl start emqx
      
      1
  3. 停止 EMQX Broker

    $ emqx stop
    ok
    
    1
    2
  4. 卸载 EMQX Broker

    • DEB 包:

      sudo apt remove --purge emqx
      
      1
    • RPM 包:

      sudo yum remove emqx
      
      1

# tgz 压缩包安装(Linux、macOS、Windows)

注意

tar.gz 包适用于测试和热更,如果不知道如何手动安装所有可能的运行时依赖,请勿在生产环境中使用。

注意

macOS 上 EMQX 数字签名工作还未完成,使用 tgz 压缩包安装启动时可能会被 Gatekeeper 保护机制 (opens new window) 拦截。

当你在启动时遇到 「无法打开“erl”,因为无法验证开发者」 或 「无法打开“erlang_jq_port”,因为无法验证开发者」 类似的弹框提示时,请按以下方式处理:

  • 方法一:到 macOS 安全性与隐私 设置中勾选允许从 任何来源 下载的 App,重新启动 EMQX

  • 方法二:手动移除 tgz 压缩包或文件夹 Gatekeeper 相关 com.apple.quarantine 附加属性:

    xattr -d com.apple.quarantine emqx-full-package-name.tar.gz
    # or
    xattr -r -d com.apple.quarantine ./emqx
    
    1
    2
    3

使用此操作时请校验文件 SHA256 确保安装包完整性,以免带来额外的安全风险。

  1. 访问 emqx.io (opens new window)Github (opens new window) 下载要安装的 EMQX 的 tar.gz 包。
  1. 解压程序包

    tar -zxf emqx-full-package-name.tar.gz
    
    1
  2. 启动 EMQX Broker

    cd ./emqx
    ./bin/emqx start
    ./bin/emqx_ctl status
    
    1
    2
    3
  3. 停止 EMQX Broker

    ./bin/emqx stop
    
    1
  4. 卸载 EMQX Broker

    直接删除 EMQX 目录即可

# 通过 Helm 安装并集群 (K8S、K3S)

  1. 添加 helm 仓库
helm repo add emqx https://repos.emqx.io/charts
helm repo update
1
2
  1. 查询 EMQX Broker
$ helm search repo emqx
NAME         CHART VERSION APP VERSION DESCRIPTION
emqx/emqx    v4.0.0        v4.0.0      A Helm chart for EMQX
emqx/emqx-ee v4.0.0        v4.0.0      A Helm chart for EMQX
emqx/kuiper  0.1.1         0.1.1       A lightweight IoT edge analytic software
1
2
3
4
5
  1. 启动 EMQX 集群
helm install my-emqx emqx/emqx
1
  1. 查看 EMQX 集群情况
$ kubectl get pods
NAME       READY  STATUS             RESTARTS  AGE
my-emqx-0  1/1     Running   0          56s
my-emqx-1  1/1     Running   0          40s
my-emqx-2  1/1     Running   0          21s

$ kubectl exec -it my-emqx-0 -- emqx_ctl cluster status
Cluster status: #{running_nodes =>
                      ['my-emqx@my-emqx-0.my-emqx-headless.default.svc.cluster.local',
                       'my-emqx@my-emqx-1.my-emqx-headless.default.svc.cluster.local',
                       'my-emqx@my-emqx-2.my-emqx-headless.default.svc.cluster.local'],
                  stopped_nodes => []}
1
2
3
4
5
6
7
8
9
10
11
12

# 源码编译安装

  1. 获取源码
git clone https://github.com/emqx/emqx.git
1
  1. 切换到最近的 Tag
cd emqx
git checkout $(git describe --abbrev=0 --tags)
1
2
  1. 编译并运行
make run
1