Ubuntu 24.04 服务器上安装 EMQX

[复制链接]
1132|2
keer_zu 发表于 2025-11-7 17:36 | 显示全部楼层 |阅读模式

EMQX 在阿里云服务器上的详细搭建过程

1. 系统准备和环境检查

系统要求检查

# 检查系统版本
cat /etc/os-release

# 检查内存和磁盘空间
free -h
df -h

# 检查防火墙状态
sudo ufw status
# 或
sudo firewall-cmd --state

更新系统包

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS/RHEL
sudo yum update -y

2. EMQX 安装方法

方法一:使用官方安装脚本(推荐)

最新版本安装:

# 下载并执行安装脚本
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash

# 安装EMQX
sudo apt-get update
sudo apt-get install emqx -y

指定版本安装:

# 安装特定版本(如 5.0.10)
sudo apt-get install emqx=5.0.10 -y

方法二:手动下载安装包

Ubuntu/Debian:

# 下载DEB包
wget https://www.emqx.com/zh/downloads/broker/5.0.10/emqx-5.0.10-ubuntu20.04-amd64.deb

# 安装
sudo dpkg -i emqx-5.0.10-ubuntu20.04-amd64.deb

CentOS/RHEL:

# 下载RPM包
wget https://www.emqx.com/zh/downloads/broker/5.0.10/emqx-5.0.10-el7-amd64.rpm

# 安装
sudo yum install emqx-5.0.10-el7-amd64.rpm -y

方法三:Docker 安装

# 创建数据目录
sudo mkdir -p /docker/emqx/data
sudo mkdir -p /docker/emqx/log
sudo mkdir -p /docker/emqx/etc

# 运行EMQX容器
docker run -d \
  --name emqx \
  -p 1883:1883 \
  -p 8083:8083 \
  -p 8084:8084 \
  -p 8883:8883 \
  -p 18083:18083 \
  -v /docker/emqx/data:/opt/emqx/data \
  -v /docker/emqx/log:/opt/emqx/log \
  -v /docker/emqx/etc:/opt/emqx/etc \
  --restart=always \
  emqx/emqx:5.0.10

3. 配置文件详解

主要配置文件位置

# 主配置文件
/etc/emqx/emqx.conf

# 监听器配置
/etc/emqx/listeners.conf

# 认证配置
/etc/emqx/plugins/emqx_auth_mnesia.conf

关键配置修改

# 编辑主配置文件
sudo vim /etc/emqx/emqx.conf

基础网络配置:

# 节点名称(修改为你的服务器IP或域名)
node.name = emqx@你的服务器IP

# MQTT TCP 监听器
listener.tcp.external = 0.0.0.0:1883
listener.tcp.external.acceptors = 8
listener.tcp.external.max_connections = 102400

# MQTT SSL 监听器
listener.ssl.external = 0.0.0.0:8883
listener.ssl.external.acceptors = 4
listener.ssl.external.max_connections = 512

# WebSocket 监听器
listener.ws.external = 0.0.0.0:8083
listener.ws.external.acceptors = 4
listener.ws.external.max_connections = 1024

# WebSocket/SSL 监听器
listener.wss.external = 0.0.0.0:8084
listener.wss.external.acceptors = 4
listener.wss.external.max_connections = 512

性能调优配置:

# 连接设置
zone.external.max_connections = 1024000
zone.external.max_packet_size = 10MB

# 会话设置
zone.external.max_subscriptions = 0
zone.external.max_mqueue_len = 1000
zone.external.retry_interval = 2s

# 共享订阅
broker.shared_subscription = true

4. 阿里云安全组配置

在阿里云控制台配置安全组规则:

端口 协议 说明 源IP
1883 TCP MQTT协议 0.0.0.0/0 或 你的客户端IP段
8883 TCP MQTT over SSL 0.0.0.0/0 或 你的客户端IP段
8083 TCP MQTT over WebSocket 0.0.0.0/0 或 你的客户端IP段
8084 TCP MQTT over WebSocket/SSL 0.0.0.0/0 或 你的客户端IP段
18083 TCP 管理控制台 你的管理IP段(建议限制)

5. 系统防火墙配置

# 如果使用ufw(Ubuntu)
sudo ufw allow 1883/tcp
sudo ufw allow 8883/tcp
sudo ufw allow 8083/tcp
sudo ufw allow 8084/tcp
sudo ufw allow 18083/tcp

