Skip to content

Windows 安装

1. 概述

Windows 系统是开发和测试环境中常用的平台。本章将详细介绍在 Windows 系统上安装 RabbitMQ 的多种方式,包括官方安装包安装、Chocolatey 包管理器安装以及手动配置方法。

2. 系统要求

2.1 操作系统版本

操作系统版本要求架构
Windows 101607+x86_64
Windows 11所有版本x86_64
Windows Server 2016所有版本x86_64
Windows Server 2019所有版本x86_64
Windows Server 2022所有版本x86_64

2.2 硬件要求

资源最低要求推荐配置
CPU1 核2 核+
内存1 GB2 GB+
磁盘2 GB10 GB+

2.3 软件依赖

  • Erlang/OTP:必须先安装兼容版本的 Erlang
  • PowerShell:5.1 或更高版本
  • .NET Framework:部分功能需要

3. 安装 Erlang/OTP

3.1 下载 Erlang

访问 Erlang 官方下载页面:

https://www.erlang.org/downloads

或直接下载:

https://github.com/erlang/otp/releases/download/OTP-26.2.5/otp_win64_26.2.5.exe

3.2 安装 Erlang

步骤 1:运行下载的安装程序 otp_win64_26.2.5.exe

步骤 2:选择安装路径(建议使用默认路径)

C:\Program Files\erl-26.2.5

步骤 3:完成安装向导

步骤 4:配置环境变量

powershell
# 设置 ERLANG_HOME 环境变量
[System.Environment]::SetEnvironmentVariable('ERLANG_HOME', 'C:\Program Files\erl-26.2.5', 'Machine')

# 添加到 PATH
$path = [System.Environment]::GetEnvironmentVariable('Path', 'Machine')
$newPath = $path + ';%ERLANG_HOME%\bin'
[System.Environment]::SetEnvironmentVariable('Path', $newPath, 'Machine')

步骤 5:验证安装

powershell
# 打开新的 PowerShell 窗口
erl -version
# Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 14.2

# 或进入 Erlang Shell
erl
# Erlang/OTP 26 [erts-14.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]
# Eshell V14.2 (press Ctrl+G to abort, type help(). for help)
# 1> erlang:system_info(otp_release).
# "26"
# 1> halt().

4. 安装 RabbitMQ

4.1 方式一:官方安装包(推荐)

步骤 1:下载 RabbitMQ

访问官方下载页面:

https://www.rabbitmq.com/download.html

或直接下载:

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.0/rabbitmq-server-3.13.0.exe

步骤 2:运行安装程序

  1. 双击 rabbitmq-server-3.13.0.exe
  2. 接受许可协议
  3. 选择安装路径(建议默认)
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.0
  1. 选择安装组件(建议全部选择)
  2. 完成安装

步骤 3:配置环境变量

powershell
# 设置 RABBITMQ_SERVER 环境变量
[System.Environment]::SetEnvironmentVariable('RABBITMQ_SERVER', 'C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.0', 'Machine')

# 添加到 PATH
$path = [System.Environment]::GetEnvironmentVariable('Path', 'Machine')
$newPath = $path + ';%RABBITMQ_SERVER%\sbin'
[System.Environment]::SetEnvironmentVariable('Path', $newPath, 'Machine')

步骤 4:启动服务

powershell
# 以管理员身份运行 PowerShell

# 启动 RabbitMQ 服务
rabbitmq-service start

# 或使用 Windows 服务管理器
net start RabbitMQ

步骤 5:验证安装

powershell
# 检查服务状态
rabbitmqctl status

# 查看服务状态
sc query RabbitMQ

4.2 方式二:Chocolatey 安装

安装 Chocolatey(如未安装)

powershell
# 以管理员身份运行 PowerShell
Set-ExecutionPolicy Bypass -Scope Process -Force

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072

iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

安装 Erlang 和 RabbitMQ

powershell
# 安装 Erlang
choco install erlang -y

# 安装 RabbitMQ
choco install rabbitmq -y

# 验证安装
rabbitmqctl status

指定版本安装

