🛠 1. RabbitMQ 简介
RabbitMQ 是一个开源的消息代理中间件,广泛应用于高并发、异步任务队列的场景中。在分布式系统架构中,RabbitMQ 可以充当消息的中转站,帮助不同服务之间进行高效的消息通信。
在这篇文章中,我们将:
- 直接在云服务器上安装 RabbitMQ
- 配置防火墙和安全组,让外网访问变得安全
- 管理默认的
guest
用户,并创建自定义的管理员账户
🔧 2. 环境准备
在开始之前,你需要确保你已经有一台云服务器(例如阿里云或 AWS)。本文假设你使用的是 Ubuntu 服务器,但大部分步骤也适用于其他 Linux 发行版。
🚀 3. 步骤一:安装 RabbitMQ
我们需要先安装 RabbitMQ 的依赖项:Erlang。
3.1 安装 Erlang
RabbitMQ 依赖 Erlang 作为运行环境。运行以下命令来安装 Erlang:
sudo apt-get update
sudo apt-get install -y erlang
3.2 安装 RabbitMQ
一旦 Erlang 安装好后,你可以通过以下命令来安装 RabbitMQ:
sudo apt-get install -y rabbitmq-server
3.3 启动并验证 RabbitMQ 服务
安装完 RabbitMQ 后,确保它在启动并运行:
sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server
验证 RabbitMQ 是否启动:
sudo systemctl status rabbitmq-server
如果显示 active (running)
,恭喜你!RabbitMQ 已经安装并启动成功。
🔐 4. 防火墙与安全组配置:确保外部访问 RabbitMQ
RabbitMQ 安装好后,默认情况下只允许从本地访问。为了让外部能够访问 RabbitMQ,我们需要在云平台上配置 安全组 以及服务器上的 防火墙。
4.1 配置阿里云/云服务商安全组
登录到云平台控制台,找到你的服务器实例,进入安全组设置。我们需要开放两个端口:
- 15672:RabbitMQ Web 管理界面
- 5672:AMQP 协议端口,用于客户端连接
添加以下安全组规则:
4.2 配置服务器防火墙
RabbitMQ 的端口可能还被服务器的防火墙阻挡。使用 ufw
(Ubuntu 默认的防火墙)来开放端口:
sudo ufw allow 15672/tcp
sudo ufw allow 5672/tcp
sudo ufw reload
通过 ufw status
检查防火墙规则是否生效。
sudo ufw status
👨💻 5. 访问 RabbitMQ Web 管理界面
浏览器访问 http://<你的服务器IP>:15672
,你应该能看到 RabbitMQ 的登录页面。
5.1 登录问题:guest
用户的远程访问限制
默认情况下,RabbitMQ 安装完成后有一个用户 guest/guest
,但出于安全原因,RabbitMQ 只允许 guest
用户从 localhost
登录。
如果你想允许 guest
从外部登录,需要修改配置文件:
sudo nano /etc/rabbitmq/rabbitmq.conf
添加以下内容:
loopback_users = none
保存后重启 RabbitMQ:
sudo systemctl restart rabbitmq-server
你现在可以使用默认的 guest
用户从外部登录。
🧑🔧 6. 创建自定义管理员用户
虽然你可以启用 guest
远程登录,但为了提高安全性,建议创建一个新的管理员用户。
6.1 创建新用户
使用以下命令创建一个新用户并赋予管理员权限:
# 创建用户名为 admin,密码为 yourpassword 的用户
sudo rabbitmqctl add_user admin yourpassword
# 赋予管理员权限
sudo rabbitmqctl set_user_tags admin administrator
# 设置用户权限
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
你现在可以使用新的 admin
用户登录 RabbitMQ 管理界面。
🔒 7. 更改 guest
用户密码
出于安全考虑,最好禁用或更改 guest
用户的默认密码。你可以通过以下命令修改 guest
用户的密码:
sudo rabbitmqctl change_password guest newpassword
✅ 8. 最后一步:验证一切是否工作正常
- 通过
http://<你的服务器IP>:15672
登录 RabbitMQ 管理界面,使用你新创建的用户或修改后的guest
用户。 - 验证客户端是否可以通过 AMQP 协议连接(使用 5672 端口)。