如何在虚拟机里搭建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

相关推荐

  • ios开发http请求怎么发送,ios http请求教程详解

    在iOS应用开发体系中,网络层是应用与外界交互的命脉,而HTTP协议的驾驭能力直接决定了应用的稳定性与用户体验,iOS开发 HTTP架构设计的核心结论在于:必须摒弃简单的同步请求思维,构建一套基于NSURLSession的现代异步网络栈,并严格实施ATS安全策略与错误处理机制,才能在复杂的移动网络环境中实现高可……

    2026年3月2日
    13600
  • 众包平台数据分析怎么做?众包数据分析工具推荐

    关于众包平台数据分析在数字化转型的浪潮中,众包平台已成为企业获取数据标注、内容审核及市场调研服务的重要渠道,随着数据规模的指数级增长,传统的基础服务器架构往往难以支撑高并发下的实时数据处理需求,服务器作为承载这些核心业务的基石,其性能稳定性直接决定了众包平台的数据交付效率与服务质量,本文将对主流云服务器在众包场……

    2026年6月3日
    3500
  • 制作网站到底要多少钱?企业建站费用明细

    关于制作网站收费标准在数字化营销日益普及的今天,企业建站已不再是简单的“展示名片”,而是构建品牌资产、获取精准流量的核心基础设施,许多客户在咨询初期往往只关注“建站价格”,却忽略了支撑网站稳定运行、数据安全及后续扩展的底层成本,一个专业的网站项目,其费用构成远比前端页面设计复杂,其中服务器资源与域名配置占据了长……

    2026年5月31日
    4500
  • 老罗的安卓开发视频在哪里看?全套教程免费下载

    对于渴望系统掌握Android底层原理与高级架构技术的开发者而言,老罗的安卓开发视频是行业内公认的“硬核”教科书,其核心价值在于突破了常规应用层开发的局限,通过深度剖析Framework层源码,帮助开发者构建起从应用绑定到底层驱动的完整知识体系,是进阶高级工程师、架构师的必经之路,深度解析:为何该系列教程具有不……

    2026年3月19日
    10900
  • 什么是免安装应用引擎?免安装应用引擎有哪些优缺点

    关于免安装应用引擎在云计算日益普及的今天,开发者与企业对基础设施的诉求已从单纯的“资源购买”转向“效率优先”,传统的虚拟机(ECS/EC2)虽然灵活,但往往伴随着繁琐的环境配置、依赖管理以及运维负担,相比之下,免安装应用引擎(Serverless PaaS / Containerless) 凭借其“代码即部署……

    2026年6月2日
    4300
  • 速云互联VPS怎么样?大带宽高防VPS推荐

    在当前网络环境日益复杂的背景下,企业与个人开发者对服务器的带宽吞吐能力与防御能力提出了双重考验,速云互联推出的105元/月大带宽高防VPS方案,以极具竞争力的价格切入市场,本篇测评将基于真实的硬件测试与网络数据,对该方案的综合性能进行深度拆解,并同步解析其2026年度专属优惠活动, 核心硬件性能测试服务器的基础……

    2026年4月27日
    5800
  • Java MySQL数据库div怎么用,怎么配置?

    Java与MySQL数据库的组合是后端开发的中坚力量,而div_Mysql数据库的整合模式则让前端页面与数据存储的衔接更加直观,在2026年的技术选型中,掌握这两者的协同优化是提升项目稳定性的关键,Java MySQL数据库连接池配置要点连接池是Java MySQL数据库开发中绕不开的环节,多数团队在项目初期会……

    2026年8月3日
    300
  • 音视频开发如何入门?新手教程与实战解析

    C音视频开发实战:从原理到高性能处理核心答案: C语言在音视频开发中占据不可替代的地位,关键在于高效利用FFmpeg进行编解码/封装/处理,结合SDL/SDL2实现跨平台渲染,并通过严谨的内存管理、线程模型及硬件加速技术实现高性能与低延迟, 音视频开发核心基础理论容器 vs 编码:容器 (Container……

    2026年2月8日
    12900
  • 地图开发怎么做?地图开发教程详解

    地图开发已成为企业数字化转型的核心基础设施,其价值不仅在于空间数据的可视化展示,更在于通过深度算法优化业务逻辑,实现降本增效,成功的地图项目实施,关键在于精准的技术选型、合理的架构设计以及对业务场景的深度解构,而非简单的API调用堆砌, 技术选型:商业API与开源方案的决策逻辑地图开发的首要任务是底层引擎的选择……

    2026年4月10日
    10300
  • 服务器上创建数据库怎么操作,有哪些注意事项?

    在服务器上创建数据库,核心是登录服务器后,通过数据库管理系统的命令行工具执行CREATE DATABASE语句,并配置字符集、用户权限和远程访问策略,确保服务稳定运行,对于刚接触服务器运维的朋友来说,在服务器上创建数据库可能听起来挺复杂,但其实拆开来看,无非就是几个固定步骤,这篇文章会带着你从零开始,走一遍完整……

    2026年7月29日
    500

发表回复

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