TL;DR
- 场景:RHEL 系(CentOS/RockyLinux)用 RPM 做 RabbitMQ 生产部署,同时用 Docker Compose 快速学习。
- 结论:关键风险在 Erlang/RabbitMQ 版本兼容与包来源一致性;其次是端口、插件、用户权限与安全基线。
- 产出:给出可落地的安装路径、版本矩阵写法与高频报错速查卡,便于上线排障。

RabbitMQ 安装
服务安装(生产推荐)
首先我们需要确认的环境准备:
-
操作系统环境:
- 支持 CentOS 7/8、RockyLinux 8/9 等 RHEL 系发行版
- 建议使用最小化安装的系统,减少不必要的软件冲突
-
Erlang 环境要求:
- RabbitMQ 是基于 Erlang 虚拟机(BEAM)运行的消息中间件
- 必须预先安装兼容版本的 Erlang 运行时
- 建议版本不低于 Erlang 23.x
-
系统依赖包:
- socat:用于集群间通信
- logrotate:日志轮转管理
- openssl:安全通信支持
- 其他编译工具链(gcc, make等)
安装步骤说明:
-
安装 Erlang:
- 可以通过 EPEL 仓库安装
- 或从 Erlang Solutions 获取最新版本
- 示例命令:
yum install erlang
-
验证 Erlang:
- 执行
erl -version检查安装 - 确保版本符合 RabbitMQ 要求
- 执行
-
版本兼容性检查:
- 必须参考官方兼容性文档
- 访问 RabbitMQ Erlang 兼容性指南
- 例如 RabbitMQ 3.9.x 需要 Erlang 23.2+
注意事项:
- 生产环境建议使用相同次要版本的 Erlang
- 避免混用不同仓库的软件包
- 升级时需先检查兼容性矩阵首先我们需要确认的环境准备:
-
操作系统环境:
- 支持 CentOS 7/8、RockyLinux 8/9 等 RHEL 系发行版
- 建议使用最小化安装的系统,减少不必要的软件冲突
-
Erlang 环境要求:
- RabbitMQ 是基于 Erlang 虚拟机(BEAM)运行的消息中间件
- 必须预先安装兼容版本的 Erlang 运行时
- 建议版本不低于 Erlang 23.x
-
系统依赖包:
- socat:用于集群间通信
- logrotate:日志轮转管理
- openssl:安全通信支持
- 其他编译工具链(gcc, make等)
安装步骤说明:
-
安装 Erlang:
- 可以通过 EPEL 仓库安装
- 或从 Erlang Solutions 获取最新版本
- 示例命令:
yum install erlang
-
验证 Erlang:
- 执行
erl -version检查安装 - 确保版本符合 RabbitMQ 要求
- 执行
-
版本兼容性检查:
- 必须参考官方兼容性文档
- 访问 RabbitMQ Erlang 兼容性指南
- 例如 RabbitMQ 3.9.x 需要 Erlang 23.2+
注意事项:
- 生产环境建议使用相同次要版本的 Erlang
- 避免混用不同仓库的软件包
- 升级时需先检查兼容性矩阵
socat
我们在服务器上安装 socat:
shell
yum install socat -y
Erlang
然后安装 Erlang:
shell
https://github.com/rabbitmq/erlang-rpm/releases/download/v23.0.2/erlang-23.0.2-1.el7.x86_64.rpm
将文件上传到服务器后,我们执行安装:
shell
rpm -ivh erlang-23.0.2-1.el7.x86_64.rpm
RabbitMQ
接着我们下载MQ:
shell
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.4/rabbitmq-server-3.8.4-1.el7.noarch.rpm
上传到服务器之后,我们安装:
shell
rpm -ivh rabbitmq-server-3.8.4-1.el7.noarch.rpm
启动插件
shell
rabbitmq-plugins enable rabbitmq_management
启动RabbitMQ服务的几种方式
1. 使用systemctl启动(推荐用于生产环境)
shell
systemctl start rabbitmq-server
- 这是最标准的启动方式,适用于使用systemd的Linux系统
- 会自动处理服务依赖关系和日志记录
- 示例场景:在Ubuntu 18.04+/CentOS 7+等现代Linux发行版中使用
2. 直接运行可执行文件(适合开发环境)
shell
rabbitmq-server
- 会在前台运行,方便查看实时日志
- 按Ctrl+C可停止服务
- 典型使用场景:本地开发测试时快速启动
3. 后台守护进程模式
shell
rabbitmq-server -detached
- 添加
-detached参数使服务在后台运行 - 不会占用当前终端
- 停止服务需要使用
rabbitmqctl stop - 适用情况:需要后台运行但又不想配置systemd服务时
其他相关命令
shell
# 查看服务状态
systemctl status rabbitmq-server
# 设置开机自启
systemctl enable rabbitmq-server
# 停止服务
systemctl stop rabbitmq-server
注意:不同Linux发行版的包管理命令可能略有差异,例如在RHEL系使用yum,Debian系使用apt安装时,服务名称保持一致。
添加用户
shell
rabbitmqctl add_user root 123456
添加权限
shell
rabbitmqctl set_permissions root -p / ".*" ".*" ".*"
设置用户标签(RabbitMQ用户权限管理)
shell
rabbitmqctl set_user_tags root administrator
详细说明:
-
此命令用于为RabbitMQ用户设置标签,这里是给用户
root添加administrator管理员标签 -
标签类型说明:
administrator:管理员权限,拥有所有操作权限monitoring:监控权限,可以查看所有信息但不能修改policymaker:策略制定权限,可以管理虚拟主机策略management:基本管理权限,可以使用管理插件
-
典型应用场景:
- 新用户创建后需要分配管理权限
- 需要调整现有用户的权限级别
- 在多租户环境中管理不同用户的访问权限
-
相关命令:
- 查看用户标签:
rabbitmqctl list_users - 删除用户标签:
rabbitmqctl clear_user_tags username
- 查看用户标签:
注意事项:
- 执行此命令需要RabbitMQ管理员权限
- 修改会立即生效,无需重启服务
- 建议使用专用管理账号而非root账号进行日常管理### 设置用户标签(RabbitMQ用户权限管理)
shell
rabbitmqctl set_user_tags root administrator
详细说明:
-
此命令用于为RabbitMQ用户设置标签,这里是给用户
root添加administrator管理员标签 -
标签类型说明:
administrator:管理员权限,拥有所有操作权限monitoring:监控权限,可以查看所有信息但不能修改policymaker:策略制定权限,可以管理虚拟主机策略management:基本管理权限,可以使用管理插件
-
典型应用场景:
- 新用户创建后需要分配管理权限
- 需要调整现有用户的权限级别
- 在多租户环境中管理不同用户的访问权限
-
相关命令:
- 查看用户标签:
rabbitmqctl list_users - 删除用户标签:
rabbitmqctl clear_user_tags username
- 查看用户标签:
注意事项:
- 执行此命令需要RabbitMQ管理员权限
- 修改会立即生效,无需重启服务
- 建议使用专用管理账号而非root账号进行日常管理
标签内容有:

