岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

portsからCouchDBをインストールした

以前から気になっていたCouchDBを、FreeBSDサーバにportsからインストールしてみました。その作業メモです。

参考にしたリソース

作業にあたっては下記のリソースを参考にしました。いやー、ありがたいねー。

portinstall → 失敗

いつものように

# cd /usr/ports
# portinstall databases/couchdb

したら、java/diablo-jdk15 がignoreされてしまいました。

** Listing the failed packages (-:ignored / *:skipped / !:failed)
        - java/diablo-jdk15
        * lang/erlang
        * databases/couchdb

ライセンスの関係で、java/diablo-jdk15 は手動でのファイル配置が必要とのことです。

** Port marked as IGNORE: java/diablo-jdk15:
        :
 Because of licensing restrictions, you must fetch the distribution
 manually.

 Please access
 
 http://www.FreeBSDFoundation.org/cgi-bin/download?download=diablo-caffe-freebsd5-i386-1.5.0_07-b01.tar.bz2
 
 with a web browser and "Accept" the End User License Agreement for
 "Caffe Diablo 1.5.0".  Please place the downloaded
 diablo-caffe-freebsd5-i386-1.5.0_07-b01.tar.bz2 in /var/tmp/ports/distfiles.

 Please open http://java.sun.com/javase/downloads/index.jsp
 in a web browser and follow the "Download" link for
 "JDK US DST Timezone Update Tool - 1_3_5" to obtain the
 time zone update file, tzupdater-1_3_5-2008b.zip.

java/diablo-jdk15 に必要なファイルを配置

  1. まず diablo-caffe-freebsd5-i386-1.5.0_07-b01.tar.bz をダウンロード、/var/tmp/ports/distfiles に置きました
  2. 次に http://java.sun.com/javase/downloads/index.jsp にアクセス、Sun Online Account に登録し、(名称が微妙に違うので気になったものの)「JDK DST Timezone Update Tool - 1.3.5」をダウンロードしました
  3. で、このzipをどうするのか分からなかったのですが、「コンピュータ日記(仮):FreeBSD 6.3 に Java (jdk-1.5) をインストールした時の手順」を信じて、同じ /var/tmp/ports/distfiles に置きました

portinstall → 成功

その状態で

# cd /usr/ports
# portinstall databases/couchdb

すると、今度は成功しました。やったね!

couchdbユーザの作成

冒頭に挙げた本家のインストールマニュアルでは、専用ユーザを作っていたので、それに従うことにしました。

# adduser -d /var/lib/couchdb
Username: couchdb
(詳細はナイショ)
# chown -R couchdb /var/lib/couchdb
# chown -R couchdb /var/log/couchdb

設定ファイルは変更しなかった

設定ファイルは /usr/local/etc/couchdb/couch.ini にあります。中身は下記の通りでした(無駄な改行は省略)。

# cat /usr/local/etc/couchdb/couch.ini
; etc/couch.ini.tpl.  Generated from couch.ini.tpl.in by configure.
[Couch]
ConsoleStartupMsg=CouchDB is starting.
DbRootDir=/var/lib/couchdb
LogFile=/var/log/couchdb/couch.log
HttpConfigFile=/usr/local/etc/couchdb/couch_httpd.conf
UtilDriverDir=/usr/local/lib/couchdb/erlang/lib/couch-0.7.0/priv/lib
LogLevel=info
[Couch Query Servers]
text/javascript=/usr/local/bin/couchjs -f /usr/local/share/couchdb/server/main.js

HTTP用の設定ファイル /usr/local/etc/couchdb/couch_httpd.conf は下記の通りです。

# cat /usr/local/etc/couchdb/couch_httpd.conf
# etc/couch_httpd.conf.tpl.  Generated from couch_httpd.conf.tpl.in by configure.
Port 8888
#BindAddress 127.0.0.1
ServerName localhost
SocketType ip_comm
Modules mod_couch mod_get mod_log
ServerRoot /usr/local/etc/couchdb
DocumentRoot /usr/local/share/couchdb/www
ErrorLog /var/log/couchdb/http_error.log
TransferLog /var/log/couchdb/http_access.log

特に変更の必要はなさそうなので、そのままにしました。

ようやく起動

/usr/local/etc/rc.d/couchdb にできていたシェルスクリプトで起動してみます。

# /usr/local/etc/rc.d/couchdb start
Starting database server: couchdb

動いた!!

curlもインストール

チュートリアル的にはcurlでアクセスするのが定石みたいなので、ついでにインストールしてみました。

# cd /usr/ports
# portinstall ftp/curl

データベースにアクセス

wktkしながらcurlコマンドを叩きます。

# curl -v http://localhost:8888/
* About to connect() to localhost port 8888 (#0)
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 8888 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.18.0 (i386-portbld-freebsd5.4) libcurl/7.18.0 OpenSSL/0.9.7e zlib/1.2.1
> Host: localhost:8888
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: inets/develop
< Date: Fri, 04 Jul 2008 12:25:22 GMT
< Cache-Control: no-cache
< Pragma: no-cache
< Expires: Fri, 04 Jul 2008 12:25:22 GMT
< Transfer-Encoding: chunked
< Content-Type: text/plain;charset=utf-8
<
{"couchdb": "Welcome", "version": "0.7.0"}
* Connection #0 to host localhost left intact
* Closing connection #0

おおっ! 何事もなくWelcomeされとる!!

ここからは…

すぐ使うわけでもないので放置(えー)。

いや実は、8月1日にIBM社主催のCouchDBセミナーがあるのです(於:渋谷)。そこで勉強してからいじろうかな、と。私はすでに参加申込済みです。みなさんはいかがですかー?

Apache CouchDB は、データベースを Web で実現する、RESTful API を備えたドキュメント指向 (Non-Relational) データベースであり、Erlang エンジン、MapReduce によるクエリなど多彩な先進テクノロジーを含んだ実装です。今回のセミナーでは、社内プロトタイプで試用した経験を元に、Apache CouchDB の概要から実装の詳細までを紹介します。

developerWorks Japan : 「連続セミナー: 渋谷テクニカルナイト」のご案内

いけそうだと判断したら、さっそくPinto(いま作ってるSBM)に採用するかも。楽しみすぐる!!!