4. RabbitMQ环境搭建:在Linux/Docker中安装RabbitMQ,启用管理插件
好,咱们进入实战环节了。环境搭建这事儿,说简单也简单,说坑也多。我见过不少新手在安装这一步就卡了半天,其实没必要。今天我就把两种主流方式——Linux 直接安装和Docker 部署——都给你捋一遍,顺便把管理插件也带上。
4.1 为什么推荐先学环境搭建?
你想想看,消息队列这东西,你光看理论不看实际跑起来,永远隔着一层。我个人习惯是:先搭环境,再跑 Demo,最后啃原理。这样你脑子里有个具体的画面,后面讲 Exchange、Binding 这些概念时,你就能对应到控制台上看到的按钮。
嗯,这里要注意:RabbitMQ 对 Erlang 版本有依赖。我在项目中遇到过有人直接 apt install 结果版本对不上,折腾半天。所以咱们还是用官方推荐的方式走。
4.2 方式一:Linux 直接安装(以 CentOS 7 / Ubuntu 20.04 为例)
4.2.1 安装 Erlang
RabbitMQ 是用 Erlang 写的,所以必须先装 Erlang。别自己去源码编译,太慢了。用官方仓库最稳。
CentOS 7:
# 添加 Erlang 官方仓库
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
# 安装 Erlang
sudo yum install erlang-25.3.2-1.el7.x86_64
# 验证
erl -version
Ubuntu 20.04:
# 添加 Erlang 仓库
wget -O- https://packagecloud.io/rabbitmq/rabbitmq-server/gpg.key | sudo apt-key add -
echo "deb https://packagecloud.io/rabbitmq/erlang/ubuntu/ focal main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
sudo apt update
sudo apt install erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key erlang-snmp erlang-ssl erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
# 验证
erl -version
https://www.rabbitmq.com/which-erlang.html 对照一下版本兼容矩阵。
4.2.2 安装 RabbitMQ Server
Erlang 装好之后,装 RabbitMQ 本身反而简单了。
CentOS 7:
# 添加 RabbitMQ 仓库
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
sudo yum install rabbitmq-server-3.12.6-1.el7.noarch
# 启动并设置开机自启
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
# 查看状态
sudo systemctl status rabbitmq-server
Ubuntu 20.04:
# 添加 RabbitMQ 仓库
echo "deb https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ focal main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
sudo apt update
sudo apt install rabbitmq-server
# 启动
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
# 查看状态
sudo systemctl status rabbitmq-server
sudo rabbitmqctl status 查看详细状态。如果看到 Status of node rabbit@localhost ... 并且没有报错,说明启动成功了。我习惯用这个命令而不是 systemctl status,因为它会显示更多运行时信息。
4.2.3 启用管理插件
RabbitMQ 默认只开了 AMQP 端口(5672),没有 Web 管理界面。咱们得手动启用管理插件。
# 启用管理插件
sudo rabbitmq-plugins enable rabbitmq_management
# 重启服务使配置生效
sudo systemctl restart rabbitmq-server
启用后,访问 http://你的服务器IP:15672 就能看到登录页面了。
默认用户名密码是 guest / guest。但注意:从 RabbitMQ 3.3 开始,guest 用户只能在 localhost 登录。如果你要通过远程访问,需要创建一个新用户。
# 创建管理员用户
sudo rabbitmqctl add_user admin your_password
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
sudo rabbitmqctl change_password guest new_password。
4.3 方式二:Docker 部署(推荐开发环境使用)
说实话,我现在自己玩或者做 Demo,基本都用 Docker。干净、快速、不污染宿主机。你想想看,一条命令就能跑起来,多省事。
4.3.1 拉取镜像并启动
# 拉取带管理插件的镜像(management 标签已经包含了管理插件)
docker pull rabbitmq:3.12-management
# 启动容器
docker run -d \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123 \
rabbitmq:3.12-management
这里解释一下参数:
-p 5672:5672:AMQP 协议端口,给客户端连接用-p 15672:15672:Web 管理界面端口-e RABBITMQ_DEFAULT_USER/PASS:设置默认管理员账号
启动后,访问 http://localhost:15672,用 admin / admin123 登录。
-v rabbitmq_data:/var/lib/rabbitmq。这样容器删了数据还在。我一般在开发环境不挂载,因为重启就是全新环境,反而方便测试。
4.3.2 验证管理插件是否正常
登录 Web 管理界面后,你应该能看到:
- 总览(Overview):连接数、队列数、消息速率
- 连接(Connections):当前客户端连接
- 通道(Channels):每个连接下的通道
- 交换器(Exchanges):所有 Exchange
- 队列(Queues):所有 Queue
- 管理(Admin):用户、虚拟主机、权限
我个人习惯先看 Overview 页面。如果看到绿色的 "Status: running",说明一切正常。然后我会点开 Queues 看看有没有默认队列——嗯,新安装的 RabbitMQ 应该是空的。
4.4 两种方式对比
| 对比维度 | Linux 直接安装 | Docker 部署 |
|---|---|---|
| 安装复杂度 | 中等(需处理 Erlang 依赖) | 低(一条命令) |
| 环境隔离 | 差(直接装在宿主机) | 好(容器隔离) |
| 版本切换 | 麻烦(需卸载重装) | 简单(换 tag 即可) |
| 生产环境推荐 | ✅ 推荐(性能更好) | ❌ 不推荐(除非有 K8s) |
| 开发/学习推荐 | ❌ 不推荐 | ✅ 强烈推荐 |
说白了,学习阶段用 Docker,生产环境用 Linux 直接安装。这个原则适用于大多数中间件,不只是 RabbitMQ。
4.5 常见问题排查
环境搭建时最容易出问题的几个点,我列一下:
- 端口被占用:5672 或 15672 被其他程序占了。用
netstat -tlnp | grep 5672查一下。 - 防火墙没开:远程访问 15672 时,记得放行端口。CentOS 用
firewall-cmd --add-port=15672/tcp --permanent。 - Erlang 版本不匹配:这个最常见。用
erl -version查看版本,然后去官网对照兼容列表。 - Docker 容器启动后马上退出:用
docker logs rabbitmq看日志。多半是端口冲突或权限问题。
核心要点回顾:
- Linux 安装:先装 Erlang(用官方仓库),再装 RabbitMQ,最后 enable 管理插件
- Docker 安装:直接用
rabbitmq:3.12-management镜像,一条命令搞定 - 管理插件:访问 15672 端口,创建管理员用户
- 开发用 Docker,生产用 Linux 直接安装
好了,环境搭好之后,下一章咱们就可以真正开始写代码了。到时候我会用 Python 和 Java 各写一个 Demo,让你感受一下消息的发送和接收。嗯,先到这,你去把环境跑起来吧。