容器安装(学习推荐)
compose
我们可以通过容器来快速启动服务,方便我们学习使用:
yaml
services:
rabbitmq:
image: rabbitmq:3.8.4-management
container_name: rabbitmq-3.8
restart: unless-stopped
ports:
- "5672:5672" # AMQP
- "15672:15672" # 管理界面
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: secret
volumes:
- rabbitmq_data:/var/lib/rabbitmq
volumes:
rabbitmq_data:
内容如下所示:

启动服务
我们启动:
shell
docker compose up -d
等待结束:

访问服务
我们访问 15672 端口,填写刚才文件中的账号密码:

RabbitMQ 管理命令大全
服务启动与停止
前台启动
在前台启动 Erlang VM 和 RabbitMQ 服务,适合调试时使用:
bash
rabbitmq-server
后台启动
以守护进程方式在后台启动服务,适合生产环境:
bash
rabbitmq-server -detached
停止服务
安全停止 RabbitMQ 和 Erlang VM:
bash
rabbitmqctl stop
应用管理
应用控制
在 Erlang VM 已运行的情况下控制 RabbitMQ 应用:
bash
# 启动应用
rabbitmqctl start_app
# 停止应用(不停止Erlang VM)
rabbitmqctl stop_app
节点状态检查
查看节点运行状态和统计信息:
bash
rabbitmqctl status
队列管理
查看队列
列出所有队列及其消息数量(可添加name, messages等参数显示更多信息):
bash
rabbitmqctl list_queues
虚拟主机管理
查看所有虚拟主机(vhost):
bash
rabbitmqctl list_vhosts
插件管理
插件操作
bash
# 列出所有可用插件(包括已启用/未启用的)
rabbitmq-plugins list
# 启用指定插件(如rabbitmq_management)
rabbitmq-plugins enable <plugin-name>
# 停用指定插件
rabbitmq-plugins disable <plugin-name>
用户管理
用户操作
bash
# 添加新用户(用户名和密码)
rabbitmqctl add_user username password
# 列出所有用户及其标签
rabbitmqctl list_users
# 删除用户
rabbitmqctl delete_user username
# 清除用户在特定vhost的权限
rabbitmqctl clear_permissions -p vhostpath username
高级用法示例
查看队列详情(带更多参数)
bash
rabbitmqctl list_queues name messages messages_ready messages_unacknowledged
创建虚拟主机并设置权限
bash
# 创建vhost
rabbitmqctl add_vhost /my_vhost
# 设置用户权限
rabbitmqctl set_permissions -p /my_vhost username ".*" ".*" ".*"
查看连接信息
bash
rabbitmqctl list_connections
查看信道信息
bash
rabbitmqctl list_channels
错误速查
| 症状 | 根因 | 定位 | 修复 |
|---|---|---|---|
rpm -ivh rabbitmq-server-...rpm 报依赖缺失 |
socat/openssl 等依赖未装或版本不匹配 | rpm -qpR 包名.rpm,或看报错缺什么库 |
先装 socat、openssl 等依赖;统一仓库来源,避免混装。 |
| 下载 3.8.5,却安装命令写成 3.8.4 | 文档版本号不一致导致误操作 | 对比下载链接与 rpm -ivh 文件名 |
统一为同一版本号;建议把"下载链接/文件名/安装命令"三者对齐。 |
rabbitmq-server 启动失败,提示 Erlang 版本不兼容 |
Erlang/OTP 与 RabbitMQ 版本区间不匹配 | erl -version;RabbitMQ 启动日志 |
按官方兼容矩阵选择 Erlang 版本;生产固定"可复现组合"。 |
systemctl start rabbitmq-server 失败 |
service unit/权限/数据目录问题或节点没起来 | systemctl status + journalctl -u rabbitmq-server |
根据日志修复目录权限、磁盘空间、端口占用;必要时清理残留状态后重启。 |
rabbitmq-plugins enable rabbitmq_management 失败 |
节点未运行、插件目录不可写、版本不匹配 | rabbitmqctl status、插件命令输出 |
先确保 rabbitmq-server 正常启动;修复权限;核对包版本。 |
| 访问 15672 失败(浏览器打不开) | 端口未监听/防火墙未放行/管理插件未启用 | `ss -lntp | grep 15672`;插件列表 |
| 用户权限/标签未设置或 vhost 权限缺失 | rabbitmqctl list_users、list_permissions -p / |
set_permissions 与 set_user_tags 配套执行;确保对目标 vhost 授权。 |
|
set_permissions 成功但业务仍拒绝 |
使用了非 / vhost 或应用连接串 vhost 不一致 |
管理台查看 vhost;应用连接参数 | 为实际 vhost 设置权限;统一应用侧 vhost 配置。 |
| Docker Compose 启动后数据丢失 | 未挂载卷或卷名变化 | docker volume ls;容器挂载信息 |
保持 volumes: rabbitmq_data:/var/lib/rabbitmq;不要频繁改卷名。 |
| Compose 启动报权限/写入失败 | 宿主机目录/卷权限与容器用户不匹配 | docker logs |
改用命名卷或修复宿主机目录权限;避免直接挂载无权限路径。 |
| 默认账号/弱口令带来安全风险 | admin/secret、root/123456 属于可猜测凭据 | 配置与命令段落可直接识别 | 学习环境可保留但必须标注"仅限本地/内网";生产改强口令并限制 15672 暴露面。 |
其他系列
🚀 AI篇持续更新中(长期更新)
AI炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有部署 测试上手 架构研究 ,持续打造实用AI工具指南!
AI研究-132 Java 生态前沿 2025:Spring、Quarkus、GraalVM、CRaC 与云原生落地
🔗 AI模块直达链接
💻 Java篇持续更新中(长期更新)
Java-196 消息队列选型:RabbitMQ vs RocketMQ vs Kafka
MyBatis 已完结,Spring 已完结,Nginx已完结,Tomcat已完结,分布式服务已完结,Dubbo已完结,MySQL已完结,MongoDB已完结,Neo4j已完结,FastDFS 已完结,OSS已完结,GuavaCache已完结,EVCache已完结,RabbitMQ正在更新... 深入浅出助你打牢基础!
🔗 Java模块直达链接
📊 大数据板块已完成多项干货更新(300篇):
包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!
大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解
🔗 大数据模块直达链接