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.apache.org/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.apache.org/repo/couchdb.repo
**RedHat(>=9)**:运行以下命令
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://couchdb.apache.org/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. 依赖项¶
您应该安装以下内容
Java(nouveau 需要,最低版本 11,推荐版本 19 或 20)
如果您计划安装 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 浏览器指向以下地址来验证您的安装
https://127.0.0.1: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 并使其保持运行。请参阅您的系统文档以获取更多信息。