概述

每个RabbitMQ节点使用一些文件和目录,用于加载配置、存储数据 / 元数据 / 日志文件等等。这些文件和目录的位置是可以自定义的。

本指南涵盖:

1)如何自定义RabbitMQ节点所使用的各种目录和文件的位置;

2)各种不同操作系统的默认位置;

3)关于文件和目录位置的其他相关主题;

路径和目录名称限制

一些环境变量配置路径和位置(节点的基目录或数据目录、插件目录和扩展目录等等)。这些路径必须排除一些字符:

1)* 和 ?(Linux, macOS, BSD和其他类UNIX系统);

2)^ 和 !(Windows);

3)[ 和 ];

4){ 和 };

上述字符将使节点无法启动或按预期运行(例如,展开插件并加载它们的元数据)。

在更改文件或目录位置时,务必确保RabbitMQ节点对应的OS进程拥有足够的读写权限。最好假设RabbitMQ使用的大多数目录和文件都需要读、写和文件创建权限。Debian、RPM和Windows安装脚本将设置适用于大多数环境的文件系统权限。然而,当系统范围内使用严格的默认权限时,可能需要在安装后运行额外的配置步骤,以确保RabbitMQ节点文件和目录具有足够的权限。

环境变量

名称 描述
RABBITMQ_BASE 只针对Windows系统。这个基目录包含RabbitMQ服务器的数据库和日志文件的子目录。或者分别设置RABBITMQ_MNESIA_BASE和RABBITMQ_LOG_BASE环境变量。
RABBITMQ_CONFIG_FILE 配置文件的路径,没有.config扩展名。如果有配置文件,服务器将使用它来配置RabbitMQ组件。
RABBITMQ_GENERATED_CONFIG_DIR RabbitMQ写入其生成的配置文件的目录。
RABBITMQ_MNESIA_BASE 这个基目录包含RabbitMQ服务器节点数据库、消息存储和集群状态文件的子目录,每个节点一个,除非RABBITMQ_MNESIA_DIR被显式设置。重要的是,有效的RabbitMQ用户在任何时候都有足够的权限来读写和创建这个目录中的文件和子目录。此变量通常不被覆盖。通常会覆盖RABBITMQ_MNESIA_DIR。
RABBITMQ_MNESIA_DIR 存储RabbitMQ节点数据的目录。这是一个模式数据库、消息存储、集群成员信息和其他持久节点状态。
RABBITMQ_SCHEMA_DIR RabbitMQ保存新格式配置文件使用的配置模式的目录。
RABBITMQ_LOG_BASE 这个基目录包含RabbitMQ服务器的日志文件,除非设置了RABBITMQ_LOGS。
RABBITMQ_LOGS RabbitMQ服务器的Erlang日志文件的路径。不能在Windows上重写此变量。
RABBITMQ_PLUGINS_DIR RabbitMQ的插件目录。这是类路径变量,不同的路径由特定于操作系统的分隔符(Unix为:,Windows为;)。
RABBITMQ_PLUGINS_EXPAND_DIR 工作目录,用于在启动服务器时展开启用的插件。重要的是,有效的RabbitMQ用户拥有足够的权限来读取和创建该目录中的文件和子目录。
RABBITMQ_ENABLED_PLUGINS_FILE 此文件显式记录启用的插件。当启用或禁用插件时,将重新创建此文件。重要的是,有效的RabbitMQ用户拥有足够的权限来随时读取、写入和创建该文件。
RABBITMQ_PID_FILE 进程id放置在其中供rabbitmqctl使用的文件。

Linux, macOS, BSD的默认位置

在下表中,一些路径的${install_prefix}被指定。安装时,Homebrew安装使用安装前缀(Homebrew Cellar)。默认情况下这是/usr/local。
Debian和RPM包安装使用一个空的${install_prefix}。

