ゼットログ

よしなしごとを記す

Ubuntu 10.04にCouchDB v1.0.0をインストールする

前回よりも少し詳しく書きます。Ubuntu 10.04にcouchdbを自分でコンパイルとインストールをしたい場合は次のような課題があります。

  • libmozjs-devをapt-getできない
  • couchdb v0.10.0がすでにインストールされている
    • /etc/couchdbや/usr/bin/couchdbがすでに存在している
    • couchdbというユーザーが既に存在している

後者の課題は9.10あたりからUbuntu linuxではcouchdbがデフォルトでインストールされていることによります。Ubuntu Oneというファイル共有サービスを実現するために組み込まれています。今回はcouchdbというユーザーの競合を回避するためにv1.0.0向けとして"couchuser"というユーザーを新たに作成してみました。

$apt-get update
$sudo apt-get install build-essential

#libmozjs-devの代わりにxulrunner-devをインストールします。
$sudo apt-get install erlang libicu-dev libcurl4-openssl-dev xulrunner-dev
$sudo apt-get install curl #動作確認用に入手

#prefixオプションがなければ、/usr/local/bin配下にv1.0.0のcouchdbコマンドが入ります。
#あとはjsライブラリをデフォルトからxulrunner-devel-x.x.x.xに変更しておきます。
$./configure --with-js-lib=/usr/lib/xulrunner-devel-1.9.2.8/lib \
--with-js-include=/usr/lib/xulrunner-devel-1.9.2.8/include
$sudo make
$sudo make install
$sudo adduser --system --home /usr/local/var/lib/couchdb \
--no-create-home -shell /bin/bash --group --gecos \
"CouchDB Administrator" couchuser

$sudo chown -R couchuser:couchuser /usr/local/etc/couchdb
$sudo chown -R couchuser:couchuser /usr/local/var/lib/couchdb/
$sudo chown -R couchuser:couchuser /usr/local/var/log/couchdb/
$sudo chown -R couchuser:couchuser /usr/local/var/run/couchdb/
$sudo chmod 0770 /usr/local/var/run/couchdb/
$sudo chmod 0770 /usr/local/var/lib/couchdb/
$sudo chmod 0770 /usr/local/var/log/couchdb/
$sudo chmod 0770 /usr/local/etc/couchdb

次に、/usr/local/etc/default/couchdb 内の"COUCHDB_USER"をcouchdbからcouchuserに置き換えます。

# Sourced by init script for configuration.
COUCHDB_USER=couchuser # 変更します。
COUCHDB_STDOUT_FILE=/dev/null
COUCHDB_STDERR_FILE=/dev/null
COUCHDB_RESPAWN_TIMEOUT=5
COUCHDB_OPTIONS=

無事動くか、試してみましょう。

$sudo -i -u couchuser couchdb
$curl http://127.0.0.1:5984
{"couchdb":"Welcome","version":"1.0.0"} #これが返ってくればOK 1.0.0でしょうか?

couchdbをバックグラウンドで実行したい場合は-bオプションを付けます。または、/usr/local/etc/init.d/couchdb startを使います。

$sudo -i -u couchuser couchdb -b
$sudo /usr/local/etc/init.d/couchdb start

起動したら停止もしたいですね。以下のようにすればOKです。

$sudo -i -u couchuser couchdb -d
$sudo /usr/local/etc/init.d/couchdb stop

他のマシンからcouchdbにアクセスしたいときなど、IPアドレス127.0.0.1localhostとは違うものにしたい時があります。その場合はlocal.iniのbind_addressを変更し、再起動すればOKです。

#/usr/local/etc/couchdb/local.iniの中
10 [httpd]
11 ;port = 5984
12 ;bind_address = 127.0.0.1 # 左端の”;”を外して、任意のアドレスに変更

またはcurlでPUTするやり方もあります。この方法はcouchdbが起動していないと使えません。

$curl -X PUT http://現在のアドレス:5984/_config/httpd/bind_address -d'"新しいアドレス"'

ここまでくれば、curlでガンガンHTTPメソッドを投げるもよし、"http://127.0.0.1:5984/_utils"にWebブラウザでアクセスしてFutonユーティリティにうっとりするもよし、プログラムを書くもよしです。Be relaxed !!