在 Debian 和 Ubuntu 上安装
概述
本指南介绍了在 Debian、Ubuntu 以及基于它们的发行版上安装 RabbitMQ。
RabbitMQ 已包含在标准的 Debian 和 Ubuntu 存储库中。然而,包含的版本 比 最新的 RabbitMQ 版本 晚了许多个版本,并且可能提供已 停止支持 的 RabbitMQ 版本。
RabbitMQ 团队制作了自己的 Debian 软件包,并通过 RabbitMQ 团队的 apt 存储库 进行分发。
本指南的关键部分包括:
- 在 Debian 和 Ubuntu 上安装最新 RabbitMQ 版本的方法
- 支持的 Ubuntu 和 Debian 发行版
- 权限要求
- 使用 RabbitMQ 团队的 apt 存储库的 快速入门安装片段
- 管理服务(启动、停止和获取状态)
- 如何 检查节点和服务日志
支持的 Erlang 版本将从 现代 Erlang apt 存储库 中的一个提供,这些存储库位于 Launchpad 或 RabbitMQ 团队的 apt 存储库。
想要更详细了解安装步骤的描述,请参考:
- 使用 apt 和 RabbitMQ 团队的 apt 存储库 进行手动安装
更高级的主题包括:
- apt 软件包的 版本固定
如何在 Debian 和 Ubuntu 上安装最新 RabbitMQ
使用 Apt
目前,在 Debian 和 Ubuntu 上安装现代 RabbitMQ 的推荐选项是使用 RabbitMQ 团队的 apt 存储库(快速入门脚本,更详细的 分步说明)。
这些存储库提供 现代版本的 Erlang。或者,最新版本的 Erlang 可通过 Launchpad PPA 和其他存储库 获取。
手动使用 Dpkg
或者,可以手动下载软件包并使用 dpkg -i 安装。此选项需要手动安装所有 RabbitMQ 软件包依赖项,并且 **强烈不推荐**。
支持的发行版
RabbitMQ 支持几种主要的基于 Debian 的发行版,这些发行版仍在其主要供应商或开发团队的支持范围内("全面支持",无需额外费用)。
对于 Debian,这意味着 RabbitMQ 核心团队软件包的关注点是 Debian 发行版当前和之前的版本,即符合 发行版 EOL 策略。
目前支持的基于 Debian 的发行版列表包括:
- Ubuntu 20.04 (Focal), 22.04 (Jammy) 和 24.04 (Noble)
- Debian Bullseye (11), Bookworm (12) 和 Trixie (13)
如果 依赖项 得到满足(例如,使用 backports 存储库),该软件包可能在其他基于 Debian 的发行版上运行,但其测试和支持是尽力而为的。
在 Debian 和 Ubuntu 上获取最新 Erlang 版本的途径
RabbitMQ 需要 Erlang/OTP 来运行。标准 Debian 和 Ubuntu 存储库中的 Erlang/OTP 软件包可能已过时,并且 不被现代 RabbitMQ 版本支持。
大多数最新的 Erlang/OTP 发行版系列可从多个备用 apt 存储库获取。
| Erlang 发行版系列 | 提供它的 Apt 存储库 | 备注 |
| 27.x |
| 从 4.0.0 开始支持。请参阅 Erlang 兼容性指南。 |
| 26.x |
| 从 3.12.0 开始支持,并且从 3.13.0 开始是必需的。请参阅 Erlang 兼容性指南。 |
本指南将重点介绍 RabbitMQ 团队维护的 apt 存储库 以及 Launchpad 上的存储库。
使用 RabbitMQ 团队的 Apt 存储库:快速入门脚本
下面是一个执行本指南中解释的步骤的 shell 片段。它从 RabbitMQ 团队托管 的 apt 存储库提供 RabbitMQ 和 Erlang。
此存储库仅提供 amd64 (x86-64) Erlang 软件包。对于 arm64 (aarch64),必须修改此脚本以从 Launchpad 提供受支持的 Erlang 系列。
- Ubuntu 24.04
- Ubuntu 22.04
- Ubuntu 20.04
- Debian Trixie
- Debian Bookworm
- Debian Bullseye
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/focal focal main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/focal focal main
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/focal focal main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/focal focal main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie trixie main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/trixie trixie main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bullseye bullseye main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bullseye bullseye main
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/bullseye bullseye main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/bullseye bullseye main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
使用 RabbitMQ 团队的 Apt 存储库
RabbitMQ 团队维护两个 apt 存储库。它们为最新的 RabbitMQ 和现代 Erlang 版本提供软件包。
这两个存储库都使用相同的 签名密钥 进行签名。
本指南的这部分将侧重于设置附加 apt 存储库和安装软件包的更传统和明确的方法。
除非另有说明,下面介绍的所有步骤都是 **必需的**。
安装必备依赖项
sudo apt-get update -y
sudo apt-get install curl gnupg -y
启用 apt HTTPS 传输
为了让 apt 能够从 RabbitMQ 团队 apt 存储库或 Launchpad 下载 RabbitMQ 和 Erlang 软件包,必须安装 apt-transport-https 软件包。
sudo apt-get install apt-transport-https
添加存储库签名密钥
为了使用这些存储库,首先必须将它们的签名密钥添加到系统中。这将使 apt 信任由该密钥签名的软件包。
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
请参阅 签名指南 以了解更多信息。
添加存储库(Apt 源列表)文件
本节中描述的文件内容会根据目标 Debian 发行版略有不同。请确保切换到相应的选项卡。
与所有第三方 apt 存储库一样,描述 RabbitMQ 和 Erlang 软件包存储库的文件必须放在 /etc/apt/sources.list.d/ 目录下。推荐的位置是 /etc/apt/sources.list.d/rabbitmq.list。
文件内容将根据使用的发行版略有不同。
- Ubuntu 24.04
- Ubuntu 22.04
- Ubuntu 20.04
- Debian Trixie
- Debian Bookworm
- Debian Bullseye
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
## Provides modern RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
EOF
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main
## Provides modern RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
EOF
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/focal focal main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/focal focal main
## Provides modern RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/focal focal main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/focal focal main
EOF
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie trixie main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/trixie trixie main
EOF
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
## Provides modern RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bullseye bullseye main
deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bullseye bullseye main
## Latest RabbitMQ releases
##
deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/bullseye bullseye main
deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/bullseye bullseye main
EOF
安装软件包
更新 apt 源列表后,必须运行 apt-get update。
sudo apt-get update -y
然后使用以下命令安装软件包:
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
Debian 软件包版本和存储库固定
版本固定是 **可选** 步骤。如果未使用,apt 将安装可用的最新版本。
当同一软件包(例如 erlang-base)可从多个 apt 存储库获得时,操作员需要一种方法来指示应优先使用哪个存储库。还可能希望限制 Erlang 版本以避免不期望的升级。可以使用 apt 软件包固定 功能来解决这两个问题。
软件包固定通过放置在 /etc/apt/preferences.d/ 目录下的文件来配置,例如 /etc/apt/preferences.d/erlang。更新 apt 偏好设置后,必须运行 apt-get update。
sudo apt-get update -y
以下偏好文件示例将配置 apt 从上面示例中使用的 RabbitMQ 团队 apt 存储库安装 erlang-* 软件包。
# /etc/apt/preferences.d/erlang
Package: erlang*
Pin: origin RabbitMQ
# Note: priority of 1001 (greater than 1000) allows for downgrading.
# To make package downgrading impossible, use a value of 999
Pin-Priority: 1001
以下与上面的示例类似,但更偏好 Launchpad。
# /etc/apt/preferences.d/erlang
Package: erlang*
Pin: origin ppa.launchpad.net
# Note: priority of 1001 (greater than 1000) allows for downgrading.
# To make package downgrading impossible, use a value of 999
Pin-Priority: 1001
可以使用以下命令验证有效的软件包固定策略:
sudo apt-cache policy
以下偏好文件示例将所有 erlang-* 软件包固定到 26.2.5.13(假设软件包的 包时期 为 1)。
# /etc/apt/preferences.d/erlang
Package: erlang*
Pin: version 1:26.2.5.13-1
# Note: priority of 1001 (greater than 1000) allows for downgrading.
# To make package downgrading impossible, use a value of 999
Pin-Priority: 1001
以下偏好文件示例将 rabbitmq-server 软件包固定到:4.2.0(假设软件包的 包时期 为 1)。
# /etc/apt/preferences.d/rabbitmq
Package: rabbitmq-server
Pin: version 1:4.2.0-1
# Note: priority of 1001 (greater than 1000) allows for downgrading.
# To make package downgrading impossible, use a value of 999
Pin-Priority: 1001
使用 Dpkg 进行手动安装
在某些情况下,直接从 GitHub 下载软件包并使用 sudo dpkg -i 进行手动安装可能更简单。下面是一个下载链接。
| 描述 | 下载 | 签名 |
|---|---|---|
| .deb 文件,适用于基于 Debian 的 Linux(来自 GitHub) | rabbitmq-server_4.2.0-1_all.deb | 签名 |
使用 dpkg 手动安装时,有必要先安装软件包依赖项。dpkg 与 apt 不同,它不解析或管理依赖项。
这是一个执行此操作的示例,它安装 wget,下载 RabbitMQ 软件包并进行安装:
# sync package metadata
sudo apt-get update
# install dependencies manually
sudo apt-get -y install logrotate init-system-helpers adduser
# download the package
sudo apt-get -y install wget
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.2.0/rabbitmq-server_4.2.0-1_all.deb
# install the package with dpkg
sudo dpkg -i rabbitmq-server_4.2.0-1_all.deb
rm rabbitmq-server_4.2.0-1_all.deb
建议通过 apt 存储库 进行安装,而不是直接下载软件包并通过 dpkg -i 进行安装。当使用 dpkg -i 手动安装 RabbitMQ 软件包时,操作员负责确保所有软件包依赖项都得到满足。
用户权限要求
RabbitMQ Debian 软件包在安装和管理时需要 sudo 权限。在没有 sudo 的环境中,请考虑使用 通用二进制构建。
运行 RabbitMQ 服务器
启动服务器
默认情况下,当安装 RabbitMQ 服务器软件包时,服务器会作为守护进程启动。它将作为非特权用户 rabbitmq 运行。
作为管理员,像往常一样在基于 Debian 的系统上启动和停止服务器:
systemctl start rabbitmq-server
配置 RabbitMQ
在大多数系统上,节点应该能够以所有默认设置启动和运行。请参考 配置指南 以了解更多信息,并参考 部署指南 获取开发环境之外的指导。
注意:节点设置为以系统用户 rabbitmq 运行。如果更改了 节点数据库或日志的位置,文件和目录必须属于此用户。
端口访问
RabbitMQ 节点绑定到端口(打开服务器 TCP 套接字)以接受客户端和 CLI 工具的连接。SELinux 等其他进程和工具可能会阻止 RabbitMQ 绑定到端口。发生这种情况时,节点将无法启动。有关更多详细信息,请参阅网络指南。
默认用户访问
代理创建一个用户 guest,密码为 guest。未配置的客户端通常会使用这些凭据。**默认情况下,这些凭据只能在连接到本地主机上的代理时使用**,因此在从任何其他计算机连接之前,您需要采取相应措施。
有关如何创建更多用户和删除 guest 用户的信息,请参阅访问控制文档。
控制 Linux 上的系统限制
运行生产工作负载的 RabbitMQ 安装可能需要调整系统限制和内核参数,才能处理大量并发连接和队列。需要调整的主要设置是打开文件的最大数量,也称为 ulimit -n。许多操作系统上的默认值对于消息代理来说太低了(在几个 Linux 发行版上为 1024)。我们建议在生产环境中为用户 rabbitmq 允许至少 65536 个文件描述符。对于许多开发工作负载,4096 应该足够了。
存在两个限制:操作系统内核允许的最大打开文件数(fs.file-max)和每个用户的限制(ulimit -n)。前者必须高于后者。
使用 systemd(最近的 Linux 发行版)
在使用 systemd 的发行版上,操作系统限制通过 /etc/systemd/system/rabbitmq-server.service.d/limits.conf 的配置文件进行控制。例如,要将最大打开文件句柄限制(nofile)设置为 64000:
[Service]
LimitNOFILE=64000
如果上述限制设置为高于 65536 的值,则必须相应地更新 ERL_MAX_PORTS 环境变量 以增加 运行时 限制。
有关支持的限制和其他指令的信息,请参阅systemd 文档。
使用 Docker
要为 Docker 容器配置内核限制,请在 Docker 守护进程配置文件 中使用 "default-ulimits" 键。该文件必须安装在 Docker 主机上的 /etc/docker/daemon.json。
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}
如果上述限制设置为高于 65536 的值,则必须相应地更新 ERL_MAX_PORTS 环境变量 以增加 运行时 限制。
验证限制
RabbitMQ 管理 UI 在“概览”选项卡上显示了可供其使用的文件描述符数量。
rabbitmq-diagnostics status
包含相同的值。
可以使用以下命令
cat /proc/$RABBITMQ_BEAM_PROCESS_PID/limits
来显示正在运行进程的有效限制。$RABBITMQ_BEAM_PROCESS_PID 是运行 RabbitMQ 的 Erlang VM 的操作系统 PID,由 rabbitmq-diagnostics status 返回。
管理服务
要启动和停止服务器,请使用 systemctl 工具。服务名称为 rabbitmq-server。
# stop the local node
sudo systemctl stop rabbitmq-server
# start it back
sudo systemctl start rabbitmq-server
systemctl status rabbitmq-server 将报告 systemd(或类似的服务的管理器)观察到的服务状态。
# check on service status as observed by service manager
sudo systemctl status rabbitmq-server
它会产生类似如下的输出:
Redirecting to /bin/systemctl status rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/rabbitmq-server.service.d
└─limits.conf
Active: active (running) since Wed 2021-05-07 10:21:32 UTC; 25s ago
Main PID: 957 (beam.smp)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
├─ 957 /usr/lib/erlang/erts-10.2/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- ...
├─1411 /usr/lib/erlang/erts-10.2/bin/epmd -daemon
├─1605 erl_child_setup 400000
├─2860 inet_gethost 4
└─2861 inet_gethost 4
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ## ##
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ## ## RabbitMQ 4.1.4. Copyright (c) 2005-2025 Broadcom. All Rights Reserved. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ########## Licensed under the MPL 2.0. Website: https://rabbitmq.cn/
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ###### ##
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: Starting broker...
Aug 26 10:21:32 localhost.localdomain rabbitmq-server[957]: systemd unit for activation check: "rabbitmq-server.service"
Aug 26 10:21:32 localhost.localdomain systemd[1]: Started RabbitMQ broker.
Aug 26 10:21:32 localhost.localdomain rabbitmq-server[957]: completed with 6 plugins.
rabbitmqctl、rabbitmq-diagnostics 和其他 CLI 工具 将在 PATH 中可用,并且可以被启用 sudo 的用户调用。
# checks if the local node is running and CLI tools can successfully authenticate with it
sudo rabbitmq-diagnostics ping
# prints enabled components (applications), TCP listeners, memory usage breakdown, alarms
# and so on
sudo rabbitmq-diagnostics status
# prints cluster membership information
sudo rabbitmq-diagnostics cluster_status
# prints effective node configuration
sudo rabbitmq-diagnostics environment
如果没有任何节点正在运行,所有 rabbitmqctl 命令都会报告错误。请参阅 CLI 工具 和 监控 指南以了解更多信息。
日志文件和管理
服务器日志可以在 可配置 的目录下找到,通常在 RabbitMQ 通过 Linux 包管理器安装时默认为 /var/log/rabbitmq。
RABBITMQ_LOG_BASE 可用于覆盖 日志目录位置。
假设使用基于 systemd 的发行版,可以使用以下命令检查系统服务日志:
journalctl --system
这需要超级用户权限。其输出可以被过滤,以仅显示 RabbitMQ 特定的条目:
sudo journalctl --system | grep rabbitmq
输出将类似如下:
Aug 26 11:03:04 localhost rabbitmq-server[968]: ## ##
Aug 26 11:03:04 localhost rabbitmq-server[968]: ## ## RabbitMQ 4.1.4. Copyright (c) 2005-2025 Broadcom. All Rights Reserved. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
Aug 26 11:03:04 localhost rabbitmq-server[968]: ########## Licensed under the MPL 2.0. Website: https://rabbitmq.cn/
Aug 26 11:03:04 localhost rabbitmq-server[968]: ###### ##
Aug 26 11:03:04 localhost rabbitmq-server[968]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log
Aug 26 11:03:04 localhost rabbitmq-server[968]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
Aug 26 11:03:04 localhost rabbitmq-server[968]: Starting broker...
Aug 26 11:03:05 localhost rabbitmq-server[968]: systemd unit for activation check: "rabbitmq-server.service"
Aug 26 11:03:06 localhost rabbitmq-server[968]: completed with 6 plugins.
日志轮换
代理始终会附加到 日志文件,因此会保留完整的日志历史记录。
logrotate 是日志文件轮换和压缩推荐的方式。默认情况下,软件包会设置 logrotate 以每周一次运行位于默认 /var/log/rabbitmq 目录下的文件。轮换配置可以在 /etc/logrotate.d/rabbitmq-server 中找到。
从 Launchpad 的 Apt 存储库(PPA)安装 Erlang
此附加部分介绍了从 Launchpad 安装现代 Erlang 软件包。要安装现代 Erlang 和 RabbitMQ,请参考 从 RabbitMQ 团队的 apt 存储库安装 RabbitMQ。
Ubuntu 上的现代 Erlang
本节介绍的 apt 存储库特定于 Ubuntu。它们 **不能** 与 Debian 发行版一起使用。
标准的 Debian 和 Ubuntu 存储库倾向于提供过时的 Erlang/OTP 版本。RabbitMQ 团队维护了几个 apt 存储库,其中包括 Launchpad 上 最新 Erlang/OTP 版本 的软件包。
- 用于 RabbitMQ 支持的 最新 Erlang 主要版本。
- 用于 Erlang 27.x。
- 用于 Erlang 26.x。
Launchpad 上的 Erlang 存储库目前支持以下 Ubuntu 发行版:
- Ubuntu 24.04 (Noble)
- Ubuntu 22.04 (Jammy)
或者,RabbitMQ 团队的 apt 存储库(见上文)支持相同版本,并且不仅可以在 Ubuntu 上使用,还可以在 Debian 发行版上使用。
为了使用该存储库,有必要:
- 安装下载签名密钥和通过 HTTPS 下载软件包所需的先决条件。
- 将存储库签名密钥添加到您的系统。
apt将在安装过程中验证软件包签名。 - 添加存储库的源列表文件。
- 更新软件包元数据。
- 安装 RabbitMQ 所需的 Erlang 软件包。
安装必备依赖项
sudo apt-get update -y
sudo apt-get install curl gnupg -y
添加存储库签名密钥
为了使用该存储库,请将 RabbitMQ 签名密钥 添加到系统中。这将使 apt 能够信任由该密钥签名的软件包。
# primary RabbitMQ signing key
curl -1sLf "https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.github.rabbitmq.signing.gpg > /dev/null
# Launchpad PPA signing key for apt
curl -1sLf "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf77f1eda57ebb1cc" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg > /dev/null
请参阅 签名指南 以了解更多信息。
启用 apt HTTPS 传输
为了让 apt 能够从 RabbitMQ 团队 apt 存储库或 Launchpad 下载 RabbitMQ 和 Erlang 软件包,必须安装 apt-transport-https 软件包。
sudo apt-get install apt-transport-https
添加源列表文件
本节中描述的文件内容会根据目标 Debian 发行版略有不同。请确保切换到相应的选项卡。
与所有第三方 Apt (Debian) 存储库一样,描述存储库的文件必须放在 /etc/apt/sources.list.d/ 目录下。推荐的位置是 /etc/apt/sources.list.d/erlang.list。
该文件应包含一个存储库(apt 源文件)定义行。其内容将因 Ubuntu 版本而异。
- Ubuntu 24.04
- Ubuntu 22.04
- Ubuntu 20.04
# This Launchpad PPA repository provides Erlang packages produced by the RabbitMQ team
#
# Replace $distribution with the name of the Ubuntu release used
deb [arch=amd64 signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu noble main
# This Launchpad PPA repository provides Erlang packages produced by the RabbitMQ team
#
# Replace $distribution with the name of the Ubuntu release used
deb [arch=amd64 signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu jammy main
# This Launchpad PPA repository provides Erlang packages produced by the RabbitMQ team
#
# Replace $distribution with the name of the Ubuntu release used
deb [arch=amd64 signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu focal main
安装 Erlang 软件包
更新 apt 源列表后,必须运行 apt-get update。
sudo apt-get update -y
然后可以像使用标准的 Debian 存储库一样安装软件包:
# This is recommended. Metapackages such as erlang and erlang-nox must only be used
# with apt version pinning. They do not pin their dependency versions.
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl