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的下载:

下载地址

erlang下载1

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

25xOS7

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

git的tagsgit下载erlang

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

对应7的版本

然后再下载MQ:

下载地址

其分为docker下载、安装包下载,这里演示中使用安装包方式下载及安装

点击如下内容:

CentOS下载

在 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,然后保存。 注意:rabbitmq-env.conf这个文件可能不存在,vi命令会直接创建它。

解决启动失败

完成配置后,重启服务并查看状态:

[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

mq管理页面

4. 创建管理员用户并分配权限

出于安全考虑,建议创建新的管理员用户并禁用默认的guest账户。

新增管理员用户,rabbitmq默认自带一个用户,这里增加一个新的管理员用户方便以后使用

新增用户(例如,用户名和密码均为admin):

rabbitmqctl set_user_tags admin administrator

为用户设置标签(Tag),定义其角色级别:

rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"

administrator为用户级别。RabbitMQ的用户标签级别分为:

  • 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中执行如下命令

docker下载mq

使用以下命令拉取带有管理插件的镜像(标签如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安装mq

Docker部署方式极大地简化了流程,特别适合在Python、Go或Node.js项目中进行集成测试。[AFFILIATE_SLOT_1]

四、深入RabbitMQ管理界面

成功登录Web管理界面后,你会看到顶部有一排标签页,这是管理和监控RabbitMQ的核心入口。

顶部标签

RabbitMQ管理界面中的顶部标签提供了对集群不同方面的管理和监控功能:

  • Overview (概览)

    1. Overview(概览)

  • Connections (连接)

    2. Connections(连接)


    状态如runningidle
  • Channels (通道)

    3. Channels(通道)

  • Exchanges (交换机)

    4. Exchanges(交换机)


    类型包括directfanouttopicheaders等。
  • Queues and Streams (队列和流)

    5. Queues and Streams(队列和流)

  • Admin (管理)

    6. Admin(管理)

在“Overview”页面,节点概要信息是监控系统健康度的关键。

nodes

在 RabbitMQ 管理界面的 Nodes 节点中,以下是各列的具体含义:

  • Name (名称):格式为rabbit@主机名,标识当前节点。
  • File Descriptors / Erlang Processes:监控系统资源使用情况,如达到上限1048576 available1048576 available会影响服务。
  • Memory / Disk Space:关注内存使用183 MiB和高水位4.6 GiB high watermark,以及磁盘空间11 GiB和低水位48 MiB low watermark
  • Uptime / Cores:运行时间时:分:秒(例如7m 3s)和CPU核心数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服务都是实现应用解耦、流量削峰和异步处理的重要基石。

关键要点回顾:

  1. 版本兼容性是前提:务必确保Erlang与RabbitMQ版本匹配。
  2. 配置是成功的关键:正确的主机名解析、防火墙规则和用户权限设置缺一不可。
  3. 善用管理界面:Web管理界面是监控队列状态、排查问题的强大工具,务必熟悉其各个模块。
  4. 选择适合的部署方式:生产环境推荐使用RPM或源码安装以便深度定制;开发测试环境使用Docker能极大提升效率。

希望这份指南能帮助你顺利搭建和管理RabbitMQ消息队列,为构建高可用、可扩展的分布式应用打下坚实基础。[AFFILIATE_SLOT_2]

erlangrabbitmq254.0.3Tagsel7 x86linuxCentOS7rpm -ivhguest你的机器ip:15672guest
posted on 2026-03-10 17:30  blfbuaa  阅读(4)  评论(0)    收藏  举报