Appearance
macOS 安装
1. 概述
macOS 是开发者常用的操作系统,本章将详细介绍在 macOS 上安装 RabbitMQ 的多种方式,包括 Homebrew 安装、官方包安装以及手动配置方法。
2. 系统要求
2.1 操作系统版本
| macOS 版本 | 代号 | 架构支持 |
|---|---|---|
| macOS 14.x | Sonoma | Intel, Apple Silicon |
| macOS 13.x | Ventura | Intel, Apple Silicon |
| macOS 12.x | Monterey | Intel, Apple Silicon |
| macOS 11.x | Big Sur | Intel, Apple Silicon |
| macOS 10.15.x | Catalina | Intel |
2.2 硬件要求
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 1 核 | 2 核+ |
| 内存 | 1 GB | 2 GB+ |
| 磁盘 | 2 GB | 5 GB+ |
2.3 Apple Silicon (M1/M2/M3) 注意事项
Apple Silicon Mac 需要注意:
- 确保使用 ARM64 原生版本的 Erlang 和 RabbitMQ
- Homebrew 默认安装 ARM64 版本
- Rosetta 2 转译版本可能存在性能问题
检查芯片架构:
bash
uname -m
# arm64 - Apple Silicon
# x86_64 - Intel3. Homebrew 安装(推荐)
3.1 安装 Homebrew
如果尚未安装 Homebrew:
bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Apple Silicon Mac 需要配置 PATH:
bash
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"3.2 安装 Erlang
bash
# 更新 Homebrew
brew update
# 搜索 Erlang 版本
brew search erlang
# 安装 Erlang
brew install erlang
# 验证安装
erl -version
# Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 14.2
# 查看 Erlang 版本
erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'
# "26"3.3 安装 RabbitMQ
bash
# 搜索 RabbitMQ
brew search rabbitmq
# 安装 RabbitMQ
brew install rabbitmq
# 验证安装
rabbitmqctl version
# 3.13.03.4 配置环境变量
bash
# 添加到 PATH(如果未自动添加)
echo 'export PATH="/opt/homebrew/sbin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# 或对于 Intel Mac
echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc
source ~/.zshrc3.5 启动服务
使用 brew services 管理:
bash
# 启动 RabbitMQ 服务
brew services start rabbitmq
# 查看服务状态
brew services list
# 停止服务
brew services stop rabbitmq
# 重启服务
brew services restart rabbitmq手动启动:
bash
# 前台启动
rabbitmq-server
# 后台启动
rabbitmq-server -detached
# 停止服务
rabbitmqctl stop3.6 安装指定版本
bash
# 查看可用版本
brew info rabbitmq
# 安装特定版本(需要先 unlink 当前版本)
brew unlink rabbitmq
brew install rabbitmq@3.12
# 切换版本
brew link rabbitmq@3.12 --force4. 官方包安装
4.1 下载安装包
访问官方下载页面:
https://www.rabbitmq.com/install-generic-unix.html或直接下载:
bash
RABBITMQ_VERSION="3.13.0"
# 下载通用 Unix 包
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v${RABBITMQ_VERSION}/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz
# 或使用 curl
curl -LO https://github.com/rabbitmq/rabbitmq-server/releases/download/v${RABBITMQ_VERSION}/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz4.2 解压安装
bash
# 解压文件
tar -xJf rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz
# 移动到安装目录
sudo mv rabbitmq_server-${RABBITMQ_VERSION} /usr/local/rabbitmq
# 创建软链接
sudo ln -s /usr/local/rabbitmq/sbin/rabbitmq-server /usr/local/bin/rabbitmq-server
sudo ln -s /usr/local/rabbitmq/sbin/rabbitmqctl /usr/local/bin/rabbitmqctl
sudo ln -s /usr/local/rabbitmq/sbin/rabbitmq-plugins /usr/local/bin/rabbitmq-plugins
sudo ln -s /usr/local/rabbitmq/sbin/rabbitmq-env /usr/local/bin/rabbitmq-env4.3 创建配置目录
bash
# 创建配置目录
sudo mkdir -p /usr/local/rabbitmq/etc/rabbitmq
sudo mkdir -p /usr/local/rabbitmq/var/lib/rabbitmq
sudo mkdir -p /usr/local/rabbitmq/var/log/rabbitmq
# 设置权限
sudo chown -R $(whoami):staff /usr/local/rabbitmq4.4 配置环境变量
bash
# 添加环境变量
cat >> ~/.zshrc << 'EOF'
# RabbitMQ
export RABBITMQ_HOME=/usr/local/rabbitmq
export PATH=$PATH:$RABBITMQ_HOME/sbin
export RABBITMQ_MNESIA_BASE=/usr/local/rabbitmq/var/lib/rabbitmq
export RABBITMQ_LOG_BASE=/usr/local/rabbitmq/var/log/rabbitmq
export RABBITMQ_CONFIG_FILE=/usr/local/rabbitmq/etc/rabbitmq/rabbitmq
EOF
source ~/.zshrc4.5 创建 launchd 服务
创建 plist 文件:
bash
cat > ~/Library/LaunchAgents/com.rabbitmq.server.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.rabbitmq.server</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/rabbitmq/sbin/rabbitmq-server</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
<key>RABBITMQ_MNESIA_BASE</key>
<string>/usr/local/rabbitmq/var/lib/rabbitmq</string>
<key>RABBITMQ_LOG_BASE</key>
<string>/usr/local/rabbitmq/var/log/rabbitmq</string>
</dict>
<key>StandardOutPath</key>
<string>/usr/local/rabbitmq/var/log/rabbitmq/stdout.log</string>
<key>StandardErrorPath</key>
<string>/usr/local/rabbitmq/var/log/rabbitmq/stderr.log</string>
</dict>
</plist>
EOF加载服务:
bash
# 加载服务
launchctl load ~/Library/LaunchAgents/com.rabbitmq.server.plist
# 启动服务
launchctl start com.rabbitmq.server
# 停止服务
launchctl stop com.rabbitmq.server
# 卸载服务
launchctl unload ~/Library/LaunchAgents/com.rabbitmq.server.plist5. 配置说明
5.1 配置文件位置
| 文件类型 | Homebrew 位置 | 手动安装位置 |
|---|---|---|
| 主配置文件 | /opt/homebrew/etc/rabbitmq/rabbitmq.conf | /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf |
| 环境变量 | /opt/homebrew/etc/rabbitmq/rabbitmq-env.conf | /usr/local/rabbitmq/etc/rabbitmq/rabbitmq-env.conf |
| 高级配置 | /opt/homebrew/etc/rabbitmq/advanced.config | /usr/local/rabbitmq/etc/rabbitmq/advanced.config |
5.2 创建配置文件
bash
# Homebrew 安装
CONFIG_DIR="/opt/homebrew/etc/rabbitmq"
# 手动安装
CONFIG_DIR="/usr/local/rabbitmq/etc/rabbitmq"
# 创建配置目录
mkdir -p $CONFIG_DIR
# 创建主配置文件
cat > $CONFIG_DIR/rabbitmq.conf << 'EOF'
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
default_vhost = /
default_permissions.configure = .*
default_permissions.write = .*
default_permissions.read = .*
EOF5.3 环境变量配置
bash
cat > $CONFIG_DIR/rabbitmq-env.conf << 'EOF'
NODENAME=rabbit@localhost
NODE_IP_ADDRESS=0.0.0.0
NODE_PORT=5672
EOF5.4 启用管理插件
bash
# 启用管理插件
rabbitmq-plugins enable rabbitmq_management
# 重启服务
brew services restart rabbitmq
# 或
rabbitmqctl stop
rabbitmq-server -detached
# 验证插件
rabbitmq-plugins list | grep management5.5 创建管理员用户
bash
# 添加用户
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 Homebrew 安装失败
问题表现:
Error: The following directories are not writable by your user:
/opt/homebrew/share解决方案:
bash
# 修复权限
sudo chown -R $(whoami) /opt/homebrew/share
sudo chown -R $(whoami) /opt/homebrew/lib
# 或重新安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"6.2 Erlang 版本不兼容
问题表现:
{"init terminating in do_boot",{undef,[{rabbit,boot,[],[]},...]}}解决方案:
bash
# 检查 Erlang 版本
erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'
# 升级 Erlang
brew upgrade erlang
# 或安装特定版本
brew install erlang@26
brew link erlang@26 --force6.3 服务启动失败
问题表现:
Error: {badarg,[{ets,match,...}]}排查步骤:
bash
# 查看日志
tail -f /opt/homebrew/var/log/rabbitmq/*.log
# 检查端口
lsof -i :5672
lsof -i :15672
# 检查进程
ps aux | grep rabbit
ps aux | grep beam解决方案:
bash
# 清理数据目录
rm -rf /opt/homebrew/var/lib/rabbitmq/mnesia/*
# 重新启动
brew services restart rabbitmq6.4 端口被占用
问题表现:
Error: {listener_start_failure,5672,{already_started,<0.123.0>}}解决方案:
bash
# 查看端口占用
lsof -i :5672
netstat -an | grep 5672
# 结束占用进程
kill -9 <PID>
# 或修改端口
echo "listeners.tcp.default = 5673" >> /opt/homebrew/etc/rabbitmq/rabbitmq.conf
brew services restart rabbitmq6.5 无法访问管理界面
问题表现:
访问 http://localhost:15672 无响应
解决方案:
bash
# 检查插件状态
rabbitmq-plugins list | grep management
# 启用管理插件
rabbitmq-plugins enable rabbitmq_management
# 检查端口
lsof -i :15672
# 重启服务
brew services restart rabbitmq6.6 Cookie 权限问题
问题表现:
Error: {badrpc,nodedown}解决方案:
bash
# 检查 Cookie 文件
ls -la ~/.erlang.cookie
cat ~/.erlang.cookie
# 修复权限
chmod 600 ~/.erlang.cookie
# 或重新生成 Cookie
rm ~/.erlang.cookie
rabbitmqctl stop
rabbitmq-server -detached6.7 Apple Silicon 兼容性问题
问题表现:
性能问题或 Rosetta 转译警告
解决方案:
bash
# 检查架构
file $(which erl)
file $(which rabbitmqctl)
# 应该显示 arm64 而非 x86_64
# 如果是 x86_64,重新安装 ARM64 版本
brew uninstall erlang rabbitmq
brew install erlang rabbitmq6.8 内存告警
问题表现:
memory resource limit alarm set on node解决方案:
bash
# 调整内存水位线
cat >> /opt/homebrew/etc/rabbitmq/rabbitmq.conf << 'EOF'
vm_memory_high_watermark.relative = 0.4
total_memory_available_override_value = 4GB
EOF
# 重启服务
brew services restart rabbitmq7. 验证方法
7.1 检查服务状态
bash
# 使用 brew services
brew services list | grep rabbitmq
# 使用 rabbitmqctl
rabbitmqctl status
# 检查进程
ps aux | grep rabbit
ps aux | grep beam7.2 检查端口监听
bash
# 使用 lsof
lsof -i :5672
lsof -i :15672
lsof -i :25672
lsof -i :4369
# 使用 netstat
netstat -an | grep LISTEN | grep -E '5672|15672|25672|4369'7.3 检查日志
bash
# Homebrew 安装
tail -f /opt/homebrew/var/log/rabbitmq/rabbit@*.log
# 手动安装
tail -f /usr/local/rabbitmq/var/log/rabbitmq/rabbit@*.log
# 查看启动日志
tail -f /opt/homebrew/var/log/rabbitmq/*.log7.4 连接测试
bash
# 使用 rabbitmqctl
rabbitmqctl list_queues
rabbitmqctl list_exchanges
rabbitmqctl list_users
rabbitmqctl node_health_check
# 使用 HTTP API
curl -u guest:guest http://localhost:15672/api/overview
curl -u guest:guest http://localhost:15672/api/whoami7.5 管理界面测试
bash
# 测试管理界面
curl -I http://localhost:15672
# 在浏览器中打开
open http://localhost:156728. 卸载方法
8.1 Homebrew 卸载
bash
# 停止服务
brew services stop rabbitmq
# 卸载 RabbitMQ
brew uninstall rabbitmq
# 卸载 Erlang(可选)
brew uninstall erlang
# 清理残留文件
rm -rf /opt/homebrew/var/lib/rabbitmq
rm -rf /opt/homebrew/var/log/rabbitmq
rm -rf /opt/homebrew/etc/rabbitmq
rm -f ~/.erlang.cookie8.2 手动卸载
bash
# 停止服务
rabbitmqctl stop
# 卸载 launchd 服务
launchctl unload ~/Library/LaunchAgents/com.rabbitmq.server.plist
rm ~/Library/LaunchAgents/com.rabbitmq.server.plist
# 删除安装目录
sudo rm -rf /usr/local/rabbitmq
# 删除软链接
sudo rm -f /usr/local/bin/rabbitmq-server
sudo rm -f /usr/local/bin/rabbitmqctl
sudo rm -f /usr/local/bin/rabbitmq-plugins
sudo rm -f /usr/local/bin/rabbitmq-env
# 删除配置和数据
rm -rf ~/.erlang.cookie8.3 清理环境变量
bash
# 编辑 ~/.zshrc
nano ~/.zshrc
# 删除以下内容
# export RABBITMQ_HOME=/usr/local/rabbitmq
# export PATH=$PATH:$RABBITMQ_HOME/sbin
# export RABBITMQ_MNESIA_BASE=...
# export RABBITMQ_LOG_BASE=...
# 重新加载配置
source ~/.zshrc9. 开发环境配置建议
9.1 多版本管理
bash
# 使用 Homebrew 安装多版本
brew install rabbitmq@3.12
brew install rabbitmq@3.13
# 切换版本
brew unlink rabbitmq@3.12
brew link rabbitmq@3.13 --force9.2 开发环境配置
bash
# 创建开发配置
cat > /opt/homebrew/etc/rabbitmq/rabbitmq.conf << 'EOF'
listeners.tcp.default = 5672
management.tcp.port = 15672
default_user = dev
default_pass = dev123
loopback_users = none
vm_memory_high_watermark.relative = 0.4
disk_free_limit.absolute = 500MB
log.file.level = debug
log.console = true
log.console.level = debug
EOF9.3 测试环境隔离
bash
# 创建多个实例
rabbitmq-server -detached -n rabbit_test@localhost
rabbitmqctl -n rabbit_test@localhost status
rabbitmqctl -n rabbit_test@localhost stop