powershell
choco install erlang --version=26.2.5 -y
choco install rabbitmq --version=3.13.0 -y

4.3 方式三:便携版安装

步骤 1:下载便携版

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.0/rabbitmq-server-windows-3.13.0.zip

步骤 2:解压文件

powershell
# 解压到指定目录
Expand-Archive -Path rabbitmq-server-windows-3.13.0.zip -DestinationPath C:\RabbitMQ

步骤 3:配置环境变量

powershell
# 设置环境变量
[System.Environment]::SetEnvironmentVariable('RABBITMQ_SERVER', 'C:\RabbitMQ\rabbitmq_server-3.13.0', 'Machine')

# 设置数据目录
[System.Environment]::SetEnvironmentVariable('RABBITMQ_MNESIA_BASE', 'C:\RabbitMQ\data', 'Machine')
[System.Environment]::SetEnvironmentVariable('RABBITMQ_LOG_BASE', 'C:\RabbitMQ\logs', 'Machine')

# 创建目录
New-Item -ItemType Directory -Path 'C:\RabbitMQ\data' -Force
New-Item -ItemType Directory -Path 'C:\RabbitMQ\logs' -Force

步骤 4:安装为 Windows 服务

powershell
# 进入 sbin 目录
cd C:\RabbitMQ\rabbitmq_server-3.13.0\sbin

# 安装服务
.\rabbitmq-service.bat install

# 启动服务
.\rabbitmq-service.bat start

5. 配置说明

5.1 配置文件位置

文件类型位置说明
主配置文件%APPDATA%\RabbitMQ\rabbitmq.confRabbitMQ 配置
环境变量%APPDATA%\RabbitMQ\rabbitmq-env.conf环境变量配置
高级配置%APPDATA%\RabbitMQ\advanced.configErlang 术语配置

5.2 创建配置文件

powershell
# 创建配置目录
$configDir = "$env:APPDATA\RabbitMQ"
New-Item -ItemType Directory -Path $configDir -Force

# 创建主配置文件
$configContent = @"
listeners.tcp.default = 5672
management.tcp.port = 15672

default_user = guest
default_pass = guest

loopback_users = none

vm_memory_high_watermark.relative = 0.6
disk_free_limit.absolute = 1GB

log.file.level = info
log.console = true
log.console.level = info
"@

Set-Content -Path "$configDir\rabbitmq.conf" -Value $configContent -Encoding UTF8

5.3 环境变量配置

powershell
$envContent = @"
NODENAME=rabbit@localhost
NODE_IP_ADDRESS=0.0.0.0
NODE_PORT=5672
MNESIA_BASE=C:/RabbitMQ/data
LOG_BASE=C:/RabbitMQ/logs
"@

Set-Content -Path "$env:APPDATA\RabbitMQ\rabbitmq-env.conf" -Value $envContent -Encoding UTF8

5.4 启用管理插件

powershell
# 启用管理插件
rabbitmq-plugins enable rabbitmq_management

# 重启服务
rabbitmq-service stop
rabbitmq-service start

# 或使用 net 命令
net stop RabbitMQ
net start RabbitMQ

5.5 创建管理员用户

powershell
# 添加用户
rabbitmqctl add_user admin YourStrongPassword123!

# 设置用户标签
rabbitmqctl set_user_tags admin administrator

# 设置权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

# 删除默认 guest 用户(可选)
rabbitmqctl delete_user guest

# 查看用户列表
rabbitmqctl list_users

6. 服务管理

6.1 使用 rabbitmq-service 命令

powershell
# 安装服务
rabbitmq-service install

# 卸载服务
rabbitmq-service remove

# 启动服务
rabbitmq-service start

# 停止服务
rabbitmq-service stop

# 重启服务
rabbitmq-service restart

# 查看服务状态
rabbitmq-service status

6.2 使用 Windows 服务管理

powershell
# 启动服务
net start RabbitMQ

# 停止服务
net stop RabbitMQ

# 使用 sc 命令
sc start RabbitMQ
sc stop RabbitMQ
sc query RabbitMQ

