Appearance
Linux 安装
1. 概述
Linux 是 RabbitMQ 生产环境部署的首选平台。本章将详细介绍在 Ubuntu/Debian 和 CentOS/RHEL 系统上安装 RabbitMQ 的多种方式,包括包管理器安装、二进制安装和源码编译安装。
2. 系统要求
2.1 支持的 Linux 发行版
| 发行版 | 版本要求 | 架构 |
|---|---|---|
| Ubuntu | 18.04 LTS, 20.04 LTS, 22.04 LTS, 24.04 LTS | x86_64, ARM64 |
| Debian | 10 (Buster), 11 (Bullseye), 12 (Bookworm) | x86_64, ARM64 |
| CentOS | 7, 8, Stream 9 | x86_64, ARM64 |
| RHEL | 7, 8, 9 | x86_64, ARM64 |
| Rocky Linux | 8, 9 | x86_64, ARM64 |
| AlmaLinux | 8, 9 | x86_64, ARM64 |
2.2 依赖检查
bash
cat /etc/os-release
uname -r
free -h
df -h /var3. Ubuntu/Debian 安装
3.1 方式一:使用官方 APT 仓库(推荐)
步骤 1:安装依赖
bash
sudo apt-get update
sudo apt-get install -y curl gnupg apt-transport-https步骤 2:添加 Erlang 仓库
bash
curl -1sLf 'https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA' | sudo gpg --dearmor -o /usr/share/keyrings/com.rabbitmq.team.gpg
curl -1sLf 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq.E495BB49CC4BBE5B.key' | sudo gpg --dearmor -o /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg
curl -1sLf 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq.9F4587F226208342.key' | sudo gpg --dearmor -o /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg步骤 3:添加 RabbitMQ 仓库
Ubuntu 22.04:
bash
sudo tee /etc/apt/sources.list.d/rabbitmq.list << 'EOF'
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
EOFUbuntu 20.04:
bash
sudo tee /etc/apt/sources.list.d/rabbitmq.list << 'EOF'
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
EOF步骤 4:安装 RabbitMQ
bash
sudo apt-get update
sudo apt-get install -y rabbitmq-server步骤 5:启动服务
bash
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo systemctl status rabbitmq-server3.2 方式二:使用 CloudSmith 仓库
bash
sudo apt-get install -y curl gnupg apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key' | sudo gpg --dearmor -o /usr/share/keyrings/rabbitmq_erlang.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key' | sudo gpg --dearmor -o /usr/share/keyrings/rabbitmq_server.gpg
sudo tee /etc/apt/sources.list.d/rabbitmq.list << 'EOF'
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq_erlang.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq_server.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
EOF
sudo apt-get update
sudo apt-get install -y rabbitmq-server3.3 方式三:下载 DEB 包安装
bash
ERLANG_VERSION="26.2.5"
RABBITMQ_VERSION="3.13.0"
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v${ERLANG_VERSION}/erlang_${ERLANG_VERSION}-1~ubuntu~jammy_amd64.deb
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v${RABBITMQ_VERSION}/rabbitmq-server_${RABBITMQ_VERSION}-1_all.deb
sudo apt-get install -y ./erlang_${ERLANG_VERSION}-1~ubuntu~jammy_amd64.deb
sudo apt-get install -y ./rabbitmq-server_${RABBITMQ_VERSION}-1_all.deb4. CentOS/RHEL 安装
4.1 方式一:使用 YUM 仓库(推荐)
步骤 1:安装依赖
bash
sudo yum install -y curl epel-release
sudo yum install -y socat logrotate步骤 2:添加 Erlang 仓库
CentOS/RHEL 8:
bash
sudo tee /etc/yum.repos.d/rabbitmq-erlang.repo << 'EOF'
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/rpm/el/8/$basearch
gpgcheck=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq.E495BB49CC4BBE5B.key
repo_gpgcheck=1
enabled=1
EOFCentOS/RHEL 9:
bash
sudo tee /etc/yum.repos.d/rabbitmq-erlang.repo << 'EOF'
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/rpm/el/9/$basearch
gpgcheck=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq.E495BB49CC4BBE5B.key
repo_gpgcheck=1
enabled=1
EOF步骤 3:添加 RabbitMQ 仓库
bash
sudo tee /etc/yum.repos.d/rabbitmq-server.repo << 'EOF'
[rabbitmq_server]
name=rabbitmq_server
baseurl=https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/rpm/el/8/$basearch
gpgcheck=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq.9F4587F226208342.key
repo_gpgcheck=1
enabled=1
EOF步骤 4:安装 RabbitMQ
bash
sudo yum install -y rabbitmq-server步骤 5:启动服务
bash
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo systemctl status rabbitmq-server4.2 方式二:下载 RPM 包安装
bash
ERLANG_VERSION="26.2.5"
RABBITMQ_VERSION="3.13.0"
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v${ERLANG_VERSION}/erlang-${ERLANG_VERSION}-1.el8.x86_64.rpm
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v${RABBITMQ_VERSION}/rabbitmq-server-${RABBITMQ_VERSION}-1.el8.noarch.rpm
sudo yum install -y ./erlang-${ERLANG_VERSION}-1.el8.x86_64.rpm
sudo yum install -y ./rabbitmq-server-${RABBITMQ_VERSION}-1.el8.noarch.rpm4.3 方式三:使用 dnf(RHEL 8/9)
bash
sudo dnf install -y epel-release
sudo dnf install -y socat logrotate
sudo dnf install -y https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.5/erlang-26.2.5-1.el9.x86_64.rpm
sudo dnf install -y https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.0/rabbitmq-server-3.13.0-1.el9.noarch.rpm5. 二进制安装
5.1 下载二进制包
bash
RABBITMQ_VERSION="3.13.0"
ERLANG_VERSION="26.2"
cd /opt
wget https://github.com/erlang/otp/releases/download/OTP-${ERLANG_VERSION}/otp_src_${ERLANG_VERSION}.tar.gz
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v${RABBITMQ_VERSION}/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz5.2 编译安装 Erlang
bash
sudo yum install -y gcc glibc-devel make ncurses-devel openssl-devel autoconf
tar -xzf otp_src_${ERLANG_VERSION}.tar.gz
cd otp_src_${ERLANG_VERSION}
./configure --prefix=/usr/local/erlang
make -j$(nproc)
sudo make install
echo 'export PATH=/usr/local/erlang/bin:$PATH' | sudo tee -a /etc/profile
source /etc/profile5.3 安装 RabbitMQ
bash
cd /opt
tar -xJf rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz
sudo mv rabbitmq_server-${RABBITMQ_VERSION} /usr/local/rabbitmq
echo 'export PATH=/usr/local/rabbitmq/sbin:$PATH' | sudo tee -a /etc/profile
source /etc/profile5.4 创建 systemd 服务
bash
sudo tee /etc/systemd/system/rabbitmq-server.service > /dev/null << 'EOF'
[Unit]
Description=RabbitMQ broker
After=network.target
[Service]
Type=notify
User=rabbitmq
Group=rabbitmq
Environment="PATH=/usr/local/erlang/bin:/usr/local/rabbitmq/sbin:/usr/bin:/bin"
ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server
ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server6. 配置说明
6.1 配置文件位置
| 文件类型 | 位置 | 说明 |
|---|---|---|
| 主配置文件 | /etc/rabbitmq/rabbitmq.conf | RabbitMQ 配置 |
| 环境变量 | /etc/rabbitmq/rabbitmq-env.conf | 环境变量配置 |
| 高级配置 | /etc/rabbitmq/advanced.config | Erlang 术语配置 |
| 运行时配置 | /etc/rabbitmq/rabbitmq.d/ | 运行时配置目录 |
6.2 基础配置示例
bash
sudo tee /etc/rabbitmq/rabbitmq.conf > /dev/null << '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
EOF6.3 环境变量配置
bash
sudo tee /etc/rabbitmq/rabbitmq-env.conf > /dev/null << 'EOF'
NODENAME=rabbit@localhost
NODE_IP_ADDRESS=0.0.0.0
NODE_PORT=5672
MNESIA_BASE=/var/lib/rabbitmq/mnesia
LOG_BASE=/var/log/rabbitmq
EOF6.4 启用管理插件
bash
sudo rabbitmq-plugins enable rabbitmq_management
sudo systemctl restart rabbitmq-server6.5 创建管理员用户
bash
sudo rabbitmqctl add_user admin your_password
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
sudo rabbitmqctl delete_user guest7. 常见问题与解决方案
7.1 服务启动失败
问题表现:
bash
sudo systemctl status rabbitmq-server
# Job for rabbitmq-server.service failed排查步骤:
bash
sudo journalctl -u rabbitmq-server -n 50
sudo rabbitmq-server
cat /var/log/rabbitmq/*.log解决方案:
bash
sudo chown -R rabbitmq:rabbitmq /var/lib/rabbitmq
sudo chown -R rabbitmq:rabbitmq /var/log/rabbitmq
sudo chmod -R 755 /var/lib/rabbitmq7.2 Erlang Cookie 不一致
问题表现:
Error: {badrpc,nodedown}解决方案:
bash
sudo systemctl stop rabbitmq-server
sudo rm -f /var/lib/rabbitmq/.erlang.cookie
sudo systemctl start rabbitmq-server或同步 Cookie:
bash
sudo cat /var/lib/rabbitmq/.erlang.cookie
sudo chmod 600 /var/lib/rabbitmq/.erlang.cookie
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie7.3 端口被占用
问题表现:
Error: {listener_start_failure,5672,{already_started,<0.123.0>}}解决方案:
bash
sudo lsof -i :5672
sudo netstat -tulnp | grep 5672
sudo kill -9 <PID>7.4 内存告警
问题表现:
memory resource limit alarm set on node解决方案:
bash
sudo tee -a /etc/rabbitmq/rabbitmq.conf > /dev/null << 'EOF'
vm_memory_high_watermark.relative = 0.4
total_memory_available_override_value = 4GB
EOF
sudo systemctl restart rabbitmq-server7.5 磁盘空间告警
问题表现:
disk resource limit alarm set on node解决方案:
bash
sudo tee -a /etc/rabbitmq/rabbitmq.conf > /dev/null << 'EOF'
disk_free_limit.absolute = 2GB
EOF
sudo systemctl restart rabbitmq-server7.6 无法访问管理界面
问题表现:
访问 http://localhost:15672 无响应
解决方案:
bash
sudo rabbitmq-plugins list | grep management
sudo rabbitmq-plugins enable rabbitmq_management
sudo netstat -tuln | grep 15672
sudo firewall-cmd --add-port=15672/tcp --permanent
sudo firewall-cmd --reload7.7 用户权限问题
问题表现:
Error: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN解决方案:
bash
sudo rabbitmqctl list_users
sudo rabbitmqctl change_password guest new_password
sudo rabbitmqctl add_user admin password
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"8. 验证方法
8.1 检查服务状态
bash
sudo systemctl status rabbitmq-server
sudo rabbitmqctl status
sudo rabbitmqctl node_health_check8.2 检查端口监听
bash
sudo netstat -tulnp | grep -E '5672|15672|25672|4369'
sudo ss -tulnp | grep -E '5672|15672'8.3 检查进程
bash
ps aux | grep rabbit
ps aux | grep beam8.4 检查日志
bash
sudo tail -f /var/log/rabbitmq/rabbit@*.log
sudo rabbitmqctl eval 'application:get_env(rabbit, log).'8.5 连接测试
bash
sudo rabbitmqctl list_queues
sudo rabbitmqctl list_exchanges
sudo rabbitmqctl list_bindings
curl -u guest:guest http://localhost:15672/api/overview8.6 管理界面测试
bash
curl -I http://localhost:15672
curl -u guest:guest http://localhost:15672/api/whoami9. 卸载方法
9.1 Ubuntu/Debian 卸载
bash
sudo systemctl stop rabbitmq-server
sudo systemctl disable rabbitmq-server
sudo apt-get remove -y rabbitmq-server
sudo apt-get autoremove -y
sudo rm -rf /var/lib/rabbitmq
sudo rm -rf /var/log/rabbitmq
sudo rm -rf /etc/rabbitmq9.2 CentOS/RHEL 卸载
bash
sudo systemctl stop rabbitmq-server
sudo systemctl disable rabbitmq-server
sudo yum remove -y rabbitmq-server
sudo rm -rf /var/lib/rabbitmq
sudo rm -rf /var/log/rabbitmq
sudo rm -rf /etc/rabbitmq