tl;dr
CentOS7.3にインストールしてみたメモ。
とりあえず、実用する人はまだ1.6使ったほうがよさそう。
本家のメインストリームが2.0になっているっぽいのに、いまのところ2.0まだソースからコンパイルしないと行けない様子。しかもdaemon化にも対応してないっぽい。試したい方だけ以下参考まで。
インストール
2.0の動作をまだよく理解していないので、今回はSELinuxは無効にしています。
$ getenforce
Permissive
依存関係
本家に乗っているものだけではerlangのライブラリ等が不足しているのでコンパイルできません。
とりあえず以下で成功しました。
$ sudo yum install autoconf autoconf-archive automake gcc-c++ curl-devel erlang-asn1 erlang-erts erlang-eunit erlang-os_mon erlang-xmerl erlang-erl_interface erlang-reltool help2man js-devel-1.8.5 libicu-devel libtool perl-Test-Harness
ソースダウンロードしてインストール
ソースのダウンロード元は、本家から好みのミラーを選んでください。
コンパイルはmake release
でいけますが、インストールはmake install
が2.0では未対応みたいなので、自分でコピーしろってコメントされています。(のちほどやります)
$ curl -O http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/couchdb/source/2.0.0/apache-couchdb-2.0.0.tar.gz
$ tar -xvf apache-couchdb-2.0.0.tar.gz
$ cd apache-couchdb-2.0.0
$ ./configure
$ make release
$ sudo cp -r rel/couchdb /usr/local/lib
専用ユーザーの追加
本家では、システムユーザーでログインとか、ホームディレクトリ無効にしたユーザーで、ホームディレクトリにコピーとか意図がよくわからなかった。普通にcouchdbユーザー作って無難に/opt
にでもインストールしたほうがよさそう。
さっきmakeしたapache-couchdb-2.0.0
ディレクトリでそのまま作業します。
ユーザーの追加
$ sudo useradd -r -s /sbin/nologin -c "CouchDB Administrator" couchdb
$ sudo passwd couchdb
ファイルのコピー
$ sudo cp -r rel/couchdb /opt
$ cd /opt/couchdb
$ sudo chmod 644 etc/*
$ sudo chown -R couchdb:couchdb .
起動
バイナリを起動するだけ
$ sudo /opt/couchdb/bin/couchdb
systemd
一応systemdで使えるようにしてみました。
serviceファイルを作成します。
$ sudo vi /etc/systemd/system/couchdb.service
[Unit]
Description = Apache CouchDB 2.0
[Service]
ExecStart = /opt/couchdb/bin/couchdb
ExecStop = /bin/kill ${MAINPID}
Restart = always
Type = simple
User = couchdb
Group = couchdb
[Install]
WantedBy = multi-user.target
追加したサービスをsystemctlで有効にする
$ sudo systemctl daemon-reload
起動
$ sudo systemctl start couchdb
停止
$ sudo systemctl stop couchdb
自動起動を有効に
$ sudo systemctl enable couchdb
firewall
外からアクセスするため、TCPポート5984を開けておきます。
$ sudo firewall-cmd --add-port=5984/tcp --permanent
$ sudo firewall-cmd --reload
ちなみに5986 はローカル用、4369はEPMDポート(Erlangでクラスタやるときなどに使われる)
CouchDB
ドキュメント指向DBってKVS以上列指向未満な使い勝手で好み。MongoDBだとそのままyumでインストールできて便利なんだけど、RDB脳に汚染されて複雑性を持ち込む悪癖がでるという勝手な偏見を持っている自分はあえてCouchDBとか使っています。
そのうちyum
とかapt
とかsystemd
対応してくれなかったら、2.0はつかわないかも。環境再現面倒なのはキライです。
思ったほど普及もしてなさそうだし日本語ドキュメント少なくて面倒なので、商用だったら素直にCludantとかCouchBase使えば良いと思います^^;ちなみにMobile用だとTouchDBっていうもあるようです。