如何在虚拟机里搭建RabbitMQ?,详细步骤有哪些?

在虚拟机里搭建RabbitMQ,核心步骤是:先准备一台Linux虚拟机并配置好网络环境,然后按顺序安装Erlang和RabbitMQ服务端,最后开启管理插件并通过端口转发访问Web控制台。整个过程大约需要20分钟,适合开发环境快速验证消息队列功能,下面直接给出可操作的详细步骤。

搭建前的环境准备:虚拟机与系统选择

虚拟机搭建RabbitMQ与物理机安装没有本质区别,但有几个前置条件需要确认,如果你用的是VMware Workstation或VirtualBox,建议给虚拟机分配至少2核CPU和2GB内存,磁盘空间20GB即可,RabbitMQ是纯Erlang应用,对硬件要求不高,但内存太小会导致启动缓慢。

RabbitMQ-案例(虚拟机创建流程)
加载中
RabbitMQ-案例(虚拟机创建流程)

操作系统推荐CentOS 7.9或Ubuntu 22.04 LTS,国内生产环境用CentOS的比例仍然较高,但CentOS 7已停止维护,如果追求长期稳定,Rocky Linux 9是更合适的选择,行业共识认为,消息中间件这类基础组件,运行环境的稳定性优先级高于版本新特性。

虚拟机网络模式选择NAT即可,安装完成后,先执行 yum update -y(CentOS系)或 apt update && apt upgrade -y(Ubuntu系)更新系统,更新完毕后,用 ip addr 确认虚拟机能正常获取IP地址,能ping通外网。

关闭防火墙与SELinux(CentOS系必做)

CentOS默认开启firewalld和SELinux,会拦截RabbitMQ的5672和15672端口,在安装前先处理掉,避免排查问题时分心:

# 停止并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
# 临时关闭SELinux
setenforce 0
# 永久关闭SELinux(修改配置文件)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

Ubuntu用户不需要处理SELinux,用 ufw disable 关闭防火墙即可,虚拟机环境没有公网暴露风险,这笔操作是安全的。

CentOS虚拟机安装RabbitMQ详细步骤

CentOS系安装RabbitMQ有两种主流方式:yum仓库安装和Docker安装,yum方式更贴近传统运维习惯,Docker方式则更干净,这里优先讲yum方式,因为它是虚拟机搭建RabbitMQ详细步骤里最常被搜索的路径。

第一步:安装Erlang依赖

RabbitMQ与Erlang有严格的版本对应关系,用系统自带的yum源安装Erlang通常版本过旧,会导致RabbitMQ启动失败,建议使用Erlang Solutions仓库:

# 安装必要的依赖工具
yum install -y epel-release
yum install -y unzip wget
# 添加Erlang仓库(以RabbitMQ 3.12.x为例,对应Erlang 25.x)
wget https://packages.erlang-solutions.com/erlang/rpm/centos/rpm-centos7.repo
mv rpm-centos7.repo /etc/yum.repos.d/
# 安装Erlang
yum install -y erlang-25.0.4

验证Erlang是否安装成功:

erl -version

如果输出类似 Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 13.x 的版本信息,说明安装正常。注意不要用yum install erlang直接装,CentOS 7默认源里的Erlang是R16B03,老得无法配合新版RabbitMQ工作。

如何在虚拟机里搭建RabbitMQ?,详细步骤有哪些?

第二步:安装RabbitMQ服务端

截至2026年,RabbitMQ 3.13.x是稳定版本线,使用官方提供的PackageCloud仓库安装:

# 添加RabbitMQ仓库
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | bash
# 安装RabbitMQ
yum install -y rabbitmq-server-3.13.7

安装完成后,启动服务并设置开机自启:

systemctl enable --now rabbitmq-server
systemctl status rabbitmq-server

看到 active (running) 状态就说明服务端已经跑起来了,RabbitMQ默认监听5672端口,用 ss -tlnp | grep 5672 可以验证端口监听正常。

第三步:开启Web管理插件

RabbitMQ自带一个功能完整的Web管理界面,默认没有开启,执行下面命令启动:

rabbitmq-plugins enable rabbitmq_management

开启后,15672端口会开始监听HTTP请求,此时在虚拟机内访问 http://localhost:15672 应该能看到登录页面,默认账号密码是 guest/guest,但guest账号只允许通过localhost访问,稍后需要创建远程可访问的管理账号。

配置虚拟机端口转发与远程访问

