CentOS 7安装部署RabbitMQ

一、版本适配说明

  • Erlang 版本:23.3.4.11(与 RabbitMQ 3.8.30 完全兼容)
  • RabbitMQ 版本:3.8.30

二、安装步骤

1,更换国内 YUM 源

复制代码
# 备份默认源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak
 
# 下载阿里云源(关键步骤,解决CentOS 7默认源失效问题)
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
 
# 清理缓存并生成新缓存
yum clean all
yum makecache fast

2. 安装系统基础依赖

先安装后续步骤必需的工具和依赖库,避免安装时缺包报错:

复制代码
# 更新系统软件包缓存(可选,加速后续安装)
sudo yum update -y

# 安装依赖:socat(RabbitMQ 必需)、wget(下载文件)、logrotate(日志轮转)
sudo yum install -y socat wget logrotate

验证:无报错即成功(若提示 "已安装" 也正常)。

3. 彻底卸载旧版本 Erlang

若之前装过旧 Erlang,必须先卸载干净:

复制代码
# 1. 查看所有已安装的 Erlang 相关包
rpm -qa | grep erlang

# 2. 批量卸载所有 Erlang 包(无需手动改包名,命令自动匹配)
sudo rpm -e --nodeps $(rpm -qa | grep erlang)

# 3. 强制删除残留文件(防止卸载不彻底)
sudo rm -rf /usr/lib64/erlang /usr/share/erlang

验证 :再次执行 rpm -qa | grep erlang,无任何输出即卸载干净。

4. 下载并安装 Erlang

这里注意避开网络问题,实在不行,梯子或手动下载啥的。

复制代码
# 1. 下载 Erlang 23.3.4.11
wget https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm/download.rpm -O erlang-23.3.4.11-1.el7.x86_64.rpm

# 2. 安装下载好的 Erlang RPM 包
sudo rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm

验证 :执行 erl -version,输出类似以下内容即成功:

复制代码
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 11.2.2.10

5. 下载并安装 RabbitMQ 3.8.30

复制代码
# 1. 下载 RabbitMQ 3.8.30(若已下载,跳过此步)
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.30/rabbitmq-server-3.8.30-1.el7.noarch.rpm

# 2. 导入 RabbitMQ 签名密钥(若之前导入失败,可加 --no-check-certificate 跳过证书验证)
sudo rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc --no-check-certificate

# 3. 安装 RabbitMQ
sudo rpm -Uvh rabbitmq-server-3.8.30-1.el7.noarch.rpm

验证 :执行 rpm -qa | grep rabbitmq,输出 rabbitmq-server-3.8.30-1.el7.noarch 即成功。

6. 启动 RabbitMQ 并设置开机自启

复制代码
# 1. 启动 RabbitMQ 服务
sudo systemctl start rabbitmq-server

# 2. 设置开机自启(重启服务器后自动运行)
sudo systemctl enable rabbitmq-server

验证 :执行 sudo systemctl status rabbitmq-server,看到 Active: active (running) 即成功。

7. 启用 Web 管理界面(可视化操作)

复制代码
# 启用 rabbitmq_management 插件(会自动依赖其他必需插件)
sudo rabbitmq-plugins enable rabbitmq_management

验证 :执行 sudo rabbitmq-plugins list | grep management,输出以下 3 行即成功:

复制代码
[E*] rabbitmq_management               3.8.30
[E*] rabbitmq_management_agent           3.8.30
[E*] rabbitmq_web_dispatch               3.8.30

8. 创建管理员用户(默认 guest 仅本地访问,需自定义用户)

复制代码
# 1. 创建用户(替换 admin 为用户名,123456 为密码,建议生产环境改复杂密码)
sudo rabbitmqctl add_user admin 123456

# 2. 给用户设置 "超级管理员" 权限(可管理所有资源)
sudo rabbitmqctl set_user_tags admin administrator

# 3. 授予用户对根虚拟主机(/)的所有权限(读、写、管理)
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

验证 :执行 sudo rabbitmqctl list_users,看到 admin 用户的 tags 为 [administrator] 即成功。

9. 配置防火墙(开放访问端口)

若服务器启用了防火墙,需开放 RabbitMQ 的 2 个核心端口:

复制代码
# 1. 开放 AMQP 通信端口(5672,程序调用 RabbitMQ 用)
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent

# 2. 开放 Web 管理端口(15672,浏览器访问控制台用)
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent

# 3. 重启防火墙,使配置生效
sudo firewall-cmd --reload

验证 :执行 sudo firewall-cmd --list-ports,输出包含 5672/tcp 15672/tcp 即成功。

三、最终验证

1. 访问 Web 控制台

打开浏览器,输入地址:http://你的服务器IP:15672

  • 输入用户名 admin、密码 123456(你之前设置的)
  • 登录后能看到 RabbitMQ 管理界面,顶部显示 RabbitMQ 3.8.30 和 Node: ... (running) 即正常。

2. 命令行测试消息收发(可选,验证通信正常)

复制代码
# 1. 安装消息测试工具(amqp-tools)
sudo yum install -y amqp-tools

# 2. 发送一条测试消息到 "test_queue" 队列
echo "Hello RabbitMQ" | amqp-publish -u amqp://admin:123456@localhost -e amq.default -r test_queue

# 3. 从 "test_queue" 队列接收消息(接收1条后退出)
amqp-consume -u amqp://admin:123456@localhost -q test_queue -c 1 cat

验证 :接收命令输出 Hello RabbitMQ 即消息收发正常。

四、常用命令(后续管理用)

操作目的 命令
重启 RabbitMQ sudo systemctl restart rabbitmq-server
停止 RabbitMQ sudo systemctl stop rabbitmq-server
查看 RabbitMQ 日志 sudo tail -f /var/log/rabbitmq/rabbit@localhost.log
查看所有队列 sudo rabbitmqctl list_queues
修改用户密码 sudo rabbitmqctl change_password admin 新密码
删除匿名用户(安全) sudo rabbitmqctl delete_user guest
相关推荐
硅基手札27 分钟前
SPI技术系列 12 · SPI 设备驱动实战
linux·驱动开发·单片机·嵌入式硬件·mcu·性能优化·系统架构
不悔哥1 小时前
ESP32上跑 Linux: 乐鑫给 ESP32-S31开放了官方 BSP
linux·嵌入式硬件·开源
syagain_zsx1 小时前
WebSocket 教程:websocketpp 写 echo 服务端
linux·网络·c++·websocket·网络协议·工具库
无足鸟ICT1 小时前
【RHCA+】_etc_yum.repos.d_文件名.repo
linux·运维·centos
骑着蜗牛撵大象3271 小时前
字节序、TLV 到 netlink:Linux 网络消息的编解码全链路
linux·网络·php·etl·序列化·字节序·tlv
tianyuanwo1 小时前
RPM Spec中Name: %{?scl_prefix}xxx中增加宏定义的设计原理
linux·服务器·rpm·scl
张小姐的猫2 小时前
【MySQL】数据类型
android·linux·数据库·c++·mysql·adb·php
金色熊族2 小时前
ebpf程序开发(一)--ubuntu20.04
linux·ebpf
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
Linux 线程控制
linux
叼烟扛炮2 小时前
Linux 学习笔记(八):GCC 编译器的四大阶段与链接原理
linux·笔记·学习