在 Windows 上安装
概述
本指南涵盖了 RabbitMQ 在 Windows 上的安装。重点介绍了两种推荐的安装方式
- 使用 Chocolatey
- 使用官方安装程序(需管理员权限)
本指南还涵盖了 Windows 环境下安装后的几个主题
- 节点配置基础
- CLI 工具身份验证
- RabbitMQ Windows 服务
- 管理节点
- 防火墙和安全工具的影响
- 文件和套接字句柄监控依赖:
handle.exe - 日志文件位置
- 默认用户限制
等等。这些主题在文档的其他指南中有更详细的介绍。
另一份配套指南涵盖了已知的Windows 配置问题及其解决方法。
使用 Chocolatey
RabbitMQ 软件包通过 Chocolatey 分发。新版本通过审批可能需要一段时间(有时是几周),因此不保证该选项总是提供最新版本。不过,它能够管理所需的依赖项。
要使用 Chocolatey 安装 RabbitMQ,请在命令行或 PowerShell 中运行以下命令
choco install rabbitmq
对于许多使用场景,Chocolatey 是最佳的安装方法。
Chocolatey 的 RabbitMQ 软件包是开源的,可以在 GitHub 上找到。
使用安装程序
官方 RabbitMQ 安装程序会为每个 RabbitMQ 版本制作。
与通过 Chocolatey 安装相比,此选项为 Windows 用户提供了最大的灵活性,但也要求用户了解安装程序中的某些假设和要求
- 一次只能安装一个 Erlang 版本
- Erlang 必须使用管理员账户安装
- 强烈建议 RabbitMQ 也使用管理员账户安装
- 安装路径只能包含 ASCII 字符。强烈建议路径中不要包含任何目录名空格。
- 可能需要手动复制 CLI 工具使用的共享密钥文件
- CLI 工具要求 Windows 控制台在 UTF-8 模式下运行
如果不满足这些条件,Windows 服务和 CLI 工具可能需要重新安装或采取其他手动步骤才能按预期运行。
这在Windows 配置指南中有更详细的介绍。
依赖项
RabbitMQ 需要 Windows 安装 64 位受支持的 Erlang 版本。
近期 Erlang Windows 版本构建包可从 Erlang/OTP 版本树页面获取。
Erlang 必须使用管理员账户安装,否则 RabbitMQ Windows 服务将无法发现它。一旦安装了受支持的 Erlang 版本,下载 RabbitMQ 安装程序 rabbitmq-server-{version}.exe 并运行它。它会将 RabbitMQ 安装为 Windows 服务,并使用默认配置启动它。
直接下载
| 描述 | 下载 | 签名 |
|---|---|---|
| Windows 系统安装程序(来自 GitHub) | rabbitmq-server-4.3.0.exe | 签名 |
运行 RabbitMQ Windows 服务
Erlang 和 RabbitMQ 都安装好后,RabbitMQ 节点就可以作为 Windows 服务启动了。RabbitMQ 服务会自动启动。可以通过“开始”菜单管理 RabbitMQ Windows 服务。
CLI 工具
RabbitMQ 节点通常使用 PowerShell 中的 CLI 工具进行管理、检查和操作。
在 Windows 上,CLI 工具后缀为 .bat(与其他平台相比)。例如,在 Windows 上调用 rabbitmqctl 的方式是 rabbitmqctl.bat。
为了使这些工具正常工作,它们必须能够通过名为 Erlang cookie 的共享密钥文件与 RabbitMQ 节点进行身份验证。
主要的 CLI 工具指南涵盖了大多数与命令行工具使用相关的主题。
要探索各种 RabbitMQ CLI 工具提供的命令,请使用 help 命令
# lists commands provided by rabbitmqctl.bat
rabbitmqctl.bat help
# lists commands provided by rabbitmq-diagnostics.bat
rabbitmq-diagnostics.bat help
# ...you guessed it!
rabbitmq-plugins.bat help
要了解特定命令,请将其名称作为参数传递给 help
rabbitmqctl.bat help add_user
Cookie 文件位置
在 Windows 上,cookie 文件位置取决于是否设置了 HOMEDRIVE 和 HOMEPATH 环境变量。
如果使用非管理员账户安装 RabbitMQ,节点和 CLI 工具使用的共享密钥文件将不会放置在正确的位置,导致在使用 rabbitmqctl.bat 和其他 CLI 工具时出现身份验证失败。
可以使用以下选项之一来缓解
- 使用管理员账户重新安装 RabbitMQ
- 将
.erlang.cookie文件手动从%SystemRoot%或%SystemRoot%\system32\config\systemprofile复制到%HOMEDRIVE%%HOMEPATH%。
节点配置
节点配置主要通过配置文件完成。可以使用许多可用的环境变量来控制节点的数据位置、配置文件路径等。
这在配置指南中有更详细的介绍
Windows 上的环境变量变更
重要提示:设置环境变量后,必须重新安装 Windows 服务。仅重启服务是不够的。
管理 RabbitMQ 节点
管理服务
可以在“开始”菜单中找到 RabbitMQ 目录的链接。
“开始”菜单中还有一个命令提示符窗口链接,它会在 sbin 目录下启动。这是运行命令行工具最方便的方法。
请注意,CLI 工具必须对目标 RabbitMQ 节点进行身份验证。
停止节点
要停止代理或检查其状态,请在 sbin 中使用 rabbitmqctl.bat(以管理员身份)。
rabbitmqctl.bat stop
检查节点状态
以下 CLI 命令运行基本的健康检查,并在节点运行的情况下显示有关该节点的一些信息。
# A basic health check of both the node and CLI tool connectivity/authentication
rabbitmqctl.bat status
为了使其工作,必须满足两个条件
- 节点必须正在运行
rabbitmqctl.bat必须能够与节点进行身份验证
请参阅 CLI 工具部分和监控与健康检查指南以了解更多信息。
日志文件和管理
服务器日志对于故障排除和根本原因分析至关重要。请参阅日志记录和文件和目录位置指南,了解日志文件位置、日志轮转等信息。
防火墙和安全工具
防火墙和安全工具可能会阻止 RabbitMQ Windows 服务和 CLI 工具正常运行。
应配置此类工具以将RabbitMQ 使用的端口加入白名单。
可选:安装 handle.exe 以进行文件句柄监控
RabbitMQ 节点收集并提供的指标之一是节点使用的文件和套接字句柄数量。
在 Windows 上,这些指标是从外部命令行工具 handle.exe 收集的。
Windows Server 2025 需要第 5 版,在大多数情况下也强烈推荐使用。
默认用户访问
代理创建一个用户 guest,密码为 guest。未配置的客户端通常会使用这些凭据。**默认情况下,这些凭据只能在连接到本地主机上的代理时使用**,因此在从任何其他计算机连接之前,您需要采取相应措施。
有关如何创建更多用户和删除 guest 用户的信息,请参阅访问控制文档。
端口访问
RabbitMQ 节点绑定到端口(打开服务器 TCP 套接字)以接受客户端和 CLI 工具连接。其他进程和工具(如防病毒软件)可能会阻止 RabbitMQ 绑定到端口。发生这种情况时,节点将无法启动。
CLI 工具、客户端库和 RabbitMQ 节点也打开连接(客户端 TCP 套接字)。防火墙可能会阻止节点和 CLI 工具之间的通信。确保以下端口可访问
- 4369:epmd,RabbitMQ 节点和 CLI 工具使用的对等发现服务
- 5672, 5671:供 AMQP 0-9-1 和 1.0 客户端使用(不带 TLS 和带 TLS)
- 25672:用于节点间和 CLI 工具通信(Erlang 分布服务器端口),并从动态范围分配(默认限制为单个端口,计算为 AMQP 端口 + 20000)。除非确实需要这些端口上的外部连接(例如,集群使用 联邦 或在子网之外的计算机上使用 CLI 工具),否则不应公开这些端口。有关详细信息,请参阅 网络指南。
- 35672-35682:供 CLI 工具使用(Erlang 分布客户端端口),用于与节点通信,并从动态范围分配(计算为:服务器分布式端口 + 10000 到服务器分布式端口 + 10010)。详见网络指南。
- 15672:HTTP API 客户端、管理 UI 和 rabbitmqadmin(仅当启用了管理插件时)
- 61613、61614:STOMP 客户端(无 TLS 和带 TLS)(仅当 STOMP 插件 启用时)
- 1883、8883:MQTT 客户端(无 TLS 和带 TLS),如果 MQTT 插件 启用
- 15674:STOMP-over-WebSockets 客户端(仅当 Web STOMP 插件 启用时)
- 15675:MQTT-over-WebSockets 客户端(仅当 Web MQTT 插件 启用时)
可以 配置 RabbitMQ 以使用 不同的端口和特定的网络接口。
升级 Erlang VM
如果您有现有安装并计划将 Erlang VM 从 32 位升级到 64 位版本,则必须在升级 VM 之前卸载代理。安装程序将无法停止或删除使用不同架构 Erlang VM 安装的服务。
以服务方式运行时 Dump 文件的位置
如果 RabbitMQ 作为服务运行时 Erlang VM 终止,它不会将崩溃转储(crash dump)写入当前目录(这对服务没有意义),而是写入 RabbitMQ 服务器基目录中的 erl_crash.dump 文件,默认为 %APPDATA%\%RABBITMQ_SERVICENAME%——通常情况下即 %APPDATA%\RabbitMQ。