RabbitMQ虚拟机安装教程做到这一步,卡住的人最多,明明服务起来了,宿主机访问却不通,原因几乎都是端口转发没配置或账号权限受限。

修改guest账号限制(开发环境推荐)

如果只是本机调试,修改RabbitMQ配置文件允许guest远程访问即可:

# 修改配置文件
vi /etc/rabbitmq/rabbitmq.conf
# 添加下列三行
loopback_users.guest = false
listeners.tcp.default = 5672
management.tcp.port = 15672
# 重启服务
systemctl restart rabbitmq-server

创建专用管理账号(更安全)

生产环境或共享开发环境不建议开放guest账号,应该创建独立账号并授予管理员角色:

# 创建用户(用户名:admin,密码:admin123)
rabbitmqctl add_user admin admin123
# 设置管理员角色
rabbitmqctl set_user_tags admin administrator
# 设置访问权限(vhost为/,允许配置、写、读)
rabbitmqctl set_permissions -p / admin "." "." "."

VMware NAT端口转发配置

在VMware中关闭虚拟机,打开“编辑虚拟机设置”→“网络适配器”→“NAT设置”→“添加端口转发”,将宿主机的5672和15672端口分别映射到虚拟机的对应端口,VirtualBox的方式类似,“网络”→“高级”→“端口转发”,添加两条规则:

  • 名称:RabbitMQ通信,协议TCP,宿主机端口5672,子系统端口5672
  • 名称:RabbitMQ管理,协议TCP,宿主机端口15672,子系统端口15672

配置完成后在宿主机浏览器访问 http://localhost:15672,用刚创建的admin账号登录。如果仍无法访问,优先检查虚拟机的监听地址

如何在虚拟机里搭建RabbitMQ?,详细步骤有哪些?

RabbitMQ默认监听所有网卡,不太可能是这个问题,但请确认没改过 listeners.tcp 配置。

Ubuntu虚拟机安装RabbitMQ的差异点

Ubuntu系统在虚拟机搭建RabbitMQ的操作与CentOS大同小异,差异主要在依赖安装命令上,以下命令在Ubuntu 22.04下验证过:

# 更新系统
apt update && apt upgrade -y
# 安装Erlang(Ubuntu 22.04官方源Erlang版本较新,可直接安装)
apt install -y erlang
# 添加RabbitMQ官方仓库
curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | apt-key add -
echo "deb https://dl.bintray.com/rabbitmq-erlang/debian focal erlang" >> /etc/apt/sources.list.d/rabbitmq.list
echo "deb https://dl.bintray.com/rabbitmq/debian focal main" >> /etc/apt/sources.list.d/rabbitmq.list
# 安装RabbitMQ
apt install -y rabbitmq-server
# 后续启用插件、创建账号等操作与CentOS完全一致

Ubuntu上的Erlang版本与RabbitMQ的兼容性问题比CentOS少得多,这也是为什么很多开发者更愿意在Ubuntu虚拟机里部署RabbitMQ做学习测试,但生产服务器僵局还是CentOS系偏多,选哪种取决于团队熟悉的运维体系。

Docker方式搭建RabbitMQ虚拟机的快捷路径

如果虚拟机里已经装了Docker,用容器方式搭建消息队列是最快的,几分钟就能搞定,而且不需要处理Erlang依赖,一条命令足够:

docker run -d --name rabbitmq 
  -p 5672:5672 -p 15672:15672 
  -e RABBITMQ_DEFAULT_USER=admin 
  -e RABBITMQ_DEFAULT_PASS=admin123 
  rabbitmq:3.13-management

镜像名称里带 management 后缀的版本已经内置了Web管理插件,不需要再执行 rabbitmq-plugins enable,这种方式不仅适用于虚拟机,也适合在云服务器上快速部署,用Docker搭RabbitMQ的缺点是数据持久化需要额外配置volume挂载,容器删掉重建后数据就丢了,这对生产环境是致命的,但对于新手学习完全够用。

下表对比了三类虚拟机部署RabbitMQ方式的优缺点,帮你按场景决策:

安装方式 耗时 复杂度 数据持久化 适合场景
yum/apt安装 15-20分钟 中等 原生持久化 开发环境、生产环境
Docker容器 5分钟 低 需手动配置Volume 快速验证、学习测试
二进制安装包 10分钟 高 原生持久化 对版本有特殊要求的场景

常见RabbitMQ启动失败排查

