如何在Debian 10 Buster上安装CouchDB

时间:2020-02-23 14:32:09  来源:igfitidea点击:

Apache CouchDB是一个用Erlang编写的面向开源文档的NoSQL数据库,同时考虑了并发性和容错性。它的开发和发布由Apache Software Foundation负责。 CouchDB使用JSON表示存储在数据库中的数据。 CouchDB复制使我们可以同步两个或者多个CouchDB数据库。 CouchDB RESTful HTTP/JSON API使我们可以读取,编辑,删除和创建数据库文档。在本教程中,我们将说明如何在Debian 10 Buster上安装CouchDB。

我们需要以具有sudo特权的用户身份对服务器进行SSH访问。确认之后,请通过终端访问服务器,然后执行以下共享的后续步骤。

更新系统

首先将所有系统软件包更新为服务器上可下载的最新版本。

sudo apt update
sudo apt -y upgrade

安装依赖项

安装所有必需的依赖项,以在Debian 10 Buster上构建CouchDB。

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

为CouchDB创建CouchDB用户

创建一个couchdb系统用户以运行CouchDB服务。

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

第4步:在Debian 10 Buster上构建CouchDB

下载CouchDB数据库存档的最新稳定版本。

curl -s https://api.github.com/repos/apache/couchdb/releases/latest \
  | grep browser_download_url \
  | cut -d '"' -f 4 \
  | wget -qi 

运行以下命令以在Debian 10(Buster)上构建CouchDB。

$tar xvf apache-couchdb-*.tar.gz
$cd apache-couchdb-*/
$./configure

要构建CouchDB,我们应该运行:

$make release

如果make给我们带来任何问题,请尝试gmake。如果一切成功,我们应该看到以下消息:

Installing CouchDB into rel/couchdb/...
==> rel (generate)
WARN:  'generate' command does not apply to directory /root/apache-couchdb-2.3.1
... done

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

要将CouchDB安装到系统中,请将rel/couchdb复制到所需的安装位置。

sudo cp -r rel/couchdb /home/couchdb
sudo chown -R couchdb:couchdb /home/couchdb/

列出目录内容:

$ls -1 /home/couchdb/couchdb/
bin
erts-10.2.4
etc
lib
LICENSE
releases
share
var

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

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

配置CouchDB Systemd服务

我们需要创建一个coucdb systemd服务来管理应用程序状态。

sudo tee /etc/systemd/system/couchdb.service<<EOF
[Unit]
Description=Couchdb service
After=network.target

[Service]
Type=simple
User=couchdb
ExecStart=/home/couchdb/couchdb/bin/couchdb -o /dev/stdout -e /dev/stderr
Restart=always

[Install]
WantedBy=multi-user.target
EOF

重新加载systemd守护程序。

sudo systemctl daemon-reload
sudo systemctl start couchdb.service
sudo systemctl enable couchdb.service

确认服务状态

$systemctl  status couchdb.service
● couchdb.service - Couchdb service
   Loaded: loaded (/etc/systemd/system/couchdb.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-08-19 20:53:00 UTC; 1min 10s ago
 Main PID: 15764 (beam.smp)
    Tasks: 39 (limit: 4701)
   Memory: 37.5M
   CGroup: /system.slice/couchdb.service
           ├─15764 /home/couchdb/couchdb/bin/../erts-10.2.4/bin/beam.smp -K true -A 16 -Bd -- -root /home/couchdb/couchdb/bin/.. -progname couchdb -- -home /home/couchdb -- -boot /home/couchdb/couchdb/bin/../relea
           ├─15792 erl_child_setup 1024
           ├─15809 sh -s disksup
           ├─15811 /home/couchdb/couchdb/bin/../lib/os_mon-2.4.7/priv/bin/memsup
           └─15812 /home/couchdb/couchdb/bin/../lib/os_mon-2.4.7/priv/bin/cpu_sup

Aug 19 20:53:21 localhost couchdb[15764]: [notice] 2019-08-19T20:53:21.761564Z theitroad@localhost <0.356.0> -

确保CouchDB仍在运行,然后执行以下操作:

$curl http://127.0.0.1:5984/
{"couchdb":"Welcome","version":"2.3.1","git_sha":"c298091a4","uuid":"cf6f7c87e049c287e1459a53c8415c39","features":["pluggable-storage-engines","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}

这会向新安装的CouchDB实例发出GET请求。

测试数据库的创建:

$curl -X PUT http://127.0.0.1:5984/testdb
{"ok":true}

$ curl -X PUT http://127.0.0.1:5984/testdb1
{"ok":true}

$ curl -X PUT http://127.0.0.1:5984/testdb2
{"ok":true}

$curl -X GET http://127.0.0.1:5984/_all_dbs
["testdb","testdb1","testdb2"]

我们可以在以下位置访问CouchDB基于Web的界面Fauxton:

http://127.0.0.1:5984/_utils/