3.1. 配置简介¶
3.1.1. 配置文件¶
默认情况下,CouchDB 从以下位置读取配置文件,顺序如下:
etc/default.ini
etc/default.d/*.ini
etc/local.ini
etc/local.d/*.ini
位于 *.d/
目录中的配置文件按名称排序,这意味着例如名为 etc/local.d/00-shared.ini
的文件将在 etc/local.d/10-server-specific.ini
之前加载。
所有路径都是相对于 CouchDB 安装目录指定的:在类 Unix 系统上建议使用 /opt/couchdb
,在 Windows 系统上建议使用 C:\CouchDB
,在 macOS 上建议使用两个目录的组合:Applications/Apache CouchDB.app/Contents/Resources/couchdbx-core/etc
用于 default.ini
和 default.d
目录,以及 /Users/<your-user>/Library/Application Support/CouchDB2/etc/couchdb
或 /Users/<your-user>/Library/Preferences/couchdb2-local.ini
之一用于 local.ini
和 local.d
目录。
后续文档中的设置将覆盖之前条目中的设置。例如,在 local.ini
中设置 chttpd/bind_address
参数将覆盖 default.ini
中的任何设置。
警告
在升级或重新安装期间,default.ini
文件可能会被覆盖,因此本地化更改应在 local.ini
文件或 local.d
目录中的文件中进行。
可以通过设置 ERL_FLAGS 环境变量来更改配置文件链
export ERL_FLAGS="-couch_ini /path/to/my/default.ini /path/to/my/local.ini"
或者将 -couch_ini ..
标志直接放在 etc/vm.args
文件中。在启动 couchdb
时将 -couch_ini ..
作为命令行参数传递与设置 ERL_FLAGS
环境变量相同。
警告
环境变量/命令行标志将覆盖 etc/vm.args
文件中指定的任何 -couch_ini
选项。并且,这两个选项都完全覆盖 CouchDB 从默认位置搜索。仅在必要时使用这些选项,并确保跟踪 etc/default.ini
的内容,这些内容可能会在将来的版本中发生变化。
如果需要使用不同的 vm.args
或 sys.config
文件,例如,在与 CouchDB 提供的文件不同的位置,或者您不想编辑原始文件,可以通过设置 COUCHDB_ARGS_FILE 或 COUCHDB_SYSCONFIG_FILE 环境变量来更改默认位置
export COUCHDB_ARGS_FILE="/path/to/my/vm.args"
export COUCHDB_SYSCONFIG_FILE="/path/to/my/sys.config"
3.1.2. 参数名称和值¶
所有参数名称都区分大小写。每个参数都采用五种类型之一的值:布尔值、整数、字符串、元组 和 属性列表。布尔值可以写成 true
或 false
。
值为 元组 或 属性列表 的参数遵循 Erlang 对样式和命名的要求。
3.1.3. 通过配置文件设置参数¶
在版本 3.3 中更改:添加了在参数名称中使用 =
的功能
在版本 3.3 中更改:删除了未记录的多行值功能。
设置某些参数的常用方法是编辑 local.ini
文件(位置如上所述)。
例如
; This is a comment
[section]
param = value ; inline comments are allowed
每个配置文件行可能包含 节 定义、参数 规范、空行(仅包含空格和换行符)或 注释 行。您可以为 节 或 参数 设置 内联 注释。
节 定义了属于 CouchDB 特定子系统的参数组。例如,httpd
节不仅包含 HTTP 服务器参数,还包含其他直接与之交互的参数。
参数 规范包含由 等号 (=
) 分隔的两个部分:左侧为参数名称,右侧为参数值。=
前后的空格是可选的,以提高配置的可读性。
从版本 3.3 开始,可以在参数名称中使用 =
,但前提是参数和值之间用空格隔开,即等号两侧至少有一个空格。这在 [jwt_keys]
节中可能很有用,因为 base64 编码的密钥可能包含一些 =
字符。
注意
如果您想从 default.ini 中删除某个参数,而不修改该文件,您可以在 local.ini 中覆盖它,但不要设置任何值
[compactions]
_default =
这可以理解为:“如果之前设置过 _default 参数,则从 compactions 节中删除它”。
分号 (;
) 表示注释的开始。此字符之后的所有内容都被 CouchDB 忽略。
编辑配置文件后,应重新启动 CouchDB 以应用任何更改。
3.1.4. 通过 HTTP API 设置参数¶
或者,可以通过 HTTP API 设置配置参数。此 API 允许在不重启服务器的情况下动态更改 CouchDB 配置
curl -X PUT https://127.0.0.1:5984/_node/<name@host>/_config/uuids/algorithm -d '"random"'
旧参数的值将在响应中返回
"sequential"
通过 HTTP API 更改配置时应谨慎,因为这可能会导致 CouchDB 无法访问,例如,通过更改 chttpd/bind_address
curl -X PUT https://127.0.0.1:5984/_node/<name@host>/_config/chttpd/bind_address -d '"10.10.0.128"'
如果您输入错误或指定的 IP 地址在您的网络中不可用,CouchDB 将无法访问。解决此问题的唯一方法是远程登录到服务器,更正配置文件并重新启动 CouchDB。为了防止此类意外发生,您可以设置 chttpd/config_whitelist
,以允许通过 HTTP API 更新的配置参数。设置此选项后,对非白名单参数的进一步更改必须通过配置文件进行,并且在大多数情况下,还需要在生效之前重启服务器。
3.1.5. 配置本地节点¶
虽然HTTP API 允许配置集群中的所有节点,但为了方便起见,您可以使用文字字符串 _local
来代替节点名称,以与本地节点的配置进行交互。例如
curl -X PUT https://127.0.0.1:5984/_node/_local/_config/uuids/algorithm -d '"random"'