目录
[1. 系统要求](#1. 系统要求)
[2. 更新系统并安装必要工具](#2. 更新系统并安装必要工具)
[安装 EMQX](#安装 EMQX)
[方式一:Yum 安装(官方推荐)](#方式一:Yum 安装(官方推荐))
[1. 添加 EMQX 官方软件源](#1. 添加 EMQX 官方软件源)
[2. 执行安装](#2. 执行安装)
[方式二:Docker 安装](#方式二:Docker 安装)
[启动与管理 EMQX 服务](#启动与管理 EMQX 服务)
[1. 访问 Dashboard](#1. 访问 Dashboard)
[2. 配置防火墙 (firewalld)](#2. 配置防火墙 (firewalld))
[1. 网页控制台验证](#1. 网页控制台验证)
[2. 客户端工具连接验证](#2. 客户端工具连接验证)
前言
在物联网(IoT)项目开发中,MQTT 协议因其轻量、高效、可靠的特点,成为了设备间通信的首选。而 EMQX 作为一款大规模分布式物联网 MQTT 消息服务器,以其高性能、高扩展性和内置的 Web 管理控制台,深受开发者喜爱。
本文将从零开始,详细介绍如何在 CentOS 7 系统上安装、部署并初步配置 EMQX,助你搭建一个稳定可靠的 MQTT 服务环境。
环境准备
1. 系统要求
在开始前,请确保你的环境满足以下基本条件:
-
操作系统: CentOS 7 系统,并能正常访问网络。
-
系统权限 : 拥有
root用户权限或具有sudo权限的普通用户。 -
硬件配置 : 最低要求 2GB 内存 和 10GB 可用磁盘空间。
2. 更新系统并安装必要工具
首先,使用 yum 更新系统软件包,并安装 yum-utils,它包含管理仓库的实用工具。
bash
sudo yum update -y
sudo yum install -y yum-utils
安装 EMQX
推荐通过 Yum 方式进行安装,这种方式能自动解决依赖问题,便于后续的升级和维护。官方也为 Docker 方式提供了便捷支持。
方式一:Yum 安装(官方推荐)
1. 添加 EMQX 官方软件源
bash
# 导入 GPG 密钥以验证包的完整性和来源
sudo rpm --import https://repos.emqx.io/gpg.pub
# 为 CentOS 7 系统添加相应的 EMQX 社区版软件源
sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repo
2. 执行安装
bash
sudo yum install emqx -y
等待命令行进度完成,EMQX 便已成功安装至系统中。
方式二:Docker 安装
如果你更习惯容器化部署,只需一条命令即可快速启动。
bash
docker run -d --name emqx \
-p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 \
-v /acowbo/emqx/data:/opt/emqx/data \
-v /acowbo/emqx/log:/opt/emqx/log \
--user root \
emqx/emqx:latest
注意 :
--user root参数是为了规避部分系统环境下的权限问题,但在安全要求较高的生产环境中,建议通过配置用户命名空间等方式来进行更细粒度的权限管理。
启动与管理 EMQX 服务
安装完成后,使用 systemctl 命令来管理 EMQX 服务,这是 CentOS 7 上最标准的方式。
bash
# 启动 EMQX 服务
sudo systemctl start emqx
# 设置 EMQX 开机自启
sudo systemctl enable emqx
# 查看服务运行状态(按 'q' 键退出查看)
sudo systemctl status emqx
当终端输出中出现 active (running) 字样时,代表服务已成功启动并正在运行。

其他常用的管理命令:
bash
sudo systemctl stop emqx # 停止服务
sudo systemctl restart emqx # 重启服务
访问仪表盘并配置防火墙
1. 访问 Dashboard
EMQX 默认提供了一个功能强大的 Web 管理控制台(Dashboard),方便你对服务器进行可视化监控与配置。
在浏览器中访问:http://<你的服务器IP地址>:18083
-
默认用户名 :
admin -
默认密码 :
public

2. 配置防火墙 (firewalld)
为保证外部客户端及浏览器能正常访问 EMQX 服务,需要在系统防火墙中开放相应端口。
bash
# 逐个开放 EMQX 所需的主要服务端口
sudo firewall-cmd --permanent --add-port=1883/tcp # MQTT TCP 标准连接
sudo firewall-cmd --permanent --add-port=8883/tcp # MQTT TCP/SSL 加密连接
sudo firewall-cmd --permanent --add-port=8083/tcp # MQTT WebSocket 连接
sudo firewall-cmd --permanent --add-port=8084/tcp # MQTT WebSocket/SSL 加密连接
sudo firewall-cmd --permanent --add-port=18083/tcp # Dashboard 管理控制台
# 重新加载防火墙规则,使上述配置立即生效
sudo firewall-cmd --reload
各端口及其功能说明如下:
| 端口 | 协议与核心用途 | 是否加密 |
|---|---|---|
| 1883 | TCP 端口,用于传统 MQTT 设备与服务端通信 | 否 |
| 8883 | TCP 端口,标准 MQTT 通信的加密升级版 | 是 (TLS/SSL) |
| 8083 | WebSocket 端口,用于 Web 应用或小程序连接 | 否 |
| 8084 | WebSocket 端口,Web 应用安全加密连接 | 是 (TLS/SSL) |
| 18083 | HTTP 端口,专用于 EMQX Dashboard 管理控制台 | 否 |
验证安装是否成功
1. 网页控制台验证
成功登录 Dashboard 后,若能正常看到集群状态、连接数、消息吞吐量等运行指标,即说明 EMQX 核心功能运行正常。
2. 客户端工具连接验证
你可以使用官方出品的 MQTTX 客户端,或 Dashboard 自带的 "问题分析 " → "WebSocket 客户端 " 工具来测试连接。填入你的服务器 IP 和端口 1883,点击连接。若连接成功,则宣告 MQTT 服务已完整就绪。
后续重要的安全配置建议
⚠️ 安全预警 :EMQX 的默认配置开启了匿名认证。这意味着任何知道你的服务器 IP 和 MQTT 端口的人或设备都可以直接连接并发布/订阅消息,这在生产环境中是致命风险。请务必在投入使用前完成以下基础安全设置。
-
修改 Dashboard 管理员密码 :首次登录 Dashboard 后,请立即进入"系统设置"修改
admin用户的默认密码。 -
配置客户端认证 :在 Dashboard 的 "访问控制 " → "客户端认证" 中,创建认证规则。你可以选择基于用户名/密码、客户端ID等多种方式,来阻止非法的匿名连接。
-
配置客户端授权(ACL) :在 "访问控制 " → "客户端授权" 中,你可以精细地划定不同客户端的发布(Publish)和订阅(Subscribe)权限在不同的主题(Topic)上,实现权限最小化。
常见问题与排错思路
-
无法访问 Dashboard 18083 页面 :检查防火墙端口是否开放,确认 EMQX 服务状态是否为
active (running)。 -
MQTT 客户端连接失败 :首先检查 MQTT 端口
1883的防火墙配置。若已配置认证,请检查客户端是否传递了正确的凭证。 -
服务启动后立即退出 :可能是系统内存不足(不满足2GB最低要求),或有其他进程占用了相同端口。可使用
sudo journalctl -u emqx命令查看详细日志进行排查。
总结
至此,你已经在 CentOS 7 系统上成功地完成了一台 EMQX MQTT 消息服务器的安装、基础配置和功能验证。你已经拥有了一个高性能的物联网消息中间件,接下来可以根据你的具体业务场景,深入探索它的规则引擎、数据桥接、集群架构等高级特性了。
希望这篇手把手的教程对你有帮助!如果在安装过程中遇到问题,欢迎在评论区留言交流。