Linux系统下RabbitMQ的完整部署与配置指南:从安装到管理界面详解
RabbitMQ作为一款高性能、开源的企业级消息代理软件,在现代分布式系统架构中扮演着至关重要的角色。无论是使用Java构建微服务,还是用Python、Go或Node.js(JavaScript/TypeScript)开发异步任务队列,RabbitMQ都能提供可靠的消息传递保障。本文将为你提供一份在Linux系统(以CentOS 7为例)上从零开始部署、配置并管理RabbitMQ的详尽指南,涵盖RPM包安装、Docker部署、Web管理界面配置以及核心概念解析,助你快速搭建起自己的消息队列服务。
一、部署前的核心准备:理解Erlang依赖
RabbitMQ是使用Erlang/OTP语言开发的,因此其运行强依赖于Erlang运行时环境(ERTS)。在安装RabbitMQ之前,必须确保已安装兼容版本的Erlang。版本不兼容是导致RabbitMQ启动失败最常见的原因之一。你可以通过RabbitMQ官方提供的兼容性矩阵来确认所需Erlang版本。
可在官网查看与的版本对应关系
上图清晰地展示了RabbitMQ版本与所需Erlang/OTP版本之间的对应关系,请在下载前务必核对。
二、CentOS 7系统下的RPM包安装实战
对于生产环境或希望获得更直接控制的场景,使用RPM包安装是经典且可靠的方式。整个过程分为下载、安装、配置和启动几个关键步骤。
1. 下载Erlang与RabbitMQ安装包
首先,你需要从官方仓库下载对应CentOS 7的Erlang RPM包。RabbitMQ社区提供了专门的Erlang解决方案。
https://www.rabbitmq.com/docs/which-erlang
接着,前往RabbitMQ的GitHub发布页面下载对应版本的RPM包。请根据你的系统架构(如x86_64)进行选择。

RabbitMQ使用Erlang开发,依赖于Erlang运行时,所以要先下载Erlang。点击如下位置进行Erlang的下载:
下载地址

点击后跳转github,跳转后选择红框处的版本,以对应当前最新的版本mq:

然后再点击后选择版本下载:


最后选择的版本点击进行下载:

然后再下载MQ:

其分为docker下载、安装包下载,这里演示中使用安装包方式下载及安装
点击如下内容:

在 Direct Downloads 标题下点击下载。

2. 执行安装与基础配置
下载完成后,使用rpm -ivh命令按顺序安装Erlang和RabbitMQ。
都下载完成后,将安装包放入linux中,然后进入安装包存放目录,执行安装命令:
命令:
安装erlang:rpm -ivh erlang-26.2.5.5-1.el7.x86_64.rpm
安装rabbitmq:rpm -ivh rabbitmq-server-4.0.3-1.el8.noarch.rpm
https://www.rabbitmq.com/docs/download
安装完成后,使用systemctl start rabbitmq-server命令启动服务。
[root@Centos7 rabbitmq]# service rabbitmq-server start
Redirecting to /bin/systemctl start rabbitmq-server.service
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
如果启动时出现的失败问题,这通常与主机名解析有关。需要通过创建配置文件来解决。Job for rabbitmq-server.service failed.......
vi /etc/rabbitmq/rabbitmq-env.conf
使用vi命令编辑该文件,并添加一行:,然后保存。 注意:NODENAME=rabbit@localhost这个文件可能不存在,vi命令会直接创建它。rabbitmq-env.conf

