服务器上部署RabbitMQ并配置远程访问

在服务器上部署 RabbitMQ 通常是为了让多个应用之间通过消息队列异步通信。
如果你用的是 Linux 系统,装好之后默认只能本机访问,需要手动开启管理插件、创建用户并放行防火墙端口,才能从外部连接。
下面按从零开始的顺序走一遍,命令和配置都可以直接复制使用。

安装前确认系统环境和依赖

RabbitMQ 依赖 Erlang 运行环境,不同 Linux 发行版安装方式略有差异。
以常见的 CentOS 7/8 和 Ubuntu 20.04/22.04 为例,先确认系统版本和网络是否正常。

cat /etc/os-release
ping -c 2 www.rabbitmq.com

如果服务器无法访问外网,
需要提前配置好内网 yum 源或 apt 源,
否则安装会失败。RabbitMQ 和 Erlang 的版本需要匹配,
不建议手动编译 Erlang,
优先用官方提供的仓库或系统包管理器安装。

安装 Erlang 与 RabbitMQ

CentOS 系列

先安装 Erlang 仓库再安装 RabbitMQ:

curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
sudo yum install -y erlang
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
sudo yum install -y rabbitmq-server

Ubuntu 系列

sudo apt update
sudo apt install -y erlang
sudo apt install -y rabbitmq-server

安装完成后启动服务并设置开机自启:

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo systemctl status rabbitmq-server

看到 active (running) 表示服务已启动。
如果启动失败,用 journalctl -u rabbitmq-server -n 50 查看日志,常见原因是主机名解析问题或 Erlang cookie 权限不对。

开启管理插件并创建远程访问用户

RabbitMQ 默认没有 Web 管理界面,需要手动启用插件:

sudo rabbitmq-plugins enable rabbitmq_management

然后创建一个带管理权限的用户,并允许从任意 IP 访问(生产环境建议限制 IP):

sudo rabbitmqctl add_user admin '你的强密码'
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'

不要直接使用默认的 guest 用户远程登录,guest 默认只允许 localhost 访问,这是安全设计。
创建完用户后,检查用户列表:

sudo rabbitmqctl list_users

配置防火墙和远程连接验证

RabbitMQ 管理界面默认端口是 15672,AMQP 协议端口是 5672。
根据你的系统放行端口:

# firewalld(CentOS)
sudo firewall-cmd --permanent --add-port=15672/tcp
sudo firewall-cmd --permanent --add-port=5672/tcp
sudo firewall-cmd --reload

# ufw(Ubuntu)
sudo ufw allow 15672/tcp
sudo ufw allow 5672/tcp

如果你用的是云服务器,还需要在云厂商控制台的安全组里放行这两个端口。
之后在浏览器访问 http://服务器IP:15672,用刚才创建的 admin 用户登录,能看到管理面板就说明配置成功。

代码连接测试可以用 Python 的 pika 库快速验证:

import pika
credentials = pika.PlainCredentials('admin', '你的强密码')
connection = pika.BlockingConnection(pika.ConnectionParameters('服务器IP', 5672, '/', credentials))
print('连接成功')
connection.close()

容易踩的坑和故障排查

界面打不开:先确认服务在运行,再检查防火墙和云安全组,最后看 RabbitMQ 是否绑定了 0.0.0.0。
默认配置通常监听所有网卡,但某些环境需要检查 /etc/rabbitmq/rabbitmq.conf 中的 listeners.tcp.default 配置。

用户无法登录管理界面:确认用户标签是 administrator,普通用户没有管理界面登录权限。

连接被拒绝:用 ss -tlnp | grep -E '5672|15672' 查看端口是否真的在监听。
如果只看到 127.0.0.1,说明只绑定了本机。

磁盘空间不足:RabbitMQ 默认在磁盘使用超过一定比例时会阻塞生产者,用 df -h 检查磁盘,必要时清理日志或调整 disk_free_limit 配置。

上线前建议检查的几项

  • 修改默认 guest 用户密码或直接删除 guest 用户
  • 为不同应用创建独立用户,按需分配 vhost 和权限
  • 配置日志轮转,避免 /var/log/rabbitmq/ 占满磁盘
  • 生产环境考虑启用镜像队列或 Quorum 队列提高可用性
  • 定期备份 RabbitMQ 的定义文件:rabbitmqctl export_definitions /path/backup.json

RabbitMQ 在服务器上的部署并不复杂,关键在于装完 Erlang 后确认版本兼容、创建独立用户、放行端口,最后用管理界面或代码连接验证。
如果遇到启动失败,优先看日志和 Erlang cookie 权限;
如果远程连不上,按服务、防火墙、安全组、监听地址的顺序逐层排查。

常见疑问

RabbitMQ 和 Kafka 该怎么选?
RabbitMQ 更适合业务消息、任务队列、对消息可靠性要求高的场景,协议支持丰富;Kafka 更适合日志采集、流式处理和大吞吐场景。小规模业务系统优先考虑 RabbitMQ,运维成本更低。

管理界面端口 15672 能改成其他端口吗?
可以。在 /etc/rabbitmq/rabbitmq.conf 中添加 management.tcp.port = 自定义端口,然后重启服务即可。

服务器重启后 RabbitMQ 会自动启动吗?
如果执行过 systemctl enable rabbitmq-server,会开机自启。可以用 systemctl is-enabled rabbitmq-server 确认。

需要为 RabbitMQ 单独配置 SSL 吗?
如果服务暴露在公网,建议配置 TLS 加密。内网环境可以先不配,但生产环境涉及敏感数据时应当启用。

分享到:
上一篇
服务器Kafka教程:单机部署、启动验证与常见报错处理
下一篇
服务器PostgreSQL教程:从安装到远程连接
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意