# 使用 PowerShell
Start-Service RabbitMQ
Stop-Service RabbitMQ
Restart-Service RabbitMQ
Get-Service RabbitMQ

6.3 设置服务启动类型

powershell
# 设置为自动启动
sc config RabbitMQ start= auto

# 设置为手动启动
sc config RabbitMQ start= demand

# 设置为延迟启动
sc config RabbitMQ start= delayed-auto

7. 防火墙配置

7.1 使用 PowerShell 配置防火墙

powershell
# 允许 AMQP 端口
New-NetFirewallRule -DisplayName "RabbitMQ AMQP" -Direction Inbound -Protocol TCP -LocalPort 5672 -Action Allow

# 允许管理界面端口
New-NetFirewallRule -DisplayName "RabbitMQ Management" -Direction Inbound -Protocol TCP -LocalPort 15672 -Action Allow

# 允许集群通信端口
New-NetFirewallRule -DisplayName "RabbitMQ Cluster" -Direction Inbound -Protocol TCP -LocalPort 25672 -Action Allow

# 允许 EPMD 端口
New-NetFirewallRule -DisplayName "RabbitMQ EPMD" -Direction Inbound -Protocol TCP -LocalPort 4369 -Action Allow

7.2 使用 netsh 配置防火墙

powershell
netsh advfirewall firewall add rule name="RabbitMQ AMQP" dir=in action=allow protocol=tcp localport=5672
netsh advfirewall firewall add rule name="RabbitMQ Management" dir=in action=allow protocol=tcp localport=15672
netsh advfirewall firewall add rule name="RabbitMQ Cluster" dir=in action=allow protocol=tcp localport=25672
netsh advfirewall firewall add rule name="RabbitMQ EPMD" dir=in action=allow protocol=tcp localport=4369

7.3 查看防火墙规则

powershell
Get-NetFirewallRule -DisplayName "RabbitMQ*"
netsh advfirewall firewall show rule name="RabbitMQ AMQP"

8. 常见问题与解决方案

8.1 Erlang 未找到

问题表现

Error: Unable to locate erlang.exe
Please ensure that Erlang is installed and ERLANG_HOME is set correctly

解决方案

powershell
# 检查 Erlang 安装
Test-Path "C:\Program Files\erl-26.2.5\bin\erl.exe"

# 设置 ERLANG_HOME
[System.Environment]::SetEnvironmentVariable('ERLANG_HOME', 'C:\Program Files\erl-26.2.5', 'Machine')

# 验证环境变量
$env:ERLANG_HOME

8.2 服务启动失败

问题表现

The RabbitMQ service on Local Computer started and then stopped.

排查步骤

powershell
# 查看事件日志
Get-EventLog -LogName Application -Source RabbitMQ -Newest 20

# 查看服务日志
Get-Content "$env:APPDATA\RabbitMQ\log\*.log" -Tail 50

# 尝试控制台启动
cd "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.0\sbin"
.\rabbitmq-server.bat

解决方案

powershell
# 检查 Erlang Cookie
$cookiePath = "$env:USERPROFILE\.erlang.cookie"
Test-Path $cookiePath
Get-Content $cookiePath

# 重新安装服务
rabbitmq-service remove
rabbitmq-service install
rabbitmq-service start

8.3 端口被占用

问题表现

Error: {listener_start_failure,5672,{already_started,<0.123.0>}}

解决方案

powershell
# 查看端口占用
netstat -ano | findstr :5672

# 结束占用进程
taskkill /PID <PID> /F

# 或修改 RabbitMQ 端口
$configContent = "listeners.tcp.default = 5673"
Add-Content -Path "$env:APPDATA\RabbitMQ\rabbitmq.conf" -Value $configContent

8.4 无法访问管理界面

问题表现

访问 http://localhost:15672 无响应

解决方案

powershell
# 检查插件状态
rabbitmq-plugins list | Select-String "management"

# 启用管理插件
rabbitmq-plugins enable rabbitmq_management

# 重启服务
net stop RabbitMQ
net start RabbitMQ

# 检查端口
netstat -ano | findstr :15672

