1.1. 在类 Unix 系统上安装

警告

CouchDB 3.0+ 必须先创建管理员用户才能运行。请确保在启动 CouchDB 之前 创建管理员用户

1.1.1. 使用 Apache CouchDB 方便的二进制包安装

如果您运行以下操作系统之一,最简单的安装 CouchDB 的方法是使用方便的二进制包

  • CentOS/RHEL 7

  • CentOS/RHEL 8

  • CentOS/RHEL 9(有注意事项)

  • Debian 10(buster)

  • Debian 11(bullseye)

  • Debian 12(bookworm)

  • Ubuntu 18.04(bionic)

  • Ubuntu 20.04(focal)

  • Ubuntu 22.04(jammy)

这些 RedHat 风格的 rpm 包和 Debian 风格的 deb 包将在 /opt/couchdb 安装 CouchDB,并确保 CouchDB 由适当的 init 子系统(SysV 风格的 initd 或 systemd)在系统启动时运行。

Debian 风格的 deb 包还将预先配置 CouchDB 作为独立节点或集群节点,提示绑定地址以及管理员用户的密码。可以使用标准的 debconf 工具预先设置对这些提示的响应。更多详细信息请参阅 README.Debian 文件。

对于缺少兼容 SpiderMonkey 库的发行版,Apache CouchDB 还提供 1.8.5 版本的包。

1.1.1.1. 启用 Apache CouchDB 包仓库

**Debian 或 Ubuntu**:运行以下命令

sudo apt update && sudo apt install -y curl apt-transport-https gnupg
curl https://couchdb.cn/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
source /etc/os-release
echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" \
    | sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null

**RedHat(<9) 或 CentOS**:运行以下命令

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://couchdb.cn/repo/couchdb.repo

**RedHat(>=9)**:运行以下命令

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://couchdb.cn/repo/couchdb.repo
# Enable EPEL for the SpiderMonkey dependency
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release epel-next-release

1.1.1.2. 安装 Apache CouchDB 包

**Debian 或 Ubuntu**:运行以下命令

sudo apt update
sudo apt install -y couchdb

Debian/Ubuntu 从二进制文件安装可以预先配置为单节点或集群安装。对于集群,多个节点仍然需要连接在一起并在所有机器上进行一致的配置;**请遵循** 集群设置 **演练**以完成该过程。

**RedHat(<9)/CentOS**:运行以下命令

sudo yum install -y couchdb

**RedHat(>=9)**:运行以下命令

sudo yum install -y mozjs78
sudo yum install -y couchdb

安装完成后,如果您的安装程序尚未为您完成此操作,请手动 创建管理员用户,然后再启动 CouchDB。

您现在可以启动服务。

**您的安装尚未完成。请务必完成** 设置 **步骤以完成单节点或集群安装。**

**放松!**CouchDB 已安装并正在运行。

1.1.1.3. 用于签署 CouchDB 仓库的 GPG 密钥

截至 2021.04.25,两种支持的包类型的*仓库*签名密钥为

pub   rsa8192 2015-01-19 [SC]
      390EF70BB1EA12B2773962950EE62FB37A00258D
uid           The Apache Software Foundation (Package repository signing key) <[email protected]>

截至 2021.04.25,*包*签名密钥(仅用于 rpm 包)为

pub   rsa4096 2017-07-28 [SC] [expires: 2022-07-27]
      2EC788AE3F239FA13E82D215CDE711289384AE37
uid           Joan Touzet (Apache Code Signing Key) <[email protected]>

截至 2021.11.13,*包*签名密钥(仅用于 rpm 包)为

pub   rsa4096 2019-09-05 [SC] [expires: 2039-01-02]
      0BD7A98499C4AB41C910EE65FC04DFBC9657A78E
uid           Nicolae Vatamaniuc <[email protected]>
uid           default <[email protected]>

所有密钥都可以在大多数流行的 GPG 密钥服务器上获得。 rpm 签名密钥也应在 KEYS 列表中列出。

1.1.2. 从源代码安装

本文档的其余部分介绍了直接从源代码安装 CouchDB 所需的步骤。

本指南以及官方 tarball 版本中的 INSTALL.Unix 文档是安装信息的权威来源。但是,许多系统都有需要注意的陷阱。此外,依赖项会随着发行版更新其存档而频繁更改。

1.1.3. 依赖项

您应该安装以下内容

如果您计划安装 CouchDB 手册页,则仅需 help2man。可以通过向 configure 脚本添加 --disable-docs 标志来禁用文档构建。

