ぱろっと・すたじお

技術メモなどをまったりと / my site : http://parrot-studio.com/

CentOS5.4にCouchDBをインストール

以前、KVSとして「Tokyo Tyrant」を試しましたが、
今度は「CouchDB」を試すため、テスト環境にインストールしてみました


一見全然別物ですが、今設計しているシステムに組み込む目的は同じです
なので、同じようなテストをするつもりでいますが、
CouchDBはインストールにかなり苦労したので、それを残しておきます...φ(・ω・`)


なお、「ドキュメント指向DB」であるCouchDBについてはこちらで


@IT:連載記事 「ゆったリラックス! CouchDBがあるところ」

RPMForgeの設定


よく忘れるので、ついでにメモしておきます
大雑把なやり方はこちら


http://wiki.centos.org/AdditionalResources/Repositories/RPMForge?action=show


違うのは、 /etc/yum.repos.d/rpmforge.repo で「enable=0」を指定することです
こうすることで、普通にyumを叩いてもRPMForgeを見にいかないので、
CentOS公式のパッケージが破壊されなくて済みます


この設定の場合、RPMForgeを有効にするには以下のようなオプションを

yum --enablerepo=rpmforge ...

Erlangのインストール


Erlangといえば、並列処理に特化された関数型言語ですが、
CouchDBはErlangで書かれています
いい機会だからErlangの本を買おうかな・・・


まずは依存パッケージのインストール

yum install ncurses-devel java-1.6.0-openjdk java-1.6.0-openjdk-devel unixODBC-devel

足りなくなったパッケージを順に埋めていったら上のような感じに
ncurses-develのみすでにインストール済みでしたが、
他のサイトではみんな書いていたので、一応追加しておきます


あと、以前はSunのJDKを入れていたものですが、
オープン化されてからはOpenJDKであまり問題なさそうです
yumの方が面倒がないですからね・・・


後はmakeすればいいのですが、今回の環境でtarballからインストールする場合、
/usr/local/[パッケージ] に入れるというルールにしているので、
それに従って以下のようにしたのですが・・・

./configure --prefix=/usr/local/erlang

・・・結果的にこれが鬼門になりましたΣ(・ω・ノ)ノ


CouchDBのインストールのためにも、bin以下のファイルについて、
/usr/bin にシンボリックリンクを張っておきます
ここで1時間以上悩んだ・・・

ln -s /usr/local/erlang/bin/* /usr/bin/

「epmd」「erl」「erlc」「escript」の4つが存在します

CouchDBのインストール


CouchDBの依存パッケージは公式リポジトリにはありません

yum --enablerepo=rpmforge install js js-devel icu libicu-devel

「js」というのはMozillaが開発している、
「SpiderMonkey」というJavaScriptのインタプリタです
もう一つの「ICU」というのは、IBMが作っているUnicode解析ライブラリだそうで


そしてconfigureですが、さっきのルールをふまえてこんな感じに

./configure --prefix=/usr/local/couchdb \
      --with-erlang=/usr/local/erlang/lib/erlang/usr/include/

prefixはいいとして、問題はErlangの指定です
デフォルトでインストールしてないので、
includeディレクトリを指定するのですが、こんなpathにあります


あたりをつけて探したので、これ自体はあまり苦労していません
むしろ、その前のbinに気づくのに時間がかかりました


結果的にErlangがおかしかったのに、
configureのエラーが「jsがない」ってものだったので、
jsをtarballでインストールしてみたりとか・・・(´・ω・`)


インストールしたら、CouchDB用のユーザを作り、
関連するディレクトリに権限を与えます

adduser -r -d /usr/local/couchdb/var/ couchdb

chown -R couchdb:couchdb /usr/local/couchdb/etc/
chown -R couchdb:couchdb /usr/local/couchdb/var/lib/
chown -R couchdb:couchdb /usr/local/couchdb/var/log/
chown -R couchdb:couchdb /usr/local/couchdb/var/run/

chmod -R 0770 /usr/local/couchdb/etc/
chmod -R 0770 /usr/local/couchdb/var/lib/
chmod -R 0770 /usr/local/couchdb/var/log/
chmod -R 0770 /usr/local/couchdb/var/run/

続いて、設定ファイルをいじり、
外からのアクセスを許可すると同時に、
管理者のPASSを設定します

etc/couchdb/local.ini

bind_address = 0.0.0.0
admin = [PASS]

一度起動すると、PASSは自動で暗号化されます(`・ω・´) b


あとは起動するだけですが、bin/couchdb 以外にも、
etc/rc.d/couchdb なんてのも用意されてますので、
リンクを張ってchkconfigしておくとよろしいかと


起動したら「http://[IP]:5984/」(デフォルトの場合)にアクセスすると、
CouchDBのバージョン情報がJSONで返ってきます
あと、先ほどの記事にもあったように/_utils/で管理コンソールが開けます


というわけで、CouchDBの動作は確認できたので、
次回はどの程度(私の想定した目的に)使えるのかを試します