名称 描述
RABBITMQ_BASE 非使用-只适用于Windows
RABBITMQ_CONFIG_FILE ${install_prefix}/etc/rabbitmq/rabbitmq
RABBITMQ_MNESIA_BASE ${install_prefix}/var/lib/rabbitmq/mnesia
RABBITMQ_MNESIA_DIR $RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME
RABBITMQ_LOG_BASE ${install_prefix}/var/log/rabbitmq
RABBITMQ_LOGS $RABBITMQ_LOG_BASE/$RABBITMQ_NODENAME.log
RABBITMQ_PLUGINS_DIR /usr/lib/rabbitmq/plugins:$RABBITMQ_HOME/plugins。注意,只有在将RabbitMQ安装到标准(默认)位置时才使用/usr/lib/rabbitmq/plugins。
RABBITMQ_PLUGINS_EXPAND_DIR $RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME-plugins-expand
RABBITMQ_ENABLED_PLUGINS_FILE ${install_prefix}/etc/rabbitmq/enabled_plugins
RABBITMQ_PID_FILE $RABBITMQ_MNESIA_DIR.pid

Windows上的默认位置

名称 描述
RABBITMQ_BASE %APPDATA%\RabbitMQ
RABBITMQ_CONFIG_FILE %RABBITMQ_BASE%\rabbitmq
RABBITMQ_MNESIA_BASE %RABBITMQ_BASE%\db
RABBITMQ_MNESIA_DIR %RABBITMQ_MNESIA_BASE%%RABBITMQ_NODENAME%
RABBITMQ_LOG_BASE %RABBITMQ_BASE%\log
RABBITMQ_LOGS %RABBITMQ_LOG_BASE%%RABBITMQ_NODENAME%.log
RABBITMQ_PLUGINS_DIR Installation-directory/plugins
RABBITMQ_PLUGINS_EXPAND_DIR %RABBITMQ_MNESIA_BASE%%RABBITMQ_NODENAME%-plugins-expand
RABBITMQ_ENABLED_PLUGINS_FILE %RABBITMQ_BASE%\enabled_plugins
RABBITMQ_PID_FILE 当前不支持

通用二进制构建的默认位置

这些是在解包通用Unix tar文件并不加修改地运行服务器时获得的默认值。在这个表中,$RABBITMQ_HOME指的是在提取归档文件时生成的目录。

名称 描述
RABBITMQ_BASE 不使用
RABBITMQ_CONFIG_FILE $RABBITMQ_HOME/etc/rabbitmq/rabbitmq
RABBITMQ_MNESIA_BASE $RABBITMQ_HOME/var/lib/rabbitmq/mnesia
RABBITMQ_MNESIA_DIR $RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME
RABBITMQ_LOG_BASE $RABBITMQ_HOME/var/log/rabbitmq
RABBITMQ_LOGS $RABBITMQ_LOG_BASE/$RABBITMQ_NODENAME.log
RABBITMQ_PLUGINS_DIR $RABBITMQ_HOME/plugins
RABBITMQ_PLUGINS_EXPAND_DIR $RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME-plugins-expand
RABBITMQ_PID_FILE $RABBITMQ_MNESIA_DIR.pid

上一篇:RabbitMQ系列(四) RabbitMQ的虚拟主机

下一篇:RabbitMQ系列(六) RabbitMQ的配置

作者:攀登者007
链接:https://juejin.cn/post/6844904139063820295
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

RabbitMQ系列(五) RabbitMQ的文件和目录位置的更多相关文章

  1. RabbitMQ系列之RabbitMQ单机安装

    安装epel源 rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm #ht ...

  2. Python学习笔记(二十五)操作文件和目录

    摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319253241 ...

  3. linux学习(五)Linux 文件与目录管理

    一.Linux处理目录的常用命令 ls : 列出目录 cd :切换目录 pwd :显示目前的目录 mkdir :创建一个新的目录 rmdir :删除一个空的目录 cp : 复制文件或目录 rm : 移 ...

  4. 转:eclipse打开文件或者目录位置(不使用插件)

    http://my.oschina.net/havoc/blog/204958?p= 首先说不使用插件的方法 WINDOWS eclipse配置 Run-->External Tools--&g ...

  5. FileDirLocationOperator - 文件或目录位置操作.

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Move ...

  6. RabbitMQ系列(五)--高级特性

    在上一篇文章讲解MQ消息可靠性投递和幂等性中有提到confirm机制的重要性,现在更相信的说明一下 一.Confirm机制 Confirm就是消息确认,当Producer发送消息,如果Broker收到 ...

  7. rabbitmq系列五 之远程过程调用(RPC)

    1.远程过程调用(RPC) 在第二篇教程中我们介绍了如何使用工作队列(work queue)在多个工作者(woker)中间分发耗时的任务. 可是如果我们需要将一个函数运行在远程计算机上并且等待从那儿获 ...

  8. rabbitmq系列五 之主题交换机

    1.主题 在前面的例子中,我们对日志系统进行了改进.使用了direct交换机代替了fanout交换机,从只能盲目的广播消息改进为有可能选择性的接收日志. 尽管直接交换机能够改善我们的日志系统,但是它也 ...

  9. RabbitMQ系列之RabbitMQ集群

    本文的集群是RabbitMq 自身的Cluster搭建 . #hosts准备: vim /etc/hosts #172.16.3.79 s1 #172.16.3.105 s2 172.16.2.10 ...

  10. eclipse打开本地文件所在目录位置的快捷键

    在开发的过程中总是会遇到需要在本地文件夹找到该本地文件的情况,比如说要发送给同事什么的. 在使用Eclipse的过程中,大多数人都是先在Eclipse目录中定位到文件,然后通过在文件的右键属性中找到文 ...

