温馨提示×

Linux中RabbitMQ怎样配置

小樊
34
2025-12-08 18:22:48
栏目: 智能运维

Linux下 RabbitMQ 配置全流程

一 准备与版本匹配

  • 安装依赖的运行环境:RabbitMQ 基于 Erlang,需先安装合适版本的 Erlang,并注意二者存在严格的版本对应关系(如 3.8.x3.9.x3.10.x 对应不同的 Erlang 范围)。生产环境建议选择受支持的稳定版本组合,参考官方页面:which-erlang。
  • 发行版包管理安装(示例):
    • Debian/Ubuntu:sudo apt update && sudo apt install -y erlang rabbitmq-server
    • RHEL/CentOS:sudo yum install -y erlang(RabbitMQ 包可按官方仓库或下载的 RPM 安装)
  • 源码/通用包方式:下载 RabbitMQ 的 generic-unix 包解压后使用 sbin 目录脚本管理,适合无法使用系统仓库的场景。

二 核心配置文件与目录

  • 配置文件位置与示例:创建或编辑 /etc/rabbitmq/rabbitmq.config,常见做法是为默认用户放开远程访问(仅示例,生产请使用专用账户与强密码):
    • 示例内容(允许非本机使用 guest):
      [
        {rabbit, [
          {loopback_users, []}
        ]}
      ].
      
  • 环境变量与数据目录:编辑 /etc/rabbitmq/rabbitmq-env.conf 指定 Mnesia 数据库日志目录(便于独立磁盘与权限隔离):
    RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
    RABBITMQ_LOG_BASE=/data/rabbitmq/log
    
    创建目录并修正属主:
    mkdir -pv /data/rabbitmq/{mnesia,log}
    chown -R rabbitmq:rabbitmq /data/rabbitmq
    
  • 配置生效与重启:修改配置后重启服务,使新目录与策略生效。

三 服务启动与插件

  • 使用 systemd 管理(推荐):
    sudo systemctl enable --now rabbitmq-server
    sudo systemctl status rabbitmq-server
    
  • 使用 SysVinit 脚本(旧系统):
    sudo service rabbitmq-server start
    sudo service rabbitmq-server status
    
  • 启用管理插件(Web 控制台):
    sudo rabbitmq-plugins enable rabbitmq_management
    
    管理界面默认监听 15672 端口。

四 用户 虚拟主机 与权限

  • 创建管理用户与虚拟主机,并授予权限(示例):
    rabbitmqctl add_vhost /myvhost
    rabbitmqctl add_user admin StrongPass!23
    rabbitmqctl set_permissions -p /myvhost admin ".*" ".*" ".*"
    rabbitmqctl set_user_tags admin administrator
    
  • 安全建议:
    • 生产环境不建议保留或启用 guest/guest 的远程登录;如需本地调试再临时放开。
    • 按业务划分 vhost,最小权限分配,定期轮换密码。

五 防火墙与常用验证

  • 防火墙放行(示例):
    • firewalld:
      sudo firewall-cmd --permanent --add-port=5672/tcp
      sudo firewall-cmd --permanent --add-port=15672/tcp
      sudo firewall-cmd --reload
      
    • ufw:
      sudo ufw allow 5672/tcp
      sudo ufw allow 15672/tcp
      
  • 常用验证:
    • 服务状态:sudo systemctl status rabbitmq-server
    • 节点状态:rabbitmqctl status
    • Web 控制台:浏览器访问 http://服务器IP:15672,使用前述创建的管理员账户登录。

0