🛠 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 端口)。
09-08 19:15