手动安装在 Windows 上
概述
本指南介绍如何在 Windows 上手动安装和配置 RabbitMQ。通常,我们建议在可能的情况下使用 对 Windows 更友好的自动化选项。
安装 Erlang/OTP
RabbitMQ 需要安装 64 位 受支持的 Erlang 版本。Windows 的最新二进制版本可从 Erlang/OTP 版本树 页面获取。
Erlang 将出现在“开始”菜单中,并且对于 64 位 Erlang 安装,\erl{version}\bin\erl.exe 将位于 C:\Program Files。
重要:您的系统上应只安装一个 Erlang 版本。请参阅 Windows 配置 页面。
确保设置 ERLANG_HOME
如果存在正在作为服务运行的 RabbitMQ 代理的现有安装,并且您安装了不同架构的 Erlang VM,则必须在更新 ERLANG_HOME 之前卸载该服务。
将 ERLANG_HOME 设置为您实际放置 Erlang 安装的目录,例如 C:\Program Files\erl{version}(完整路径)。RabbitMQ 批处理文件期望执行 %ERLANG_HOME%\bin\erl.exe。
转到 开始 > 设置 > 控制面板 > 系统 > 高级 > 环境变量。创建系统环境变量 ERLANG_HOME,并将其设置为包含 bin\erl.exe 的目录的完整路径。
安装 RabbitMQ 服务器
在确认已安装受支持的 Erlang 版本后,下载 rabbitmq-server-windows-4.2.0.zip。
直接下载
| 描述 | 下载 | 签名 |
|---|---|---|
| Windows 系统安装程序(来自 GitHub) | rabbitmq-server-windows-4.2.0.zip | 签名 |
从 zip 文件中,将名为 rabbitmq_4.2.0 的文件夹提取到 C:\Program Files(或适合应用程序文件的位置)。
同步 Erlang Cookie
Erlang cookie 是用于 RabbitMQ 节点 和 CLI 工具 之间进行身份验证的共享密钥。该值存储在一个通常称为 Erlang cookie 文件的文件中。
服务帐户使用的 cookie 文件以及运行 rabbitmqctl.bat 的用户使用的 cookie 文件必须同步,CLI 工具(如 rabbitmqctl.bat)才能正常工作。集群中的所有节点必须具有相同的 cookie 值(cookie 文件内容)。
有关详细信息,请参阅 CLI 工具如何向节点进行身份验证(以及节点之间如何相互验证):Erlang Cookie。
定位 CLI 工具和应用程序数据
CLI 工具
在 rabbitmq_4.2.0\sbin 目录中包含一些用于控制 RabbitMQ 服务器的命令脚本。
RabbitMQ 服务器可以作为应用程序或服务运行(不能同时运行)。
- rabbitmq-server.bat 以应用程序模式启动代理
- rabbitmq-service.bat 管理服务并启动代理
- rabbitmqctl.bat 管理正在运行的代理
以管理员身份登录。要查看输出,请在 sbin 目录中从 命令提示符 运行这些命令。
注意:在 Windows Vista(及更高版本)上,需要 提升权限(例如,右键单击图标选择“以管理员身份运行”)。
设置系统路径,以便可以执行 sbin 目录中的 RabbitMQ 服务器和 CLI 工具,而无需使用完全限定路径。
- 为
"C:\Program Files\rabbitmq_4.2.0"创建一个系统环境变量(例如RABBITMQ_SERVER)。如果将rabbitmq_4.2.0放在其他位置,或者升级版本,请相应调整。 - 将文字字符串 "
;%RABBITMQ_SERVER%\sbin" 追加到您的系统路径(也称为%PATH%)。
现在应该可以从任何(管理员)命令提示符运行 rabbitmq 命令了。
如果系统路径不包含 RabbitMQ sbin 目录,请导航到 rabbitmq_4.2.0\sbin 以运行命令。
节点数据目录
默认情况下,RabbitMQ 日志和节点的目录存储在当前用户的应用程序数据目录中,例如 C:\Documents and Settings\%USERNAME%\Application Data 或 C:\Users\%USERNAME%\AppData\Roaming。
在命令提示符下执行 echo %APPDATA% 以查找此目录。或者,通过“开始” > “运行”输入 %APPDATA% 即可打开此文件夹。
可以使用以下环境变量之一将节点 配置 为使用 不同的数据目录:RABBITMQ_BASE、RABBITMQ_MNESIA_BASE 或 RABBITMQ_MNESIA_DIR。请阅读 迁移指南 以了解这些变量各自的工作方式。
将 RabbitMQ 服务器作为应用程序运行
应用程序由 sbin 中的 rabbitmq-server.bat 脚本启动。
自定义 RabbitMQ 环境变量
服务可以使用其默认设置正常运行。可以 自定义 RabbitMQ 环境 或编辑 配置文件。
重要:设置环境变量后,必须重新启动节点。
以应用程序模式启动代理
运行命令
rabbitmq-server.bat -detached
这将在后台启动一个节点(不附加到命令提示符)。
或者,可以在 Windows 资源管理器中执行 rabbitmq-server.bat 以在前台启动节点。
启动节点时,将打开一个命令提示符窗口,显示简短的启动横幅,表明 RabbitMQ 代理已成功启动。
如果节点是在未带 -detached 选项启动的,例如使用 Windows 资源管理器,则需要第二个命令提示符窗口来使用 CLI 工具控制应用程序。
重要:关闭原始命令提示符窗口将强制关闭以此方式启动的服务器。
将 RabbitMQ 服务器作为服务运行
服务将在系统帐户的安全上下文中运行,而无需用户在控制台上登录。这通常更适合生产使用。服务器不应同时作为服务和应用程序运行。
服务使用 sbin 中的 rabbitmq-service.bat 脚本运行。
自定义 RabbitMQ 环境变量
服务可以使用其默认设置正常运行。可以 自定义 RabbitMQ 环境 或编辑 配置文件。
重要:设置环境变量后,必须重新安装服务。
安装服务
通过运行以下命令来安装服务
rabbitmq-service.bat install
现在,在 Windows 服务控制面板(“开始” > “运行”输入 services.msc)中应该会出现一个名为 RABBITMQ_SERVICENAME 的服务。
管理服务
要管理服务(安装、卸载、启动、停止、启用、禁用),请使用 sbin 中的 rabbitmq-service.bat 命令。或者,可以使用 Windows 服务面板(services.msc)执行服务脚本的一些相同功能。
以服务模式启动代理
要启动代理,请执行
rabbitmq-service.bat start
如果此命令的输出是“Service RABBITMQ_SERVICENAME started”,则表示服务已成功启动。
确认服务(名为 RABBITMQ_SERVICENAME)在服务中显示“已启动”状态
开始 > 运行 services.msc。
升级 Erlang VM
如果您已有安装并计划将 Erlang VM 从 32 位升级到 64 位版本,则必须在升级 VM 之前卸载代理。安装程序无法停止或删除使用不同架构 Erlang VM 安装的服务。
管理 RabbitMQ 节点
管理服务
在“开始”菜单中可以找到指向 RabbitMQ 目录的链接。
“开始”菜单中还有一个指向命令提示符窗口的链接,该窗口将以 sbin 目录启动。这是运行 命令行工具 最方便的方式。请注意,CLI 工具必须 向本地运行的 RabbitMQ 节点进行身份验证。这涉及到放置在用户正确位置的共享密钥文件。
停止节点
要停止代理或检查其状态,请在 sbin 目录中使用 rabbitmqctl.bat(以管理员身份)。
rabbitmqctl.bat stop
检查节点状态
以下命令执行最基本的节点健康检查,并在节点运行时显示一些关于节点的信息
rabbitmqctl.bat status
有关详细信息,请参阅 RabbitMQ CLI 工具指南 和 监控和健康检查指南。
日志文件和管理
服务器日志对于故障排除和根本原因分析至关重要。请参阅 日志记录 和 文件和目录位置 指南,了解日志文件位置、日志轮换等。
作为服务运行时进行故障排除
如果 Erlang VM 在 RabbitMQ 作为服务运行时崩溃,而不是将崩溃转储写入当前目录(这对服务来说没有意义),则会将其写入 RabbitMQ 服务器的基目录中的 erl_crash.dump 文件(由 RABBITMQ_BASE 环境变量设置,默认情况下为 %APPDATA%\%RABBITMQ_SERVICENAME%,否则通常为 %APPDATA%\RabbitMQ)。
默认用户访问
代理创建一个用户 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 以使用 不同的端口和特定的网络接口。
Windows 配置
我们致力于让 RabbitMQ 成为 Windows 上的首选。但是,有时存在我们无法控制的情况。请参阅 Windows 配置 页面。