随机推荐

  1. 2、androidStudio调用Unity方法

    1.导入Unity的Classes.jar文件 (1).首先找到这个包在哪 Unity版本为5.0之前时,classes.jar的路径: unity的安装路径\Editor\Data\Playback ...

  2. HarmonyOS语言基础类库开发指南上线啦!

      语言基础类库提供哪些功能?多线程并发如何实现?TaskPool(任务池)和Worker在实现和使用场景上有何不同? 针对开发者关注的并发等语言基础类库的相关能力,我们在新推出的语言基础类库开发指南 ...

  3. redis 简单整理——redis 准备篇[一]

    前言 简单整理一下redis. 正文 为什么使用redis? 速度快 1.1 内存执行 1.2 c语言编写,速度相对快一些 1.3 单线程,比较符合这种存储模式 2 丰富的数据结构 3 丰富的功能机制 ...

  4. 【布局进阶】巧用 :has & drop-shadow 实现复杂布局效果

    最近,群里聊到了一个很有意思的布局效果.大致效果如下所示,希望使用 CSS 实现如下所示的布局效果: 正常而言,我们的 HTML 结构大致是如下所示: <div class="g-co ...

  5. 【Oracle】在PL/SQL中使用sql实现插入排序

    [Oracle]在PL/SQL中使用sql实现插入排序 一般来说,SQL要排序的话直接使用order by即可 不一般来说,就是瞎搞,正好也可以巩固自己的数据结构基础,主要也发现没有人用SQL去实现这 ...

  6. 力扣1045(MySQL)-买下所有产品的客户(中等)

    题目: Customer 表: Product 表: 写一条 SQL 查询语句,从 Customer 表中查询购买了 Product 表中所有产品的客户的 id. 示例:  解题思路: 建表语句: 1 ...

  7. 解决方案|致拓T8数字化ERP

    ​简介:通过快速构建敏捷ERP系统,实现从销售到财务的全流程闭环管理,助力企业数字化升级. 「致拓T8数字化ERP」解决方案聚焦业财一体,助力企业卓有成效地提升经营收益,赋能企业个性化数字生产管理.本 ...

  8. Dubbo 3.0 前瞻系列 | 2020双11,Dubbo3.0 在考拉的超大规模实践

    很多开发者一直以来好奇:阿里自己有没有在用Dubbo,会不会用Dubbo?在刚刚结束的双11,我们了解到阿里云今年提出了"三位一体"的理念,即将"自研技术".& ...

  9. 独家深度 | 一文看懂 ClickHouse vs Elasticsearch:谁更胜一筹?

    简介: 本文的主旨在于通过彻底剖析ClickHouse和Elasticsearch的内核架构,从原理上讲明白两者的优劣之处,同时会附上一份覆盖多场景的测试报告给读者作为参考. 作者:阿里云数据库OLA ...

  10. sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术

    ​简介:What is sysAK.典型工具介绍.开源 3 方面介绍了 sysAK 系统,目前 sysAK 工具集已经在龙蜥社区开源,并且在系统运维 SIG.跟踪诊断 SIG 一起共建,希望大家后期加 ...