在 Windows 上安装
概述
本指南介绍了在 Windows 上安装 RabbitMQ 的方法。重点介绍两种推荐的安装选项
- 使用 Chocolatey
- 使用官方安装程序,以管理员用户身份安装
本指南还介绍了 Windows 环境下的一些安装后主题
以及更多。这些主题在其他文档指南中进行了更详细的介绍。
另一份配套指南介绍了已知的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 需要安装 64 位支持的 Erlang 版本 for Windows。
可以从 Erlang/OTP 版本树页面获取适用于 Windows 的最新 Erlang 二进制构建版本。
必须使用管理员帐户安装 Erlang,否则 RabbitMQ Windows 服务将无法发现它。安装受支持的 Erlang 版本后,下载 RabbitMQ 安装程序 rabbitmq-server-{version}.exe
并运行它。它会将 RabbitMQ 安装为 Windows 服务,并使用默认配置启动它。
直接下载
描述 | 下载 | 签名 |
---|---|---|
适用于 Windows 系统的安装程序(来自 GitHub) | rabbitmq-server-4.1.0.exe | 签名 |
运行 RabbitMQ Windows 服务
一旦 Erlang 和 RabbitMQ 都已安装,RabbitMQ 节点就可以作为 Windows 服务启动。RabbitMQ 服务会自动启动。可以从“开始”菜单管理 RabbitMQ Windows 服务。
CLI 工具
RabbitMQ 节点通常使用 CLI 工具在 PowerShell 中进行管理、检查和操作。
在 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 节点进行身份验证。
停止节点
要停止 broker 或检查其状态,请在 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
必须能够与节点进行身份验证
日志文件和管理
服务器日志对于故障排除和根本原因分析至关重要。请参阅日志记录和文件和目录位置指南,以了解有关日志文件位置、日志轮换等的更多信息。
防火墙和安全工具
防火墙和安全工具可能会阻止 RabbitMQ Windows 服务和 CLI 工具正常运行。
应将此类工具配置为将对RabbitMQ 使用的端口的访问列入白名单。
默认用户访问
broker 创建了一个用户 guest
,密码为 guest
。未配置的客户端通常会使用这些凭据。默认情况下,这些凭据只能在连接到 localhost 的 broker 时使用,因此您需要在从任何其他计算机连接之前采取措施。
有关如何创建更多用户和删除 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:不使用 TLS 和使用 TLS 的 STOMP 客户端(仅当STOMP 插件启用时)
- 1883、8883:不使用 TLS 和使用 TLS 的 MQTT 客户端,如果MQTT 插件已启用
- 15674:STOMP-over-WebSockets 客户端(仅当Web STOMP 插件启用时)
- 15675:MQTT-over-WebSockets 客户端(仅当Web MQTT 插件启用时)
可以配置 RabbitMQ 以使用不同的端口和特定的网络接口。
升级 Erlang VM
如果您现有安装并计划将 Erlang VM 从 32 位版本升级到 64 位版本,则必须在升级 VM 之前卸载 broker。安装程序将无法停止或删除使用不同架构的 Erlang VM 安装的服务。
以服务方式运行时转储文件位置
如果 Erlang VM 在 RabbitMQ 作为服务运行时终止,它不会将崩溃转储写入当前目录(对于服务来说没有意义),而是写入 RabbitMQ 服务器的基本目录中的 erl_crash.dump
文件,默认为 %APPDATA%\%RABBITMQ_SERVICENAME%
- 通常为 %APPDATA%\RabbitMQ
。