完成配置后,重启服务并查看状态:
[root@Centos7 rabbitmq]# vi /etc/rabbitmq/rabbitmq-env.conf
[root@Centos7 rabbitmq]# systemctl restart rabbitmq-server
[root@Centos7 rabbitmq]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since 五 2024-11-15 09:22:27 CST; 11s ago
Process: 8477 ExecStop=/usr/sbin/rabbitmqctl shutdown (code=exited, status=0/SUCCESS)
Main PID: 8522 (beam.smp)
Tasks: 25
CGroup: /system.slice/rabbitmq-server.service
├─8522 /usr/lib64/erlang/erts-14.2.5.4/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -pc unicode -P 1048576 -t 5000000 -stbt db...
├─8536 erl_child_setup 32768
├─8553 sh -s disksup
├─8554 /usr/lib64/erlang/lib/os_mon-2.9.1/priv/bin/memsup
├─8555 /usr/lib64/erlang/lib/os_mon-2.9.1/priv/bin/cpu_sup
├─8558 /usr/lib64/erlang/erts-14.2.5.4/bin/inet_gethost 4
├─8559 /usr/lib64/erlang/erts-14.2.5.4/bin/inet_gethost 4
└─8563 /bin/sh -s rabbit_disk_monitor
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Doc guides: https://www.rabbitmq.com/docs
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Support: https://www.rabbitmq.com/docs/contact
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Tutorials: https://www.rabbitmq.com/tutorials
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Monitoring: https://www.rabbitmq.com/docs/monitoring
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Upgrading: https://www.rabbitmq.com/docs/upgrade
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Logs: /var/log/rabbitmq/rabbit@localhost.log
11月 15 09:22:27 Centos7 rabbitmq-server[8522]:
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Config file(s): (none)
11月 15 09:22:27 Centos7 rabbitmq-server[8522]: Starting broker... completed with 3 plugins.
11月 15 09:22:27 Centos7 systemd[1]: Started RabbitMQ broker.
3. 启用Web管理界面与防火墙配置
RabbitMQ自带一个功能强大的Web管理插件,默认未启用。启用它可以方便地通过浏览器监控和管理消息队列。
开启rabbitmq的web管理界面
使用rabbitmq-plugins enable rabbitmq_management命令启用插件,注意开启后需要使用systemctl restart rabbitmq-server命令重启服务。
[root@Centos7 rabbitmq]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
Plugin configuration unchanged.
[root@Centos7 rabbitmq]# systemctl restart rabbitmq-server
Web管理界面默认使用15672端口,而AMQP协议默认使用5672端口。为了能从外部访问,需要在防火墙中开放这两个端口。
完成管理页面配置后,还需要开放防火墙(如果有使用防火墙):
开放15672端口:firewall-cmd --zone=public --add-port=15672/tcp --permanent
开放5672端口:firewall-cmd --zone=public --add-port=5672/tcp --permanent
重启防火墙:firewall-cmd --reload
查看防火墙端口状态:firewall-cmd --list-all
rabbitmqctl add_user admin admin
配置完成后,即可通过浏览器访问 http://你的服务器IP:15672。默认用户名和密码均为 guest。

4. 创建管理员用户并分配权限
出于安全考虑,建议创建新的管理员用户并禁用默认的guest账户。
新增管理员用户,rabbitmq默认自带一个用户,这里增加一个新的管理员用户方便以后使用
新增用户(例如,用户名和密码均为admin):
rabbitmqctl set_user_tags admin administrator
为用户设置标签(Tag),定义其角色级别:
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
为用户级别。RabbitMQ的用户标签级别分为:administrator
:超级管理员,拥有所有权限。administrator:监控者,可查看所有信息。monitoring:策略制定者,可管理策略。policymaker:普通管理员,仅可登录控制台。managment
最后,为用户在指定的虚拟主机(VHost)上分配具体的资源操作权限:
[root@Centos7 rabbitmq]# rabbitmqctl add_user admin admin
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@Centos7 rabbitmq]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
[root@Centos7 rabbitmq]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...
这条命令详解:
:指定虚拟主机,-p /:–p是默认的根虚拟主机。/:要设置权限的用户名。admin:配置(Configure)权限的通配符,".*"和"*"代表所有权限。.和".*":同理,代表写(Write)和读(Read)的所有权限。".*"
这意味着用户在admin虚拟主机上拥有完全控制权。/
rabbitmqctl change_password Username Newpassword 修改密码
rabbitmqctl delete_user Username 删除用户
rabbitmqctl list_users 查看用户清单
现在,你可以使用新创建的admin账户登录Web管理界面。

在页签中,可以看到新增的用户。Admin

至此,通过RPM包安装和配置RabbitMQ的全部步骤已完成。
其他用户操作命令:
三、使用Docker快速部署RabbitMQ
对于追求快速部署和一致性的开发测试环境,Docker是最佳选择。它避免了环境依赖的繁琐,能瞬间拉起一个RabbitMQ服务。
首先,访问Docker Hub上的RabbitMQ官方镜像页面。
https://www.rabbitmq.com/docs/download
在安装完docker的linux中执行如下命令