# 检查防火墙
Get-NetFirewallRule -DisplayName "*15672*"

8.5 登录失败

问题表现

User can only log in via localhost

解决方案

powershell
# 修改配置允许远程登录
$configContent = "loopback_users = none"
Add-Content -Path "$env:APPDATA\RabbitMQ\rabbitmq.conf" -Value $configContent

# 重启服务
net stop RabbitMQ
net start RabbitMQ

# 或创建新用户
rabbitmqctl add_user admin password
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

问题表现

Error: {badrpc,nodedown}

解决方案

powershell
# 检查 Cookie 文件
$cookiePath = "$env:USERPROFILE\.erlang.cookie"
$cookiePath2 = "C:\Windows\System32\config\systemprofile\.erlang.cookie"

# 复制 Cookie 文件
Copy-Item $cookiePath $cookiePath2 -Force

# 设置权限
icacls $cookiePath /grant "SYSTEM:(R)"
icacls $cookiePath /grant "Administrators:(R)"

8.7 内存告警

问题表现

memory resource limit alarm set on node

解决方案

powershell
# 修改内存水位线
$configContent = @"
vm_memory_high_watermark.relative = 0.4
total_memory_available_override_value = 4GB
"@
Add-Content -Path "$env:APPDATA\RabbitMQ\rabbitmq.conf" -Value $configContent

# 重启服务
net stop RabbitMQ
net start RabbitMQ

9. 验证方法

9.1 检查服务状态

powershell
# 使用 rabbitmqctl
rabbitmqctl status

# 使用 Windows 服务
Get-Service RabbitMQ
sc query RabbitMQ

# 检查进程
Get-Process -Name erl*
Get-Process -Name rabbitmq*

9.2 检查端口监听

powershell
netstat -ano | findstr ":5672"
netstat -ano | findstr ":15672"
netstat -ano | findstr ":25672"
netstat -ano | findstr ":4369"

9.3 检查日志

powershell
# 查看日志目录
$logDir = "$env:APPDATA\RabbitMQ\log"
Get-ChildItem $logDir

# 查看最新日志
Get-Content "$logDir\rabbit@*.log" -Tail 50

9.4 连接测试

powershell
# 使用 rabbitmqctl
rabbitmqctl list_queues
rabbitmqctl list_exchanges
rabbitmqctl list_users

# 使用 HTTP API
$cred = New-Object System.Management.Automation.PSCredential("guest", (ConvertTo-SecureString "guest" -AsPlainText -Force))
Invoke-RestMethod -Uri "http://localhost:15672/api/overview" -Credential $cred

9.5 管理界面测试

powershell
# 测试管理界面
Invoke-WebRequest -Uri "http://localhost:15672" -UseBasicParsing

# 使用 curl
curl http://localhost:15672
curl -u guest:guest http://localhost:15672/api/whoami

10. 卸载方法

10.1 使用安装程序卸载

  1. 打开"设置" > "应用" > "应用和功能"
  2. 找到 RabbitMQ Server
  3. 点击"卸载"
  4. 同样卸载 Erlang/OTP

10.2 使用命令行卸载

powershell
# 停止服务
net stop RabbitMQ

# 卸载服务
rabbitmq-service remove

# 使用 Chocolatey 卸载
choco uninstall rabbitmq -y
choco uninstall erlang -y

# 删除数据目录
Remove-Item -Path "$env:APPDATA\RabbitMQ" -Recurse -Force
Remove-Item -Path "$env:USERPROFILE\.erlang.cookie" -Force

10.3 手动清理

powershell
# 删除安装目录
Remove-Item -Path "C:\Program Files\RabbitMQ Server" -Recurse -Force
Remove-Item -Path "C:\Program Files\erl-*" -Recurse -Force

# 删除环境变量
[System.Environment]::SetEnvironmentVariable('RABBITMQ_SERVER', $null, 'Machine')
[System.Environment]::SetEnvironmentVariable('ERLANG_HOME', $null, 'Machine')

# 删除防火墙规则
Remove-NetFirewallRule -DisplayName "RabbitMQ*"

11. 相关链接