# 如果使用firewalld(CentOS)
sudo firewall-cmd --permanent --add-port=1883/tcp
sudo firewall-cmd --permanent --add-port=8883/tcp
sudo firewall-cmd --permanent --add-port=8083/tcp
sudo firewall-cmd --permanent --add-port=8084/tcp
sudo firewall-cmd --permanent --add-port=18083/tcp
sudo firewall-cmd --reload

6. 启动和管理EMQX

服务管理命令

# 启动EMQX
sudo systemctl start emqx

# 停止EMQX
sudo systemctl stop emqx

# 重启EMQX
sudo systemctl restart emqx

# 查看服务状态
sudo systemctl status emqx

# 设置开机自启
sudo systemctl enable emqx

# 重新加载配置(不重启服务)
sudo emqx reload

查看运行状态

# 检查节点状态
sudo emqx ctl status

# 查看集群状态
sudo emqx ctl cluster status

# 查看客户端连接
sudo emqx ctl clients list

# 查看主题统计
sudo emqx ctl topics

7. 初始配置和安全管理

修改管理员密码

# 访问管理控制台
http://你的服务器IP:18083

# 默认账号密码:
# 用户名: admin
# 密码: public

# 或者使用命令行修改
sudo emqx ctl admins passwd admin 你的新密码

启用认证插件

# 启用用户名密码认证
sudo emqx ctl plugins load emqx_auth_mnesia

# 配置认证(编辑配置文件)
sudo vim /etc/emqx/plugins/emqx_auth_mnesia.conf

# 添加用户(可选)
sudo emqx ctl users add username password

8. SSL/TLS 证书配置(生产环境必备)

使用Let's Encrypt免费证书

# 安装certbot
sudo apt install certbot -y

# 申请证书(需要域名已解析到服务器)
sudo certbot certonly --standalone -d your-domain.com

# 配置EMQX使用SSL证书
sudo vim /etc/emqx/emqx.conf

SSL配置示例:

listener.ssl.external.keyfile = /etc/letsencrypt/live/your-domain.com/privkey.pem
listener.ssl.external.certfile = /etc/letsencrypt/live/your-domain.com/fullchain.pem
listener.ssl.external.cacertfile = /etc/letsencrypt/live/your-domain.com/chain.pem

# 强制客户端使用SSL
listener.ssl.external.verify = verify_peer

9. 测试连接

使用MQTT客户端测试

# 安装MQTT客户端工具
sudo apt install mosquitto-clients -y

# 测试TCP连接
mosquitto_sub -h 你的服务器IP -t "test" -v

# 测试SSL连接
mosquitto_sub -h 你的服务器IP -p 8883 -t "test" --insecure

# 测试WebSocket连接(需要支持WebSocket的客户端)

使用在线工具测试

  • MQTTX客户端:https://mqttx.app/
  • MQTT Lens浏览器插件

10. 监控和维护

日志查看

# 查看实时日志
sudo tail -f /var/log/emqx/emqx.log.1

# 查看错误日志
sudo tail -f /var/log/emqx/error.log

# 查看启动日志
journalctl -u emqx -f

性能监控

# 查看系统资源使用
sudo emqx ctl status

# 查看连接数统计
sudo emqx ctl listeners

# 查看消息速率
sudo emqx ctl metrics

备份配置

# 备份配置文件
sudo tar -czf emqx-backup-$(date +%Y%m%d).tar.gz /etc/emqx/

# 备份数据(如果使用内置数据库)
sudo cp -r /var/lib/emqx/mnesia /backup/emqx-mnesia-$(date +%Y%m%d)

11. 故障排查

常见问题解决

# 检查端口监听状态
sudo netstat -tlnp | grep emqx

# 检查防火墙规则
sudo iptables -L -n

# 检查服务是否正常启动
sudo emqx ping

# 重置EMQX(谨慎使用)
sudo emqx stop
sudo rm -rf /var/lib/emqx/mnesia/*
sudo systemctl start emqx

通过以上详细步骤,你可以在阿里云服务器上成功搭建一个功能完整的EMQX MQTT Broker,并根据实际需求进行相应的配置和优化。

 楼主| keer_zu 发表于 2025-11-12 03:25 | 显示全部楼层
 楼主| keer_zu 发表于 2025-11-12 03:27 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1497

主题

12971

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部