当前位置:首页 > 技术 > 正文内容

在CentOS系统上部署与配置RabbitMQ消息代理

访客 技术 2026年9月21日 12

一、系统环境准备与依赖安装

在CentOS系统上部署RabbitMQ消息队列服务之前,确保系统具备必要的开发工具和库至关重要。您可以通过yum包管理器在线安装以下依赖项:

yum install -y build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz

二、Erlang运行时环境安装

RabbitMQ是基于Erlang语言开发的,因此在安装RabbitMQ之前,必须首先安装Erlang运行时环境。请将预先下载的Erlang RPM包(例如erlang-18.3-1.el7.centos.x86_64.rpm)上传到您的服务器(例如存放在/root目录下)。

# 执行Erlang RPM包的安装
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm

在安装Erlang时,您可能会遇到因glibc版本不兼容导致的依赖错误。例如,系统提示需要glibc版本2.15或更高,而当前系统可能只提供了2.12。具体的错误信息可能类似下图所示:

要检查当前系统已安装的glibc版本,可以使用以下命令:

strings /lib64/libc.so.6 | grep GLIBC

命令输出通常会列出系统支持的最高GLIBC版本,例如:

如果glibc版本确实过旧,需要进行升级。请注意,手动升级glibc是一个涉及系统底层组件的敏感操作,具有潜在风险,操作前务必做好备份。以下提供了一种针对旧系统版本的升级方案示例(请务必根据您的CentOS版本选择兼容的glibc包,以下示例包名包含el6,可能不完全适用于所有CentOS 7版本,请谨慎操作):

首先,安装用于编译和构建的辅助工具及库:

sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

接下来,下载所需版本的glibc相关RPM包:

wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-utils-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-static-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm &
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/nscd-2.17-55.el6.x86_64.rpm &

下载完成后,强制安装这些RPM包:

sudo rpm -Uvh *-2.17-55.el6.x86_64.rpm --force --nodeps

安装完毕后,再次执行strings /lib64/libc.so.6 | grep GLIBC命令,确认glibc版本已成功升级:

三、RabbitMQ服务器安装

在Erlang环境准备就绪后,即可安装RabbitMQ服务器。请将预下载的socat和rabbitmq-server RPM包上传到服务器。socat是一个网络工具,RabbitMQ的某些功能可能依赖于它。

# 安装socat工具
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm

# 安装RabbitMQ服务器
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

四、启用管理插件与基础配置调整

RabbitMQ提供了一个功能丰富的Web管理界面,方便用户监控和管理。要启用这个界面,需要激活rabbitmq_management插件:

# 启用RabbitMQ管理控制台插件
rabbitmq-plugins enable rabbitmq_management

RabbitMQ的默认配置存储在rabbit.app文件中。您可能需要对其进行修改,例如调整默认用户的访问权限。默认情况下,guest用户只能从localhost进行访问。

# 编辑RabbitMQ的核心配置文件
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app

在此文件中,找到loopback_users配置项。如果需要允许guest用户从远程主机访问管理界面(通常不建议在生产环境中使用),您可以将<<"guest">>从列表中移除或注释掉。更推荐的做法是创建新的用户并赋予相应权限。

为了更系统地管理RabbitMQ配置,建议将示例配置文件复制到标准配置路径下进行修改:

cd /usr/share/doc/rabbitmq-server-3.6.5/
cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

五、RabbitMQ服务管理

使用service命令可以轻松管理RabbitMQ服务的生命周期:

# 启动RabbitMQ服务
service rabbitmq-server start

# 停止RabbitMQ服务
service rabbitmq-server stop

# 重启RabbitMQ服务
service rabbitmq-server restart

六、访问Web管理界面

当RabbitMQ服务启动并且管理插件启用后,您可以通过Web浏览器访问管理控制台。默认的访问地址是http://您的服务器IP地址:15672。

登录界面会要求您输入用户名和密码。默认凭据是guest/guest。

成功登录后,您将进入RabbitMQ的管理仪表盘,这表明整个安装和管理控制台的配置都已顺利完成。

七、虚拟主机与用户权限配置

为了实现消息的隔离与权限精细化管理,RabbitMQ引入了虚拟主机(Virtual Host)的概念,并支持对用户角色和权限进行配置。

1. 用户角色介绍与管理

RabbitMQ定义了几种用户角色,每种角色具有不同的管理权限:

  • 超级管理员 (administrator):拥有最高权限,可登录管理控制台,查看所有系统信息,并对用户、策略等进行全面管理。
  • 监控者 (monitoring):可登录管理控制台,查看RabbitMQ节点的运行状态信息,例如进程数量、内存和磁盘使用情况。
  • 策略制定者 (policymaker):可登录管理控制台,负责管理消息策略(policy),但无法查看节点相关的硬件资源信息。
  • 普通管理者 (management):仅可登录管理控制台,无法查看节点信息,也无权管理策略。
  • 其他 (None):无法登录管理控制台,通常用于应用程序中的消息生产者和消费者。

在管理界面的"Admin"标签页下,您可以管理现有用户或创建新用户。点击"Add a user"可以添加新用户并分配相应的角色。

2. 虚拟主机(Virtual Hosts)配置

虚拟主机在RabbitMQ中扮演着逻辑隔离容器的角色,每个虚拟主机相当于一个独立的RabbitMQ服务器实例。不同的虚拟主机之间,其交换器(exchange)、队列(queue)和消息是完全隔离的,类似于关系数据库中的不同数据库实例。

在"Admin"标签页中,切换到"Virtual Hosts"部分,可以查看和创建新的虚拟主机。通常,虚拟主机的名称会以斜杠/开头。

点击"Add a new virtual host"并输入名称即可完成创建:

3. 设置虚拟主机权限

创建虚拟主机后,需要为特定的用户分配在该虚拟主机上的操作权限。这是实现消息隔离和安全性的关键步骤。

在"Virtual Hosts"列表中,选中您要配置的虚拟主机,然后点击其旁边的"Set permissions"链接。

在权限设置界面,您可以选择一个用户,并为其配置在读(read)、写(write)和配置(configure)操作上的正则表达式权限。例如,配置权限正则表达式.*表示对所有资源拥有权限。

标签: RabbitMQ

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。