虚拟机环境下的RabbitMQ故障,九成集中在下面三个环节。

Erlang版本不匹配

RabbitMQ启动后立即退出,日志里报 Failed to start application rabbit 或 {error,{cannot_read_enabled_plugins_file,...}}

如何在虚拟机里搭建RabbitMQ?,详细步骤有哪些?

,多半是Erlang版本问题,执行 erl -version 查看当前版本,再去RabbitMQ官网对照版本兼容表,业内专家指出,绝大多数RabbitMQ的诡异报错,根源都是Erlang版本超出支持范围。

端口被占用

虚拟机里跑着其他Java程序时,有可能抢占了5672端口,用 ss -tlnp | grep 5672 看端口被谁占用,如果确实冲突,修改RabbitMQ监听端口即可:

# 在rabbitmq.conf中加入
listeners.tcp.default = 5673

主机名解析问题

RabbitMQ启动时依赖主机名的解析,如果你的虚拟机改了主机名,但 /etc/hosts 没同步,会导致启动时报 {error,{could_not_read_hostname,...}},解决方法:

# 设置固定主机名
hostnamectl set-hostname rabbitmq-node1
# 在/etc/hosts中加入
192.168.x.x rabbitmq-node1

虚拟机里搭建RabbitMQ的关键节点:环境准备阶段关掉防火墙和SELinux,安装阶段严格匹配Erlang版本,配置阶段处理guest账号限制和端口转发,这三步做到位,整个流程就不会出幺蛾子,熟悉了这套流程,不管换到云服务器还是物理机,原理都是相通的。

常见的RabbitMQ虚拟机搭建问题解答

虚拟机里安装RabbitMQ需要多大的内存配置?

给虚拟机分配2GB内存是最基础的数值。 RabbitMQ自身运行时大约占用300-500MB内存,但消息堆积后内存占用会快速上升,如果同时运行多个队列和消费者,建议给虚拟机分配到4GB内存,低于1GB内存的虚拟机跑RabbitMQ会比较吃力,频繁的GC会导致吞吐量明显波动,官方文档建议的内存阈值是物理内存的40%用于消息堆积,这个比例在虚拟机里同样适用。

用Docker方式在虚拟机搭建RabbitMQ和直接安装有什么区别?

最核心的区别在于数据持久化方式。 直接安装时数据默认写入 /var/lib/rabbitmq,只要不删系统文件数据就在;Docker方式如果没挂载volume,docker rm 容器后所有队列、消息、用户账号全部丢失,另一个差异是Docker容器内RabbitMQ的日志收集和排错比原生安装更麻烦,需要 docker logs 进入容器内部才能看到完整日志,如果是为了学习RabbitMQ的功能特性,Docker方式更轻量;如果是为了模拟生产环境,建议直接安装。

RabbitMQ的guest账号只能在本地登录,虚拟机里如何解决远程访问问题?

核心思路是创建新用户替代guest。 RabbitMQ出于安全考虑,默认禁止guest账号非localhost登录,这个限制无法通过简单配置绕过,标准做法是执行 rabbitmqctl add_user 创建新管理员账号,再配合 rabbitmqctl set_permissions 授权,改配置文件中的 loopback_users.guest = false 也有效,但会降低安全性,只建议在隔离的虚拟网络环境里这样做,生产环境务必创建独立账号并启用TLS通信。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/618761.html

赞 (0)
虚拟机的UUID如何固定和管理更有效,有哪些技巧?
上一篇 2026年9月3日 05:40
Kali装虚拟机空间不足怎么办,虚拟机扩容方法有哪些?
下一篇 2026年9月3日 05:47

