跳到主要内容
版本: 4.1

在 Debian 和 Ubuntu 上安装

概述

本指南涵盖了在 Debian、Ubuntu 以及基于它们之一的发行版上安装 RabbitMQ。

RabbitMQ 包含在标准的 Debian 和 Ubuntu 软件仓库中。然而,包含的版本落后于最新的 RabbitMQ 版本很多个发布版本,并且可能提供已经超出支持的 RabbitMQ 版本。

RabbitMQ 团队制作我们自己的 Debian 软件包,并通过 Cloudsmith 分发它们。

本指南的关键部分是

支持的 Erlang 版本将从 Launchpad 上的现代 Erlang apt 仓库之一或 Cloudsmith.io 镜像中获取。

那些寻找更详细的安装步骤描述的人应该参考

更高级的主题包括

如何在 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 团队维护的 LaunchpadCloudsmith.io 上的 Debian 仓库。

使用 Cloudsmith 镜像的 Apt:快速启动脚本

以下是一个 shell 代码片段,它执行本指南中解释的步骤。它从 RabbitMQ 团队托管的 apt 仓库中获取 RabbitMQ 和 Erlang。

重要提示

此仓库仅提供 amd64 (x86-64) Erlang 软件包。对于 amd64 (aarch64),必须修改此脚本以从 Launchpad 获取 Erlang 26。

#!/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

使用 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

文件的内容将根据使用的发行版略有不同。

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

安装软件包

更新 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 软件包(来自 GitHubrabbitmq-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.

rabbitmqctlrabbitmq-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 版本的软件包

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 版本而异。

# 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

安装 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
© . All rights reserved.