CentOS 7 完整部署开源 MQTT 服务器 EMQX 指南(2025实战版)

目录

前言

环境准备

[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 端口的人或设备都可以直接连接并发布/订阅消息,这在生产环境中是致命风险。请务必在投入使用前完成以下基础安全设置。

  1. 修改 Dashboard 管理员密码 :首次登录 Dashboard 后,请立即进入"系统设置"修改 admin 用户的默认密码。

  2. 配置客户端认证 :在 Dashboard 的 "访问控制 " → "客户端认证" 中,创建认证规则。你可以选择基于用户名/密码、客户端ID等多种方式,来阻止非法的匿名连接。

  3. 配置客户端授权(ACL) :在 "访问控制 " → "客户端授权" 中,你可以精细地划定不同客户端的发布(Publish)和订阅(Subscribe)权限在不同的主题(Topic)上,实现权限最小化。


常见问题与排错思路

  • 无法访问 Dashboard 18083 页面 :检查防火墙端口是否开放,确认 EMQX 服务状态是否为 active (running)

  • MQTT 客户端连接失败 :首先检查 MQTT 端口 1883 的防火墙配置。若已配置认证,请检查客户端是否传递了正确的凭证。

  • 服务启动后立即退出 :可能是系统内存不足(不满足2GB最低要求),或有其他进程占用了相同端口。可使用 sudo journalctl -u emqx 命令查看详细日志进行排查。


总结

至此,你已经在 CentOS 7 系统上成功地完成了一台 EMQX MQTT 消息服务器的安装、基础配置和功能验证。你已经拥有了一个高性能的物联网消息中间件,接下来可以根据你的具体业务场景,深入探索它的规则引擎、数据桥接、集群架构等高级特性了。

希望这篇手把手的教程对你有帮助!如果在安装过程中遇到问题,欢迎在评论区留言交流。

相关推荐
yyuuuzz9 小时前
独立开发者线上服务运维的几点实践经验
运维·服务器·网络·云计算·aws
想唱rap9 小时前
IO多路转接Select
运维·服务器·网络·数据库·sql·tcp/ip·mysql
樱桃花下的小猫9 小时前
Rust 服务器倍率参数配置指南
服务器·云鸢互联·零门槛一键搭建·新手友好无技术门槛要求·腐蚀rust服务器一键开服·腐蚀rust·腐蚀rust低延迟稳定服务器
lularible9 小时前
从沙子到车辙(2.1):思想实验——在原始森林里造芯片
开源·嵌入式·汽车电子
深藏bIue9 小时前
MySQL切换服务器数据迁移记录
服务器·mysql·oracle
corpse20109 小时前
CentOS Linux release 8.5.2111下的CVE-2026-31431 Linux内核提权漏洞处置
linux·运维·centos
我是苏苏9 小时前
C#基础:Winform桌面开发中自定义组件UI、属性及事件
服务器·数据库·c#
草邦设计开发团队_媒体资源平台9 小时前
什么是软文发布之GEO优化开源媒介运营管理系统
开源·geo优化·软文发稿系统·软文发布·自媒体运营平台·geo发布系统
http阿拉丁神猫9 小时前
ansible脚本解读
服务器·ansible·apache
KaMeidebaby9 小时前
卡梅德生物技术快报|Fab 抗体文库构建标准化实验流程与数据复盘
服务器·前端·数据库·人工智能·算法