在 Debian 和 Ubuntu 上安装
概述
本指南涵盖了在 Debian、Ubuntu 以及基于它们之一的发行版上安装 RabbitMQ。
RabbitMQ 包含在标准的 Debian 和 Ubuntu 软件仓库中。然而,包含的版本落后于最新的 RabbitMQ 版本很多个发布版本,并且可能提供已经超出支持的 RabbitMQ 版本。
RabbitMQ 团队制作我们自己的 Debian 软件包,并通过 Cloudsmith 分发它们。
本指南的关键部分是
- 在 Debian 和 Ubuntu 上安装最新 RabbitMQ 版本的方式
- 支持的 Ubuntu 和 Debian 发行版
- 权限要求
- 快速启动安装代码片段,使用 Cloudsmith 镜像仓库
- 管理服务(启动、停止和获取其状态)
- 如何检查节点和服务日志
支持的 Erlang 版本将从 Launchpad 上的现代 Erlang apt 仓库之一或 Cloudsmith.io 镜像中获取。
那些寻找更详细的安装步骤描述的人应该参考
- 使用 apt 和 Cloudsmith 仓库手动安装
更高级的主题包括
- apt 软件包的版本锁定
如何在 Debian 和 Ubuntu 上安装最新的 RabbitMQ
使用 Apt
目前,在 Debian 和 Ubuntu 上安装现代 RabbitMQ 的推荐选项是使用 Cloudsmith 镜像上的 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)
如果满足依赖项(例如,使用 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 团队维护的 Launchpad 和 Cloudsmith.io 上的 Debian 仓库。
使用 Cloudsmith 镜像的 Apt:快速启动脚本
以下是一个 shell 代码片段,它执行本指南中解释的步骤。它从 RabbitMQ 团队托管的 apt 仓库中获取 RabbitMQ 和 Erlang。
此仓库仅提供 amd64
(x86-64
) Erlang 软件包。对于 amd64
(aarch64
),必须修改此脚本以从 Launchpad 获取 Erlang 26。
- Ubuntu 24.04
- Ubuntu 22.04
- Ubuntu 20.04
- Debian Bookworm
- Debian Bullseye
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's main 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
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
## Provides RabbitMQ
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu 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 main 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
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
## Provides RabbitMQ
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu 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 main 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
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
## Provides RabbitMQ
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu 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 main 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
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
## Provides RabbitMQ
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian 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 main 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
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bullseye main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bullseye main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bullseye main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bullseye main
## Provides RabbitMQ
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bullseye main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bullseye main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bullseye main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian 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
使用 Cloudsmith 镜像的 Apt
RabbitMQ 团队维护着两个 Cloudsmith 上的 apt 仓库,Cloudsmith 是一种软件包托管服务。它们为最新的 RabbitMQ 和现代 Erlang 版本提供软件包。
Cloudsmith 仓库具有每月流量配额,可能会被耗尽。因此,以下示例使用 Cloudsmith 仓库镜像。镜像仓库中的所有软件包都使用相同的签名密钥进行签名。
本指南将重点介绍一种更传统和明确的方式来设置额外的 apt 仓库和安装软件包。
除非另有说明,否则下面涵盖的所有步骤都是强制性的。
安装必要的依赖项
sudo apt-get update -y
sudo apt-get install curl gnupg -y
启用 apt HTTPS 传输
为了使 apt 能够从 Cloudsmith.io 镜像或 Launchpad 下载 RabbitMQ 和 Erlang 软件包,必须安装 apt-transport-https
软件包
sudo apt-get install apt-transport-https
添加仓库签名密钥
Cloudsmith 使用他们自己的 GPG 密钥(每个仓库一个)对分发的软件包进行签名。RabbitMQ 团队的镜像具有相同的内容,因此,软件包使用相同的密钥进行签名。
为了使用这些仓库,必须将它们的签名密钥添加到系统中。这将使 apt 信任由该密钥签名的软件包。
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's main 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
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.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 Bookworm
- Debian Bullseye
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
## Provides RabbitMQ from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
EOF
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
## Provides RabbitMQ from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
EOF
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main
## Provides RabbitMQ from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu focal main
EOF
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bookworm main
## Provides RabbitMQ from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bookworm main
EOF
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bullseye main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bullseye main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bullseye main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/debian bullseye main
## Provides RabbitMQ from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bullseye main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bullseye main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian bullseye main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian 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
以从上面示例中使用的 Cloudsmith 镜像安装 erlang-*
软件包
# /etc/apt/preferences.d/erlang
Package: erlang*
Pin: origin ppa1.rabbitmq.com
# 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-*
软件包锁定到 25.3(假设软件包的软件包纪元为 1)
# /etc/apt/preferences.d/erlang
Package: erlang*
Pin: version 1:26.2.5.6-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.1.0(假设软件包的软件包纪元为 1)
# /etc/apt/preferences.d/rabbitmq
Package: rabbitmq-server
Pin: version 1:4.1.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
手动安装可能会更容易。以下是下载链接。
描述 | 下载 | 签名 |
---|---|---|
适用于基于 Debian 的 Linux 的 .deb 软件包(来自 GitHub) | rabbitmq-server_4.1.0-1_all.deb | 签名 |
使用 dpkg
手动安装时,必须首先安装软件包依赖项。与 apt
不同,dpkg
不会解析或管理依赖项。
这是一个示例,它执行此操作,安装 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.1.0/rabbitmq-server_4.1.0-1_all.deb
# install the package with dpkg
sudo dpkg -i rabbitmq-server_4.1.0-1_all.deb
rm rabbitmq-server_4.1.0-1_all.deb
与直接下载软件包并通过 dpkg -i
安装相比,建议通过 apt 仓库安装。当使用 dpkg -i
手动安装 RabbitMQ 软件包时,操作员负责确保满足所有软件包依赖项。
用户权限要求
RabbitMQ Debian 软件包将需要 sudo
权限才能安装和管理。在 sudo
不可用的环境中,请考虑改用通用二进制构建。
运行 RabbitMQ 服务器
启动服务器
当安装 RabbitMQ 服务器软件包时,服务器默认作为守护进程启动。它将以非特权用户 rabbitmq
身份运行。
作为管理员,像往常一样为基于 Debian 的系统启动和停止服务器
systemctl start rabbitmq-server
配置 RabbitMQ
在大多数系统上,节点应该能够以所有默认设置启动和运行。请参阅配置指南以了解更多信息,并参阅部署指南以获取超出开发环境的指南。
注意:节点设置为以系统用户 rabbitmq
身份运行。如果更改了节点数据库或日志的位置,则文件和目录必须归此用户所有。
端口访问
RabbitMQ 节点绑定到端口(打开服务器 TCP 套接字)以接受客户端和 CLI 工具连接。SELinux 等其他进程和工具可能会阻止 RabbitMQ 绑定到端口。发生这种情况时,节点将无法启动。有关更多详细信息,请参阅网络指南。
默认用户访问
broker 创建一个用户 guest
,密码为 guest
。未配置的客户端通常会使用这些凭据。默认情况下,这些凭据只能在连接到本地主机上的 broker 时使用,因此您需要先采取措施才能从任何其他机器连接。
有关如何创建更多用户和删除 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.0.9. 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 工具和监控指南以了解更多信息。
日志文件和管理
服务器日志可以在可配置的目录下找到,当通过 Linux 软件包管理器安装 RabbitMQ 时,该目录通常默认为 /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.0.9. 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.
日志轮换
broker 始终附加到日志文件,因此会保留完整的日志历史记录。
logrotate 是推荐的日志文件轮换和压缩方式。默认情况下,该软件包将设置 logrotate
以每周在默认 /var/log/rabbitmq
目录中的文件上运行。轮换配置可以在 /etc/logrotate.d/rabbitmq-server
中找到。
从 Launchpad 上的 Apt 仓库 (PPA) 安装 Erlang
此附加部分涵盖了从 Launchpad 安装现代 Erlang 软件包。要安装现代 Erlang 和 RabbitMQ,请参阅从 Cloudsmith 镜像安装 RabbitMQ。
Ubuntu 上的现代 Erlang
本节中描述的 apt 仓库特定于 Ubuntu。它们不能与 Debian 发行版一起使用。
标准的 Debian 和 Ubuntu 仓库倾向于提供过时的 Erlang/OTP 版本。RabbitMQ 团队维护着几个 apt 仓库,其中包括 Launchpad 上最新 Erlang/OTP 版本的软件包
- 对于最新的 Erlang 主要版本(当前为 27.x,但也包括 26.x 软件包)
- 对于Erlang 26.2.x
- 对于Erlang 25.3.x
Launchpad 上的 Erlang 仓库目前的目标是以下 Ubuntu 发行版
- Ubuntu 24.04 (Noble)
- Ubuntu 22.04 (Jammy)
或者,一组 Cloudsmith 镜像(见上文)支持相同的版本,并且也可以在 Debian 发行版上使用,而不仅仅是 Ubuntu。
为了使用该仓库,有必要
- 安装通过 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 能够从 Cloudsmith.io 镜像或 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