Appearance
Windows 安装
1. 概述
Windows 系统是开发和测试环境中常用的平台。本章将详细介绍在 Windows 系统上安装 RabbitMQ 的多种方式,包括官方安装包安装、Chocolatey 包管理器安装以及手动配置方法。
2. 系统要求
2.1 操作系统版本
| 操作系统 | 版本要求 | 架构 |
|---|---|---|
| Windows 10 | 1607+ | x86_64 |
| Windows 11 | 所有版本 | x86_64 |
| Windows Server 2016 | 所有版本 | x86_64 |
| Windows Server 2019 | 所有版本 | x86_64 |
| Windows Server 2022 | 所有版本 | x86_64 |
2.2 硬件要求
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 1 核 | 2 核+ |
| 内存 | 1 GB | 2 GB+ |
| 磁盘 | 2 GB | 10 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.exe3.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:运行安装程序
- 双击
rabbitmq-server-3.13.0.exe - 接受许可协议
- 选择安装路径(建议默认)
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.0- 选择安装组件(建议全部选择)
- 完成安装
步骤 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 RabbitMQ4.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 -y4.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 start5. 配置说明
5.1 配置文件位置
| 文件类型 | 位置 | 说明 |
|---|---|---|
| 主配置文件 | %APPDATA%\RabbitMQ\rabbitmq.conf | RabbitMQ 配置 |
| 环境变量 | %APPDATA%\RabbitMQ\rabbitmq-env.conf | 环境变量配置 |
| 高级配置 | %APPDATA%\RabbitMQ\advanced.config | Erlang 术语配置 |
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 UTF85.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 UTF85.4 启用管理插件
powershell
# 启用管理插件
rabbitmq-plugins enable rabbitmq_management
# 重启服务
rabbitmq-service stop
rabbitmq-service start
# 或使用 net 命令
net stop RabbitMQ
net start RabbitMQ5.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_users6. 服务管理
6.1 使用 rabbitmq-service 命令
powershell
# 安装服务
rabbitmq-service install
# 卸载服务
rabbitmq-service remove
# 启动服务
rabbitmq-service start
# 停止服务
rabbitmq-service stop
# 重启服务
rabbitmq-service restart
# 查看服务状态
rabbitmq-service status6.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 RabbitMQ6.3 设置服务启动类型
powershell
# 设置为自动启动
sc config RabbitMQ start= auto
# 设置为手动启动
sc config RabbitMQ start= demand
# 设置为延迟启动
sc config RabbitMQ start= delayed-auto7. 防火墙配置
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 Allow7.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=43697.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_HOME8.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 start8.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 $configContent8.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 ".*" ".*" ".*"8.6 Cookie 文件权限问题
问题表现:
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 RabbitMQ9. 验证方法
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 509.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 $cred9.5 管理界面测试
powershell
# 测试管理界面
Invoke-WebRequest -Uri "http://localhost:15672" -UseBasicParsing
# 使用 curl
curl http://localhost:15672
curl -u guest:guest http://localhost:15672/api/whoami10. 卸载方法
10.1 使用安装程序卸载
- 打开"设置" > "应用" > "应用和功能"
- 找到 RabbitMQ Server
- 点击"卸载"
- 同样卸载 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" -Force10.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*"