相关推荐

  • 公司网站模板源代码怎么获取?免费建站源码下载

    公司网站模板源代码在数字化转型的浪潮中,企业官网不仅是品牌形象的展示窗口,更是业务转化的核心阵地,对于技术团队而言,拥有自主可控、高性能且易于二次开发的公司网站模板源代码,是构建高效、安全且符合SEO规范的数字化基础设施的关键一步,本文将从服务器性能、代码架构、安全稳定性及2026年最新优惠活动四个维度,对当前……

    2026年6月28日
    1700
  • 大型网站技术如何演进?网站高并发架构优化方案

    在数字化转型的深水区,大型网站的技术架构演进已不再仅仅是代码层面的优化,而是对基础设施稳定性、弹性伸缩能力以及成本控制的全面考验,对于追求高并发、低延迟且具备海量数据处理能力的业务场景而言,选择一款能够承载未来三年技术演进的服务器产品,是架构师与决策者必须面对的严峻课题,本次深度测评聚焦于当前市场上具备代表性的……

    2026年5月30日
    4400
  • 公司网站模板实现难吗?如何快速搭建企业官网

    公司网站模板实现在数字化转型的浪潮中,企业官网不仅是品牌的数字名片,更是业务转化的核心引擎,许多企业在搭建网站时往往陷入误区:过度追求视觉炫酷而忽视底层性能,或盲目选择廉价方案导致后期维护成本高昂,一个真正高效、安全且易于扩展的企业官网,必须建立在高性能服务器架构与标准化模板实现的双重基石之上,本文将深入剖析服……

    2026年6月28日
    1800
  • 手机上开发app需要什么软件?手机APP开发必备工具推荐

    手机上开发App:从零到上架实战指南在手机上开发App的核心流程是:明确需求 > 选择技术栈 > 开发环境搭建 > 编码实现 > 全面测试 > 发布上架,遵循此路径,即使是非科班出身,也能高效产出高质量应用, 谋定而后动:需求分析与技术选型精准定义App目标:解决什么用户痛点?(如……

    2026年2月11日
    13500
  • 数据库开发过程是怎样的,数据库设计步骤有哪些?

    数据库系统的稳定性与性能直接决定了上层应用的质量,构建高效、可扩展的数据存储核心,必须遵循一套严谨的系统化工程方法论,这一流程不仅仅是编写SQL语句,而是涵盖了从需求剖析到运维监控的全生命周期管理,掌握科学的数据库开发过程,能够有效规避数据冗余、性能瓶颈及安全隐患,确保系统在长期迭代中保持高可用性, 需求分析与……

    2026年2月20日
    16200
  • cad三维开发难学吗?cad三维开发入门教程

    CAD三维开发的核心价值在于通过程序化手段实现设计自动化与数据智能化,它是连接几何造型与工程应用的桥梁,通过二次开发,企业能够将通用的CAD平台转化为专属的智能化设计系统,从而大幅缩短产品研发周期,减少人为操作失误,确保设计数据的准确性与一致性,这一过程不仅是技术的堆叠,更是设计流程的再造与优化,技术架构与开发……

    2026年3月11日
    11500
  • 软件开发年终奖一般多少?程序员年终奖怎么算?

    软件开发年终奖是对技术人员年度产出的量化反馈,更是职业价值的直接体现,要获得理想的回报,不能仅依赖管理者的主观印象,而必须建立一套可度量的价值输出体系,将代码质量、项目交付与业务增长深度绑定,获取高额奖金的核心逻辑在于:将个人技术产出转化为公司的业务收益,并通过数据化的方式在关键节点进行有效沟通, 深度解析奖金……

    2026年2月21日
    14800
  • 个人计算机数据如何防护?电脑数据丢失怎么恢复

    在数字化转型的深水区,服务器已不再仅仅是存储数据的容器,而是企业核心资产的安全防线与业务连续性的基石,随着勒索软件攻击的频发、数据泄露事件的常态化以及合规监管(如《数据安全法》、《个人信息保护法》)的日益严格,构建“内生安全”的服务器架构已成为IT决策者不可回避的战略命题,本文旨在通过深度技术拆解与实测数据,探……

    2026年6月30日
    1410
  • tk域名注册api怎么接入,有哪些方法?

    tk域名注册api怎么接入?完整流程与避坑指南tk域名注册api怎么接入?核心答案是:先完成域名注册商的实名认证,获取专属API Token,然后按照官方接口文档调用域名查询、注册、解析和续费接口,整个过程约10分钟即可跑通,为什么现在值得研究tk域名API接入tk域名是托克劳群岛国家顶级域名,历史上以免费注册……

    2026年9月2日
    1100
  • 小米开发者模式怎么关闭?小米开发者选项在哪里关闭

    小米开发者模式应当关闭,除非您正在进行特定的调试工作,对于绝大多数普通用户而言,长期开启开发者模式不仅无法带来实际的使用体验提升,反而会增加系统运行的不稳定性与安全风险,核心结论非常明确:在完成必要的调试任务后,立即关闭开发者模式是维护小米手机系统安全与流畅的最佳选择,开发者模式的双刃剑效应开发者模式原本是为应……

    2026年3月9日
    13500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注