一、资源
1、erlang-27.3.4-1.el9.x86_64.rpm
链接: https://pan.baidu.com/s/1ZR3u33Pp18C7U-jrfm0rLA?pwd=fbdm 提取码: fbdm
2、rabbitmq-server-4.1.0-1.el8.noarch.rpm
链接: https://pan.baidu.com/s/1Wwt8Me9dZcDQPuNfNyQhRQ?pwd=u6uw 提取码: u6uw
3、rabbitmq-release-signing-key.asc
链接: https://pan.baidu.com/s/1ICoFz4gPQ-mPeV_5FLfgmg?pwd=kc7m 提取码: kc7m
二、安装 RabbitMQ
安装方式有两种,一直接安装在 linux 服务器上,二先安装 docker,然后通过 docker 安装 rabbitmq
1、方式一:直接安装
直接安装在 lunux 服务器上,也有两种方式:使用 YUM 仓库与直接下载 RPM 包安装
1、下载RPM 包安装灵活性更高,可以选择特定版本的 RPM 包进行安装,但是需要手动解决所有依赖关系,本文只介绍这种
2、使用 YUM 仓库安装,YUM 可以自动解决并安装所需的依赖包,可以参考 https://rabbitmq.org.cn/docs/install-rpm
1.1 下载 RPM 包安装
# 如果可以访问 github,不需要下载上面的资源,直接执行下面的 wget 即可
# 如果无法访问 github,下载上面的资源,下面命令中的 wget 不需要执行
# 将 RabbitMQ 的官方 GPG 公钥导入到你的系统中,以便在后续安装或更新 RabbitMQ RPM 包时可以验证软件包的合法性与完整性。
wget https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
rpm --import rabbitmq-release-signing-key.asc
# RabbitMQ 的核心是用 Erlang 编写的。因此,为了运行 RabbitMQ 服务,你需要在你的服务器上安装 Erlang 运行时环境。
# 从 RabbitMQ 官方 GitHub 发布页面 下载了一个为 EL9(Enterprise Linux 9) 构建的 Erlang RPM 包
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v27.3.4/erlang-27.3.4-1.el9.x86_64.rpm
# 安装 erlng 基于 RPM 的软件包
dnf install -y erlang-27.3.4-1.el9.x86_64.rpm
# 下载 rabbitmq-server-4.1.0
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.1.0/rabbitmq-server-4.1.0-1.el8.noarch.rpm
# 安装 rabbitmq-server
dnf install -y rabbitmq-server-4.1.0-1.el8.noarch.rpm
# 启用 RabbitMQ 管理插件
rabbitmq-plugins enable rabbitmq_management
# 设置 rabbitmq-server 开机自启
systemctl enable rabbitmq-server
# 启动 rabbitmq-server 服务
systemctl start rabbitmq-server
1.2 创建用户
# rabbitmq 创建了一个默认用户 guest,密码为 guest。
# 默认情况下,这些凭据只能在作为 localhost 连接到 rabbitmq 时使用
# 使用下面创建的 admin 登陆
# 添加用户 admin,密码 123456,建议使用更复杂的密码
rabbitmqctl add_user admin 123456
# 设为管理员
rabbitmqctl set_user_tags admin administrator
# 设置权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 删除默认的 guest 用户,也可以登陆 web 管理页面删除
rabbitmqctl delete_user guest
# 显示当前 RabbitMQ 实例中的所有用户及其角色
rabbitmqctl list_users
1.3 设置最大打开文件数(可选)
# 确保 /etc/systemd/system/rabbitmq-server.service.d/ 目录存在。如果不存在,请创建它:
sudo mkdir -p /etc/systemd/system/rabbitmq-server.service.d/
# 创建 limits.conf 文件
sudo tee /etc/systemd/system/rabbitmq-server.service.d/limits.conf <<EOF
[Service]
LimitNOFILE=64000
EOF
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 重启 RabbitMQ 服务
sudo systemctl restart rabbitmq-server
# 验证更改
cat /proc/$(pgrep beam.smp)/limits | grep 'Max open files'
2、方式二:通过 docker 安装
2.1 安装 docker
# 添加阿里云docker-ce仓库
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 列出当前系统中所有可安装的 docker-ce 版本,并按照版本号从高到低进行排序,同时显示重复的版本。
dnf list docker-ce --showduplicates | sort -r
# 安装最新版本 docker-ce,也可以指定版本安装(dnf install -y docker-ce-20.10.15-3.el9.x86_64)
dnf install -y docker-ce
# 创建目录,存放 docker 的配置文件
mkdir -p /etc/docker
# 创建并写入 /etc/docker/daemon.json 文件,设置 Docker 使用 systemd 作为 Cgroup 驱动
# registry-mirrors 配置:docker 镜像加速器的地址列表。
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.m.daocloud.io"
]
}
EOF
# 设置 docker 开机自启
systemctl enable docker
# 启动 docker
systemctl start docker
# 查看 docker 状态
systemctl status docker
2.2 启动 rabbitmq
2.2.1方式一:直接 docker run
docker run -d \
--name rabbitmq \
--hostname rabbitmq \
--restart unless-stopped \
-p 5672:5672 \
-p 15672:15672 \
-v /opt/rabbitmq/data:/var/lib/rabbitmq \
-v /opt/rabbitmq/logs:/var/log/rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456 \
-e RABBITMQ_ERLANG_COOKIE=your_secure_cookie \
--ulimit nofile=64000:64000 \
rabbitmq:4.1.0-management
# 查看 rabbitmq 是否启动成功,healthy 为成功
[root@rabbitmq ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80d6e472b03b rabbitmq:4.1.0-management "docker-entrypoint.s…" 15 minutes ago Up 15 minutes (healthy) 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, [::]:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, [::]:15672->15672/tcp rabbitmq
# 然后网页访问 http://IP:15672 ,登陆即可
# 账户 admin
# 密码 123456
2.2.2 方式二:使用 yaml 启动,推荐这种
rabbitmq_config.yaml 文件内容如下:
version: '3.8'
services:
rabbitmq:
image: rabbitmq:4.1.0-management # 带有管理界面的 RabbitMQ 4.1.0 版本镜像
container_name: rabbitmq # 容器名称
hostname: rabbitmq # 主机名
restart: unless-stopped # 容器重启策略
ports: # 端口映射
- "5672:5672" # 映射 AMQP 协议默认端口
- "15672:15672" # 映射 RabbitMQ 管理界面的默认端口
volumes: # 数据卷挂载 1、将 RabbitMQ 的数据目录挂载到宿主机的 /opt/rabbitmq/data 2、将日志文件挂载到宿主机的 /opt/rabbitmq/logs
- /opt/rabbitmq/data:/var/lib/rabbitmq
- /opt/rabbitmq/logs:/var/log/rabbitmq
environment: # 环境变量 1、设置默认用户为 admin 2、设置默认用户的密码为 123456(建议使用更复杂的密码)3、设置 Erlang Cookie,用于集群节点间的认证
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=123456
- RABBITMQ_ERLANG_COOKIE=your_secure_cookie
ulimits: # 设置容器内进程的资源限制
nofile: # 设置最大打开文件描述符的数量,软硬限制均为 64000,有助于处理高并发场景
soft: 64000 #
hard: 64000
healthcheck: # 健康检查
test: ["CMD", "rabbitmq-diagnostics", "status"] # 执行的命令或脚本,这里是使用 rabbitmq-diagnostics status 来检查服务状态
interval: 30s # 检查的时间间隔,默认为 30 秒
timeout: 10s # 超时时间,默认为 10 秒
retries: 3 # 失败重试次数,默认为 3 次
start_period: 60s # 初始化等待时间,在此期间内任何失败都不会计入失败次数,默认为 60 秒
# 启动 rabbitmq
docker compose -f rabbitmq_config.yaml up -d
# 查看 rabbitmq 是否启动成功,healthy 为成功
[root@rabbitmq ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80d6e472b03b rabbitmq:4.1.0-management "docker-entrypoint.s…" 15 minutes ago Up 15 minutes (healthy) 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, [::]:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, [::]:15672->15672/tcp rabbitmq
# 然后网页访问 http://IP:15672 ,登陆即可
# 账户 admin
# 密码 123456
三、其它常用命令
1、验证 rpm 软件包
# 导入 rabbitmq 签名密钥
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
# rpm -K package.rpm 用于检查 RPM 包的摘要信息和签名,以验证包的完整性和来源可靠性
# digests OK:表明该RPM包未被篡改或损坏,其内容完整性得到了保证
# signatures OK:表示此软件包的数字签名有效,并且是由受信任的密钥签署的
# 验证软件包 erlang
[root@rabbitmq ~]# rpm -K erlang-27.3.4-1.el9.x86_64.rpm
erlang-27.3.4-1.el9.x86_64.rpm: digests signatures OK
# 验证软件包 rabbitmq-server
[root@rabbitmq ~]# rpm -K rabbitmq-server-4.1.0-1.el8.noarch.rpm
rabbitmq-server-4.1.0-1.el8.noarch.rpm: digests signatures OK
2、管理用户和权限
# 添加用户
rabbitmqctl add_user username
# 列出用户
rabbitmqctl list_users
# 删除用户
rabbitmqctl delete_user username
# 示例将用户 admin 的密码重置为 123456
rabbitmqctl change_password admin 123456
# 设置账户 admin 为管理员角色
rabbitmqctl set_user_tags admin administrator
# 授予用户权限
# 在 RabbitMQ 中,默认的虚拟主机名称是 /。这是安装 RabbitMQ 时自动创建的,并且在没有任何配置更改的情况下,所有新用户都会默认关联到这个虚拟主机。
[root@rabbitmq ~]# rabbitmqctl list_vhosts
Listing vhosts ...
name
/
# 授予用户权限要在虚拟主机[custom-vhost]中向用户[username]授予
# rabbitmqctl set_permissions -p "custom-vhost" "username" ".*" ".*" ".*"
# "."* ".*" ".*":这些是正则表达式模式,分别表示配置、写入和读取权限
# ".*" 意味着授予该用户在指定的虚拟主机上对所有资源进行配置、写入和读取的完全权限。
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 清除虚拟主机中用户的权限
rabbitmqctl clear_permissions -p "custom-vhost" "username"
3、插件管理
# 获取本地可用插件列表,包括已经启用的插件
rabbitmq-plugins list
# 显示已安装(启用)插件列表
rabbitmq-plugins list -e
# 启用插件,比如 rabbitmq_web_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt
# 禁用插件,比如 rabbitmq_web_mqtt
rabbitmq-plugins disable rabbitmq_web_mqtt