使用以下命令拉取带有管理插件的镜像(标签如3-management):
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
该命令会自动安装rabbitmq,执行效果如下,可能会很慢,需要等待:
运行一个RabbitMQ容器实例:
[root@Centos7 ~]# docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
Unable to find image 'rabbitmq:4.0-management' locally
4.0-management: Pulling from library/rabbitmq
afad30e59d72: Already exists
211e97f904c7: Already exists
b7d633cb09df: Already exists
0357761da170: Already exists
ca95b127b98a: Already exists
3ec3ceaa0dcb: Already exists
7037c52023fb: Already exists
d738327fa668: Already exists
5a286d22c8dd: Already exists
e971f4d4bd73: Pull complete
Digest: sha256:a0ea806ba32e6e9776aa83f66796e6c746606e669220b26359bd461c79a2ba14
Status: Downloaded newer image for rabbitmq:4.0-management
.........
2024-11-22 01:53:31.112725+00:00 [info] <0.9.0> Time to start RabbitMQ: 3371 ms
如下即为成功,但是这是前台运行,shell窗口无法执行其他操作,停止后执行如下命令转为后台启动
这条命令做了以下几件事:
-d:后台运行。--name:为容器命名。-p 5672:5672 -p 15672:15672:端口映射,将容器的AMQP和管理端口映射到宿主机。-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin:设置默认用户名和密码。
运行后,可查看容器状态和日志:
[root@Centos7 ~]# docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
9f1174c754d6a7be62986f092de1d530fef8d69a47a40c244831de63ccb0ddad
可查看版本信息:
[root@Centos7 ~]# docker run --rm rabbitmq rabbitmqctl version
4.0.3
最后使用访问管理页面即可,默认用户名密码都是:

Docker部署方式极大地简化了流程,特别适合在Python、Go或Node.js项目中进行集成测试。[AFFILIATE_SLOT_1]
四、深入RabbitMQ管理界面
成功登录Web管理界面后,你会看到顶部有一排标签页,这是管理和监控RabbitMQ的核心入口。

RabbitMQ管理界面中的顶部标签提供了对集群不同方面的管理和监控功能:
- Overview (概览):
1. Overview(概览)
- Connections (连接):
2. Connections(连接)
状态如或running。idle - Channels (通道):
3. Channels(通道)
- Exchanges (交换机):
4. Exchanges(交换机)
类型包括、direct、fanout、topic等。headers - Queues and Streams (队列和流):
5. Queues and Streams(队列和流)
- Admin (管理):
6. Admin(管理)
在“Overview”页面,节点概要信息是监控系统健康度的关键。

在 RabbitMQ 管理界面的 Nodes 节点中,以下是各列的具体含义:
- Name (名称):格式为
,标识当前节点。rabbit@主机名 - File Descriptors / Erlang Processes:监控系统资源使用情况,如达到上限
或1048576 available会影响服务。1048576 available - Memory / Disk Space:关注内存使用
和高水位183 MiB,以及磁盘空间4.6 GiB high watermark和低水位11 GiB。48 MiB low watermark - Uptime / Cores:运行时间
(例如时:分:秒)和CPU核心数7m 3s。128 - Info:包含
等基本信息标志。basic
五、如何彻底卸载RabbitMQ
当你需要清理环境或重新安装时,正确的卸载步骤很重要。
卸载RabbitMQ Server:
先停止RabbitMq服务
查看已安装的RabbitMQ:
systemctl stop rabbitmq-server
查看并卸载rabbitmq安装的相关列表
卸载命令:
yum list | grep rabbitmq
查看并卸载erlang安装的相关软件包
卸载Erlang:
查看已安装的Erlang:
yum -y remove rabbitmq-server.noarch
卸载命令:
yum list | grep erlang
清理残留文件和目录:
查找并删除erlang相关文件
查找所有Erlang相关文件:
yum -y remove erlang-*
删除上面查出的erlang相关文件:
whereis erlang
[root@Centos7 ~]# whereis erlang
erlang: /usr/lib64/erlang
通常还需要手动删除RabbitMQ的数据和配置目录,如/var/lib/rabbitmq/和/etc/rabbitmq/。完成以上步骤后,RabbitMQ和Erlang即被彻底卸载。
六、总结与最佳实践
通过本文,我们系统性地完成了在Linux CentOS 7上部署RabbitMQ的两种主流方式:传统的RPM包安装和便捷的Docker容器化部署。无论你的后端技术栈是Java Spring Boot、Python Django、Go Gin还是Node.js,一个稳定运行的RabbitMQ服务都是实现应用解耦、流量削峰和异步处理的重要基石。
关键要点回顾:
- 版本兼容性是前提:务必确保Erlang与RabbitMQ版本匹配。
- 配置是成功的关键:正确的主机名解析、防火墙规则和用户权限设置缺一不可。
- 善用管理界面:Web管理界面是监控队列状态、排查问题的强大工具,务必熟悉其各个模块。
- 选择适合的部署方式:生产环境推荐使用RPM或源码安装以便深度定制;开发测试环境使用Docker能极大提升效率。
希望这份指南能帮助你顺利搭建和管理RabbitMQ消息队列,为构建高可用、可扩展的分布式应用打下坚实基础。[AFFILIATE_SLOT_2]
erlangrabbitmq254.0.3Tagsel7 x86linuxCentOS7rpm -ivhguest你的机器ip:15672guest
浙公网安备 33010602011771号