手动安装在 Windows 上
概述
本指南介绍如何在 Windows 上手动安装和配置 RabbitMQ。一般来说,我们建议尽可能使用更易于自动化的 Windows 选项。
安装 Erlang/OTP
RabbitMQ 需要安装 64 位支持的 Erlang 版本才能在 Windows 上运行。最新的 Windows 二进制构建版本可从Erlang/OTP 版本树页面获取。
Erlang 将出现在“开始”菜单中,并且\erl{version}\bin\erl.exe
将位于 64 位 Erlang 安装的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.0.2.zip
。
直接下载
描述 | 下载 | 签名 |
---|---|---|
Windows 系统的安装程序(来自GitHub) | rabbitmq-server-windows-4.0.2.zip | 签名 |
从 zip 文件中,将名为rabbitmq_4.0.2
的文件夹解压缩到C:\Program Files
(或应用程序文件的某个合适位置)。
同步 Erlang Cookie
Erlang cookie 是用于RabbitMQ 节点和CLI 工具之间身份验证的共享密钥。该值存储在一个通常称为 Erlang cookie 文件的文件中。
服务帐户和运行rabbitmqctl.bat
的用户使用的 cookie 文件必须同步,才能使rabbitmqctl.bat
等 CLI 工具正常工作。集群中的所有节点都必须具有相同的 cookie 值(cookie 文件内容)。
请参阅CLI 工具如何对节点进行身份验证(以及节点之间如何相互验证):Erlang Cookie以获取详细信息。
查找 CLI 工具和应用程序数据
CLI 工具
在rabbitmq_4.0.2\sbin
目录中,有一些脚本可以运行命令来控制 RabbitMQ 服务器。
RabbitMQ 服务器可以作为应用程序或服务运行(不能同时运行两者)。
- rabbitmq-server.bat 将代理作为应用程序启动
- rabbitmq-service.bat 管理服务并启动代理
- rabbitmqctl.bat 管理正在运行的代理
以管理员身份登录。要查看输出,请在sbin
目录中的命令提示符中运行这些命令。
注意:在 Windows Vista(及更高版本)上,必须提升权限(例如,右键单击图标以选择“以管理员身份运行”)。
设置系统路径,以便可以从sbin
目录中执行 RabbitMQ 服务器和 CLI 工具,而无需使用完全限定路径。
- 为
"C:\Program Files\rabbitmq_4.0.2"
创建系统环境变量(例如RABBITMQ_SERVER
)。如果将rabbitmq_4.0.2
放在其他位置或升级版本,请调整此设置。 - 将文字字符串“
;%RABBITMQ_SERVER%\sbin
”追加到您的系统路径(即%PATH%
)中。
现在,应该可以从任何(管理员)命令提示符中运行 rabbitmq 命令了。
如果系统路径不包含 RabbitMQ sbin
目录,请导航到rabbitmq_4.0.2\sbin
以运行命令。
节点数据目录
默认情况下,RabbitMQ 日志和节点的数据目录存储在当前用户的应用程序数据目录中,例如C:\Documents and Settings\<span class="envvar">%USERNAME%</span>\Application Data
或C:\Users\<span class="envvar">%USERNAME%</span>\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的服务。
管理服务
要管理服务(安装、删除、启动、停止、启用、禁用),请使用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:分别由不带和带 TLS 的 AMQP 0-9-1 和 1.0 客户端使用
- 25672:用于节点间和 CLI 工具通信(Erlang 分布式服务器端口),并从动态范围分配(默认情况下限制为单个端口,计算为 AMQP 端口 + 20000)。除非确实需要这些端口上的外部连接(例如,集群使用联合或 CLI 工具用于子网外的计算机),否则不应公开这些端口。有关详细信息,请参阅网络指南。
- 35672-35682:CLI 工具(Erlang 分布式客户端端口)用于与节点通信,并从动态范围分配(计算为服务器分布式端口 + 10000 到服务器分布式端口 + 10010)。有关详细信息,请参阅网络指南。
- 15672:HTTP API 客户端、管理 UI 和 rabbitmqadmin(仅当管理插件已启用时)
- 61613、61614:不带和带 TLS 的STOMP 客户端(仅当STOMP 插件已启用时)
- 1883、8883:如果MQTT 插件已启用,则不带和带 TLS 的MQTT 客户端
- 15674:STOMP-over-WebSockets 客户端(仅当Web STOMP 插件已启用时)
- 15675:MQTT-over-WebSockets 客户端(仅当Web MQTT 插件已启用时)
可以配置 RabbitMQ以使用不同的端口和特定的网络接口。
Windows 配置
我们的目标是使 RabbitMQ 成为 Windows 上的一等公民。但是,有时会遇到超出我们控制范围的情况。请查阅Windows 配置页面。