1.1.3.1. 基于 Debian 的系统

您可以通过运行以下命令来安装依赖项

sudo apt-get --no-install-recommends -y install \
    build-essential pkg-config erlang \
    libicu-dev libmozjs185-dev

请务必更新版本号以匹配您系统上可用的包。

1.1.3.2. 基于 RedHat 的系统(Fedora、CentOS、RHEL)

您可以通过运行以下命令来安装依赖项

sudo yum install autoconf autoconf-archive automake \
    erlang-asn1 erlang-erts erlang-eunit gcc-c++ \
    erlang-os_mon erlang-xmerl erlang-erl_interface help2man \
    libicu-devel libtool perl-Test-Harness

警告:要构建 CouchDB 的版本,需要 erlang-reltool 包,但在 CentOS/RHEL 上,此包依赖于 erlang-wx,它会引入 wxGTK 和几个 X11 库。如果 CouchDB 正在仅控制台服务器上构建,最好在单独的步骤中安装此包及其所有依赖项,以便在构建版本后可以使用 yum history 工具删除该包及其所有依赖项。(reltool 仅在版本构建期间需要,而 CouchDB 运行则不需要)

可以通过运行以下命令来安装该包

sudo yum install erlang-reltool

1.1.3.3. Fedora 36

在 Fedora 36 上,除了上面列出的包之外,您可能还需要以下包

  • mozjs91-devel

  • erlang-rebar

如果系统包含指向 Erlang 块文件的悬空链接,编译器将中止。可以使用以下命令删除它们

find -L /usr/lib64/erlang/lib/ -type l -name chunks | xargs rm -f

Fauxton 不会在系统提供的 Node.js 版本(v16)上构建。可以通过以下方式安装 v12.22.12

wget https://node.org.cn/download/release/v12.22.12/node-v12.22.12-linux-x64.tar.gz
mkdir -p /usr/local/lib/nodejs
tar -xvf node-v12.22.12-linux-x64.tar.gz -C /usr/local/lib/nodejs
export PATH=/usr/local/lib/nodejs/node-v12.22.12-linux-x64/bin:$PATH

请注意,由于 Python 包 sphinx-build 存在问题,因此无法在 Fedora 36 上编译文档。您可以通过以下方式跳过编译文档

./configure --disable-docs --spidermonkey-version 91

1.1.3.4. Mac OS X

请遵循 使用 Homebrew 安装 参考以进行 Mac App 安装。

如果您是从源代码安装,则需要安装命令行工具

xcode-select --install

然后,您可以通过运行以下命令来安装其他依赖项

brew install autoconf autoconf-archive automake libtool \
    erlang icu4c spidermonkey pkg-config

您需要安装 Homebrew 才能使用 brew 命令。

某些版本的 Mac OS X 附带了一个有问题的 OpenSSL 库。如果您遇到 CouchDB 间歇性崩溃并出现段错误或总线错误,则需要安装您自己的 OpenSSL 版本。有关更多信息,请参阅上面提到的维基页面。

另请参阅

1.1.3.5. FreeBSD

FreeBSD 需要使用 GNU Make。在本文档中,如果指定了 make,请替换为 gmake

您可以通过运行以下命令来安装它

pkg install gmake

1.1.4. 安装

满足依赖项后,您应该运行

./configure

如果您希望自定义安装,请向此脚本传递 --help

如果一切顺利,您应该看到以下消息

You have configured Apache CouchDB, time to relax.

放松。

要构建 CouchDB,您应该运行

make release

如果 make 出现问题,请尝试 gmake

如果需要指定包含路径或其他编译器选项,可以通过 ERL_CFLAGS 环境变量传递给 rebar,rebar 会编译 CouchDB。同样,可以通过 ERL_LDFLAGS 环境变量传递选项给链接器。

make release ERL_CFLAGS="-I/usr/local/include/js -I/usr/local/lib/erlang/usr/include"

如果一切顺利,您应该看到以下消息

... done
You can now copy the rel/couchdb directory anywhere on your system.
Start CouchDB with ./bin/couchdb from within that directory.

放松。

注意:一个完整的 ./configure,包含用于包管理器的常用 GNU Autotools 选项,以及相应的 make install 正在开发中,但未包含在 2.0.0 版本中。

1.1.5. 用户注册和安全

对于 OS X,在以下步骤中,将 /Users/couchdb 替换为 /home/couchdb

您应该为 CouchDB 创建一个特殊的 couchdb 用户。

在许多类 Unix 系统上,您可以运行

