Skip to content

macOS 安装

1. 概述

macOS 是开发者常用的操作系统,本章将详细介绍在 macOS 上安装 RabbitMQ 的多种方式,包括 Homebrew 安装、官方包安装以及手动配置方法。

2. 系统要求

2.1 操作系统版本

macOS 版本代号架构支持
macOS 14.xSonomaIntel, Apple Silicon
macOS 13.xVenturaIntel, Apple Silicon
macOS 12.xMontereyIntel, Apple Silicon
macOS 11.xBig SurIntel, Apple Silicon
macOS 10.15.xCatalinaIntel

2.2 硬件要求

资源最低要求推荐配置
CPU1 核2 核+
内存1 GB2 GB+
磁盘2 GB5 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 - Intel

3. 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.0

3.4 配置环境变量

bash
# 添加到 PATH(如果未自动添加)
echo 'export PATH="/opt/homebrew/sbin:$PATH"' >> ~/.zshrc
source ~/.zshrc

# 或对于 Intel Mac
echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc
source ~/.zshrc

3.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 stop

3.6 安装指定版本

bash
# 查看可用版本
brew info rabbitmq

# 安装特定版本(需要先 unlink 当前版本)
brew unlink rabbitmq
brew install rabbitmq@3.12

# 切换版本
brew link rabbitmq@3.12 --force

4. 官方包安装

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.xz

4.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-env

4.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/rabbitmq

4.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 ~/.zshrc

4.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.plist

5. 配置说明

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 = .*
EOF

5.3 环境变量配置

bash
cat > $CONFIG_DIR/rabbitmq-env.conf << 'EOF'
NODENAME=rabbit@localhost
NODE_IP_ADDRESS=0.0.0.0
NODE_PORT=5672
EOF

5.4 启用管理插件

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

# 重启服务
brew services restart rabbitmq
# 或
rabbitmqctl stop
rabbitmq-server -detached

# 验证插件
rabbitmq-plugins list | grep management

5.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_users

6. 常见问题与解决方案

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 --force

6.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 rabbitmq

6.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 rabbitmq

6.5 无法访问管理界面

问题表现

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

解决方案

bash
# 检查插件状态
rabbitmq-plugins list | grep management

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

# 检查端口
lsof -i :15672

# 重启服务
brew services restart rabbitmq

问题表现

Error: {badrpc,nodedown}

解决方案

bash
# 检查 Cookie 文件
ls -la ~/.erlang.cookie
cat ~/.erlang.cookie

# 修复权限
chmod 600 ~/.erlang.cookie

# 或重新生成 Cookie
rm ~/.erlang.cookie
rabbitmqctl stop
rabbitmq-server -detached

6.7 Apple Silicon 兼容性问题

问题表现

性能问题或 Rosetta 转译警告

解决方案

bash
# 检查架构
file $(which erl)
file $(which rabbitmqctl)

# 应该显示 arm64 而非 x86_64

# 如果是 x86_64,重新安装 ARM64 版本
brew uninstall erlang rabbitmq
brew install erlang rabbitmq

6.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 rabbitmq

7. 验证方法

7.1 检查服务状态

bash
# 使用 brew services
brew services list | grep rabbitmq

# 使用 rabbitmqctl
rabbitmqctl status

# 检查进程
ps aux | grep rabbit
ps aux | grep beam

7.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/*.log

7.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/whoami

7.5 管理界面测试

bash
# 测试管理界面
curl -I http://localhost:15672

# 在浏览器中打开
open http://localhost:15672

8. 卸载方法

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.cookie

8.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.cookie

8.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 ~/.zshrc

9. 开发环境配置建议

9.1 多版本管理

bash
# 使用 Homebrew 安装多版本
brew install rabbitmq@3.12
brew install rabbitmq@3.13

# 切换版本
brew unlink rabbitmq@3.12
brew link rabbitmq@3.13 --force

9.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
EOF

9.3 测试环境隔离

bash
# 创建多个实例
rabbitmq-server -detached -n rabbit_test@localhost
rabbitmqctl -n rabbit_test@localhost status
rabbitmqctl -n rabbit_test@localhost stop

10. 相关链接