Skip to content

Linux 安装

1. 概述

Linux 是 RabbitMQ 生产环境部署的首选平台。本章将详细介绍在 Ubuntu/Debian 和 CentOS/RHEL 系统上安装 RabbitMQ 的多种方式,包括包管理器安装、二进制安装和源码编译安装。

2. 系统要求

2.1 支持的 Linux 发行版

发行版版本要求架构
Ubuntu18.04 LTS, 20.04 LTS, 22.04 LTS, 24.04 LTSx86_64, ARM64
Debian10 (Buster), 11 (Bullseye), 12 (Bookworm)x86_64, ARM64
CentOS7, 8, Stream 9x86_64, ARM64
RHEL7, 8, 9x86_64, ARM64
Rocky Linux8, 9x86_64, ARM64
AlmaLinux8, 9x86_64, ARM64

2.2 依赖检查

bash
cat /etc/os-release
uname -r
free -h
df -h /var

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

Ubuntu 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-server

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

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

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

CentOS/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-server

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

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

5. 二进制安装

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

5.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/profile

5.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/profile

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

6. 配置说明

6.1 配置文件位置

文件类型位置说明
主配置文件/etc/rabbitmq/rabbitmq.confRabbitMQ 配置
环境变量/etc/rabbitmq/rabbitmq-env.conf环境变量配置
高级配置/etc/rabbitmq/advanced.configErlang 术语配置
运行时配置/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
EOF

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

6.4 启用管理插件

bash
sudo rabbitmq-plugins enable rabbitmq_management

sudo systemctl restart rabbitmq-server

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

7. 常见问题与解决方案

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

问题表现

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

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

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

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

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

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

8.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/overview

8.6 管理界面测试

bash
curl -I http://localhost:15672

curl -u guest:guest http://localhost:15672/api/whoami

9. 卸载方法

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

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

10. 相关链接