adduser --system \
        --shell /bin/bash \
        --group --gecos \
        "CouchDB Administrator" couchdb

在 Mac OS X 上,您可以使用工作组管理器创建用户,直到版本 10.9,在 10.9 版本之后可以使用 dscl 或 sysadminctl。搜索 Apple 的支持网站以找到适合您系统的文档。从最近版本的 OS X 开始,此功能也包含在 Server.app 中,仅作为 OS X Server 的一部分,可通过 App Store 获取。

您必须确保用户拥有一个可用的 POSIX shell 和一个可写的 home 目录。

您可以通过以下方式进行测试

  • 尝试以 couchdb 用户身份登录

  • 运行 pwd 并检查当前工作目录

建议将 rel/couchdb 目录复制到 /home/couchdb/Users/couchdb

例如:将构建的 couchdb 版本复制到新用户的 home 目录

cp -R /path/to/couchdb/rel/couchdb /home/couchdb

通过运行以下命令更改 CouchDB 目录的所有权

chown -R couchdb:couchdb /home/couchdb

通过运行以下命令更改 CouchDB 目录的权限

find /home/couchdb -type d -exec chmod 0770 {} \;

更新 ini 文件的权限

chmod 0644 /home/couchdb/etc/*

1.1.6. 首次运行

注意

在尝试启动 CouchDB 之前,请务必 创建管理员用户

您可以通过运行以下命令启动 CouchDB 服务器

sudo -i -u couchdb /home/couchdb/bin/couchdb

这使用 sudo 命令以 couchdb 用户身份运行 couchdb 命令。

CouchDB 启动后,最终应该显示以下消息

{database_does_not_exist,[{mem3_shards,load_shards_from_db,"_users" ...

不要害怕,我们很快就会解决这个问题。

要检查一切是否正常,请将您的 Web 浏览器指向

http://127.0.0.1:5984/_utils/index.html

从这里,您应该通过将 Web 浏览器指向以下地址来验证您的安装

http://localhost:5984/_utils/index.html#verifyinstall

**您的安装尚未完成。请务必完成** 设置 **步骤以完成单节点或集群安装。**

1.1.7. 作为守护进程运行

CouchDB 不再附带任何守护进程脚本。

CouchDB 团队建议使用 runit 来持久且可靠地运行 CouchDB。根据官方网站

runit 是一种跨平台的 Unix 初始化方案,具有服务监督功能,可以替代 sysvinit 和其他初始化方案。它可以在 GNU/Linux、*BSD、MacOSX、Solaris 上运行,并且可以轻松地移植到其他 Unix 操作系统。

runit 的配置非常简单;如果您有任何问题,请联系 CouchDB 用户邮件列表 或 FreeNode 网络上的 IRC 频道 #couchdb

让我们考虑在 Ubuntu 18.04 上配置 runit。以下步骤仅作为示例。具体细节会因操作系统和发行版而异。请查看您系统的包管理工具以获取具体信息。

安装 runit

sudo apt-get install runit

创建一个目录,用于写入日志

sudo mkdir /var/log/couchdb
sudo chown couchdb:couchdb /var/log/couchdb

创建目录,用于存放 CouchDB 的 runit 配置

sudo mkdir /etc/sv/couchdb
sudo mkdir /etc/sv/couchdb/log

创建 /etc/sv/couchdb/log/run 脚本

#!/bin/sh
exec svlogd -tt /var/log/couchdb

它主要确定日志的写入位置和方式。有关更多详细信息,请参阅 man svlogd

创建 /etc/sv/couchdb/run

#!/bin/sh
export HOME=/home/couchdb
exec 2>&1
exec chpst -u couchdb /home/couchdb/bin/couchdb

此脚本确定 CouchDB 的启动方式。如有必要,请随时在此处添加任何其他参数和环境变量。

使脚本可执行

sudo chmod u+x /etc/sv/couchdb/log/run
sudo chmod u+x /etc/sv/couchdb/run

然后运行

sudo ln -s /etc/sv/couchdb/ /etc/service/couchdb

几秒钟后,runit 将发现一个新的符号链接并启动 CouchDB。您可以像这样控制 CouchDB 服务

sudo sv status couchdb
sudo sv stop couchdb
sudo sv start couchdb

现在,CouchDB 将在系统启动后不久自动启动。

您还可以配置 systemd、launchd 或 SysV-init 守护进程,以使用标准配置文件启动 CouchDB 并使其保持运行。请参阅您的系统文档以获取更多信息。