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

相关推荐

  • 百度云服务器究竟收费多少,一年费用贵不贵?

    百度云服务器的费用不是固定数字,而是由配置、计费方式和活动共同决定,最低配轻量服务器每年通常只需不到一百元,但企业级高配实例月成本可能上千,大多数个人用户的实际花销集中在每年几十元到几百元,下面从价格构成、真实账单和省钱技巧三个维度拆解,百度云服务器收费到底怎么算百度云服务器定价遵循所有主流云厂商的通用逻辑:计……

    2026年9月24日
    000
  • 人脸识别系统是什么?人脸识别系统原理是什么

    关于人脸识别系统的描述在数字化转型的深水区,人脸识别技术已从单纯的“刷脸支付”场景,全面渗透至安防监控、考勤管理、金融核身及智慧社区等核心业务领域,随着《个人信息保护法》与《数据安全法》的严格执行,企业对于底层基础设施的算力稳定性、并发处理能力以及数据隐私合规性提出了前所未有的高要求,服务器作为人脸识别系统的……

    2026年6月5日
    7000
  • 佛山建网站费用具体多少,如何创建网站资产?

    在佛山建网站,费用从几千到数万不等,但真正有远见的企业主会把这笔支出看作创建网站资产的投资,而非单纯的建站费用,佛山建网站费用到底花在哪里?要理解价格差异,得先看这笔钱具体买了什么,佛山建网站费用通常由几个核心板块构成,每一项都直接影响最终成本和网站质量,域名与服务器域名:每年几十到几百元,.com/.cn等常……

    2026年8月12日
    500
  • 注册公司流程复杂吗?公司注册的详细步骤

    【公司注册怎么弄】在数字化浪潮席卷全球的今天,服务器已不再仅仅是存储数据的物理设备,而是企业数字化转型的基石,对于初创企业、中小企业乃至大型集团而言,选择一款稳定、高效且具备高性价比的云服务器,直接关系到业务系统的稳定性、数据安全性以及后续扩展的灵活性,本文旨在通过深度实测与多维度对比,为您解析当前主流云服务商……

    2026年6月27日
    1800
  • 开发工具哪个好?2026热门推荐及简介大全

    开发工具是现代程序开发的核心支柱,它们通过自动化、优化流程,帮助开发者高效构建、调试和部署代码,无论你是初学者还是经验丰富的程序员,掌握合适的工具能显著提升生产力,减少错误,并加速项目交付,本教程将深入介绍开发工具的基本概念、常见类型、选择策略,并通过实际案例展示如何在日常工作中应用它们,确保你从入门到精通,什……

    2026年2月9日
    13900
  • 均衡型10G云主机配置独享型负载均衡多少钱,哪家好?

    均衡型10G云主机配置价格通常在每月几百元到数千元不等,具体取决于云服务商、地域和配置细节;配置独享型负载均衡需要根据业务流量选择实例规格并绑定后端服务器,按固定带宽或并发连接数计费,均衡型10G云主机价格到底多少均衡型10G云主机是大多数中小型业务的首选方案,它兼顾了计算、内存和网络性能,尤其适合Web应用……

    2026年8月1日
    600
  • 个人网络开课怎么操作?零基础新手如何搭建线上课程

    个人网络开课在知识付费与在线教育日益成熟的今天,稳定、低延迟且高并发的服务器架构是保障学员体验与课程交付质量的基石,对于独立讲师、小型教育团队而言,选择一款性价比极高且具备高可用性的云服务器,不仅是技术选型问题,更是商业运营的核心环节,本次测评将深入剖析主流云服务商在“个人网络开课”场景下的表现,并结合2026……

    2026年7月3日
    6900
  • 服务器集中存储大概需要多少钱,哪个品牌好?

    对于需要统一管理数据资产的企业,服务器集中存储是提升运维效率、保障业务连续性的核心基础设施,这一结论并非空谈,而是基于大量企业数据管理实践得出的共识,当数据量突破单机承载极限,分散存储带来的管理混乱、安全风险与备份成本会急剧上升,集中存储正是解决这些问题的关键路径,服务器集中存储是什么?企业为什么需要?服务器集……

    2026年7月27日
    600
  • 电动车开发技术难点有哪些?新能源汽车研发流程详解

    电动车开发技术的核心在于“三电”系统的深度集成与智能化控制,这直接决定了车辆的性能边界与市场竞争力,整车开发不再是简单的动力替换,而是从架构层面进行的系统性重构,高效电驱总成、高能量密度电池包以及整车电子电气架构的协同进化,构成了现代电动车技术的基石,电驱动系统:从单一部件到高效集成电驱动系统是电动车的心脏,其……

    2026年3月21日
    12100
  • linux开发命令有哪些?最全linux常用命令大全详解

    Linux开发环境的强大在于命令行工具的高效组合,掌握核心命令及其组合技巧是提升开发效率的唯一捷径,对于开发者而言,图形界面往往只是辅助,真正的底层控制力来源于对Shell命令的精准驾驭,这不仅关乎操作速度,更决定了开发者排查问题、自动化构建以及系统调优的能力上限,文件与代码的精准操控文件操作是开发工作的基石……

    2026年3月6日
    11400

发表回复

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