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.30Node: ... (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
相关推荐
Wang's Blog27 分钟前
Linux小课堂: Vim与Emacs之Linux文本编辑器的双雄格局及Vim安装启动详解
linux·vim·emacs
观山岳五楼29 分钟前
unbuntu系统配置IPV6的三种模式
linux·服务器·ip·1024程序员节
运维行者_1 小时前
AWS云服务故障复盘——从故障中汲取的 IT 运维经验
大数据·linux·运维·服务器·人工智能·云计算·aws
王道长服务器 | 亚马逊云1 小时前
AWS Systems Manager:批量服务器管理的隐藏利器
linux·网络·云计算·智能路由器·aws
命运之光2 小时前
【快速解决】Linux服务器安装Java17运行环境
linux·运维·服务器
你喜欢喝可乐吗?2 小时前
Ubuntu服务器无法显示命令行登录提示
linux·运维·服务器·ubuntu
FJW0208142 小时前
【Linux】用户管理及优化
linux·运维·服务器
---学无止境---2 小时前
Linux中内核和用户空间通信send_uevent函数的实现
linux·网络
艾莉丝努力练剑3 小时前
【C++:继承】C++面向对象继承全面解析:派生类构造、多继承、菱形虚拟继承与设计模式实践
linux·开发语言·c++·人工智能·stl·1024程序员节
报错小能手3 小时前
项目——基于C/S架构的预约系统平台(3)
linux·开发语言·笔记·学习·架构·1024程序员节