在 Windows 上手动安装
概述
本指南介绍了如何在 Windows 上手动安装和配置 RabbitMQ。通常,我们建议尽可能使用 更易于自动化的 Windows 选项之一。
安装 Erlang/OTP
RabbitMQ 需要安装 64 位的 受支持的 Erlang 版本 for Windows。最新的 Windows 二进制构建版本可以从 Erlang/OTP 版本树页面获取。
Erlang 将出现在“开始”菜单中,并且对于 64 位 Erlang 安装,\erl{version}\bin\erl.exe
将位于 C:\Program Files
中
重要提示: 您的系统应该只安装一个 Erlang 版本。请查阅 Windows 配置 页面。
确保设置了 ERLANG_HOME 环境变量
如果已存在 RabbitMQ 安装,并且 broker 作为服务运行,并且您安装了具有不同架构的 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.1.0.zip
。
直接下载
描述 | 下载 | 签名 |
---|---|---|
Windows 系统的安装程序(来自 GitHub) | rabbitmq-server-windows-4.1.0.zip | 签名 |
从 zip 文件中,将名为 rabbitmq_4.1.0
的文件夹解压到 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.1.0\sbin
目录中,有一些脚本可以运行命令来控制 RabbitMQ 服务器。
RabbitMQ 服务器可以作为应用程序或服务运行(不能同时作为两者运行)。
- rabbitmq-server.bat 将 broker 作为应用程序启动
- rabbitmq-service.bat 管理服务并启动 broker
- rabbitmqctl.bat 管理正在运行的 broker
以管理员身份登录。要查看输出,请从 sbin
目录中的 命令提示符 运行这些命令。
注意: 在 Windows Vista(及更高版本)上,必须 提升权限(例如,右键单击图标以选择“以管理员身份运行”)。
设置系统路径,以便可以从 sbin
目录执行 RabbitMQ 服务器和 CLI 工具,而无需使用完全限定的路径。
- 为
"C:\Program Files\rabbitmq_4.1.0"
创建一个系统环境变量(例如RABBITMQ_SERVER
)。如果您将rabbitmq_4.1.0
放在其他位置,或者您升级了版本,请调整此设置。 - 将字面字符串“
;%RABBITMQ_SERVER%\sbin
”追加到您的系统路径(也称为%PATH%
)。
现在应该可以从任何(管理员)命令提示符运行 rabbitmq 命令。
如果系统路径不包含 RabbitMQ sbin
目录,请导航到 rabbitmq_4.1.0\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 环境 或编辑 配置。
重要提示:设置环境变量后,必须重启节点。
将 Broker 作为应用程序启动
运行命令
rabbitmq-server.bat -detached
这将启动后台节点(未附加到命令提示符)。
或者,可以在 Windows 资源管理器中执行 rabbitmq-server.bat
以在前台启动节点。
启动节点后,将打开一个命令提示符窗口,显示一个简短的启动横幅,指示 RabbitMQ broker 已成功启动。
如果节点启动时没有 -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
) 也可用于执行与服务脚本相同的一些功能。
将 Broker 作为服务启动
要启动 broker,请执行
rabbitmq-service.bat start
如果此命令的输出为“Service RABBITMQ_SERVICENAME started
”,则表示服务已成功启动。
确认名为 RABBITMQ_SERVICENAME 的服务在“服务”中报告“已启动”状态
“开始” > “运行” services.msc
。
升级 Erlang VM
如果您有现有安装,并计划将 Erlang VM 从 32 位版本升级到 64 位版本,则必须先卸载 broker,然后再升级 VM。安装程序将无法停止或删除使用不同架构的 Erlang VM 安装的服务。
管理 RabbitMQ 节点
管理服务
可以在“开始”菜单中找到 RabbitMQ 目录的链接。
在“开始”菜单中,还有一个指向命令提示符窗口的链接,该窗口将在 sbin 目录中启动。这是运行 命令行工具 的最便捷方式。请注意,CLI 工具必须 对本地运行的 RabbitMQ 节点进行身份验证。这涉及到共享密钥文件,该文件必须放置在用户的正确位置。
停止节点
要停止 broker 或检查其状态,请使用 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
)。
默认用户访问权限
broker 创建一个用户 guest
,密码为 guest
。未配置的客户端通常会使用这些凭据。默认情况下,这些凭据只能在连接到 localhost 的 broker 时使用,因此您需要先采取措施才能从任何其他计算机连接。
有关如何创建更多用户和删除 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)。除非确实需要这些端口上的外部连接(例如,集群使用 federation 或 CLI 工具在子网外部的机器上使用),否则不应公开这些端口。有关详细信息,请参阅 网络指南。
- 35672-35682: 供 CLI 工具(Erlang 分布式客户端端口)用于与节点通信,并从动态范围分配(计算为服务器分布式端口 + 10000 到服务器分布式端口 + 10010)。有关详细信息,请参阅 网络指南。
- 15672: HTTP API 客户端、管理 UI 和 rabbitmqadmin(仅当启用 management 插件 时)
- 61613, 61614: 不使用和使用 TLS 的 STOMP 客户端(仅当启用 STOMP 插件 时)
- 1883, 8883: 不使用和使用 TLS 的 MQTT 客户端,如果启用 MQTT 插件
- 15674: STOMP-over-WebSockets 客户端(仅当启用 Web STOMP 插件 时)
- 15675: MQTT-over-WebSockets 客户端(仅当启用 Web MQTT 插件 时)
可以 配置 RabbitMQ 以使用 不同的端口和特定的网络接口。
Windows 配置
我们的目标是使 RabbitMQ 成为 Windows 上的头等公民。但是,有时存在我们无法控制的情况。请查阅 Windows 配置 页面。