Windows へのインストール

  1. 依存関係
  2. CouchDB ソースの Erlang ライブラリディレクトリへのインストール
  3. Erlang で使う ICU の準備
  4. SpiderMonkey のビルド
  5. couchdb/couch_erl_driver.c のビルド
  6. Erlang のコンパイル
  7. 構成
  8. 実行

「ベータテスト」段階の Windows バイナリインストーラがあります。詳細については、リンク先の wiki ページを参照してください。

CouchDB は、ネイティブな形で Windows にインストールすることはできませんが、手作業でインストールすることは可能です。ただし、Windows 上の Erlang でサポートされていない IO 関連の機能が原因で、多くのユニットテストが失敗します。

必要に応じてこのガイドを更新してください。フィードバックを集めて、手順を公式なビルドとしてまとめたいと考えています。

以下に示す手順は、現時点では Erlang OTP 5.7.1 のデフォルトインストールで設定されたパスを用いており、CouchDB は次の場所にインストールされていることを前提にしています。

C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0

依存関係

以下のソフトウェアがシステムにインストールされている必要があります。

CouchDB ソースの Erlang ライブラリディレクトリへのインストール

Erlang をインストールすると、次のようなディレクトリが作成されているはずです。

C:\Program Files\erl5.7.1

CouchDB のソースツリー全体を次の場所にコピーします。

C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0

以下の名前で空のディレクトリを作成します。

C:\Program Files\erl5.7.1\lib\mochiweb-0.01\ebin
C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\ebin

Erlang で使う ICU の準備

ICU から、icu*.dll (および古いバージョンの ICU の場合は libeay32.dll) を次の場所にコピーします。

C:\Program Files\erl5.7.1\erts-5.7.1\bin

SpiderMonkey のビルド

SpiderMonkey のディストリビューションに含まれている Windows ビルド用ファイルには問題があってビルドに失敗します。この[WWW] ブログ記事を参考にして、適切な js.mak ファイルを用意してください。プロジェクトファイルをわざわざ最新の Visual Studio にインポートしたりする必要はありません。Visual Studio のコマンドライン・ツールと、上の記事にある js.mak ファイルがあれば十分です。

CouchDB では、Unicode まわりとバッファリング機能を改善した独自の JavaScript ドライバを使用します。SpiderMonkey のディストリビューションのうち、src/js.c の名前を src/js.c.bak に変更し、CouchDB ディストリビューションに含まれる C:\Program Files\erl5.6.3\lib\couchdb-0.8.1\src\couchdb\couch_js.c を SpiderMonkey ディストリビューションの src/js.c としてコピーします。nmake を実行する前に、新しい js.c ファイルを編集し、#include <jsapi.h>#include "jsapi.h" に書き換えておきます。

js.exe と js32.dll をビルドしたら、これらのファイルを次の場所にコピーします。

C:\Program Files\erl5.7.1\erts-5.7.1\bin

次に、js.exe の名前を couch_js.exe に変更します。

上のブログ記事に従ってビルドしたバイナリ [WWW] couchbd_spidermonkey_1.7_win32_32bit.zip があります。zip ファイルの内容を bin ディレクトリに解凍してください。

couchdb/couch_erl_driver.c のビルド

ICU の機能を CouchDB に提供するためのラッパーです。

32 ビット Windows 用 ICU 4.2 を使ってビルドしたバイナリ couch_erl_driver.dll があります(心配ご無用。MS の最新テクノロジはスバラシイ!)。

DLL をビルドする最も簡単な方法は、IDE で Win32 DLL プロジェクトを作成し、couch_erl_driver.c をプロジェクトに追加し、プロジェクトの設定を変更して Erlang ERTS および ICU4C のヘッダーファイルをインクルードできるようにすることです。

さまざまな ICU *.lib ファイルも MSVC リンカへの入力に含める必要があります。MSVC では、未解決のシンボルを持った DLL を作成することはできません。Visual Studio 2008 の場合には、プロジェクトを右クリックし、プロパティを選択して、左側のパネルで Linker ノードを展開します。次に、Input を選択し、以下のファイルを 'Additional Dependencies' に追加します。

上のバイナリをビルドした時の erlang のインクルードパスは、次のようになっていました。

C:\otp_src_R13B\erts\emulator\sys\win32 
C:\otp_src_R13B\erts\emulator\beam

次の名前で空のディレクトリを作成します。

C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\priv

DLL を次の場所にコピーします。

C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\priv\couch_erl_driver.dll

Erlang のコンパイル

次のファイルを作成します。

C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\src\Emakefile

次の内容を追加します。

{'./couchdb/*', [{outdir,"../ebin"}]}.
{'./mochiweb/*', [{outdir,"../../mochiweb-0.01/ebin"}]}.

erl (または werl) を起動し、次のコマンドを実行して作業ディレクトリを変更します。

cd("C:/Program Files/erl5.7.1/lib/apache-couchdb-0.9.0/src").

次のコマンドを実行して CouchDB をコンパイルします。

make:all().

構成

次のファイルをコピーします。

C:\Program Files\erl5.7.1\lib\apache-couchdb-0.9.0\etc\couchdb\default.ini.tpl.in

コピー先は次のとおりです。

C:/Program Files/erl5.7.1/bin/default.ini

または、次の場所にコピーします。

C:/Program Files/erl5.7.1/lib/couchdb-0.9.0/default.ini

コピーしたらファイルを編集し、だいたい次のような内容になるようにします。

[couchdb]
database_dir = c:/data/couch
view_index_dir = c:/data/couch
util_driver_dir = C:/Program Files/erl5.7.1/lib/apache-couchdb-0.9.0/priv
ConsoleStartupMsg=Apache CouchDB is starting.
max_document_size = 4294967296 ; 4 GB
max_attachment_chunk_size = 4294967296 ; 4GB
os_process_timeout = 5000 ; 5 seconds. for view and external servers.
max_dbs_open = 100

[httpd]
port = 5984
bind_address = 127.0.0.1
authentication_handler = {couch_httpd, default_authentication_handler}
WWW-Authenticate = Basic realm="administrator"

[log]
file = c:/logs/couch.log
level = info

[daemons]
view_manager={couch_view, start_link, []}
external_manager={couch_external_manager, start_link, []}
db_update_notifier={couch_db_update_notifier_sup, start_link, []}
query_servers={couch_query_servers, start_link, []}
httpd={couch_httpd, start_link, []}
stats_aggregator={couch_stats_aggregator, start, []}
stats_collector={couch_stats_collector, start, []}

[httpd_global_handlers]
/ = {couch_httpd_misc_handlers, handle_welcome_req, <<"Welcome">>}
favicon.ico = {couch_httpd_misc_handlers, handle_favicon_req, "C:/Program Files/erl5.7.1/lib/apache-couchdb-0.9.0/share/www"}

_utils = {couch_httpd_misc_handlers, handle_utils_dir_req, "C:/Program Files/erl5.7.1/lib/apache-couchdb-0.9.0/share/www"}
_all_dbs = {couch_httpd_misc_handlers, handle_all_dbs_req}
_active_tasks = {couch_httpd_misc_handlers, handle_task_status_req}
_config = {couch_httpd_misc_handlers, handle_config_req}
_replicate = {couch_httpd_misc_handlers, handle_replicate_req}
_uuids = {couch_httpd_misc_handlers, handle_uuids_req}
_restart = {couch_httpd_misc_handlers, handle_restart_req}
_stats = {couch_httpd_stats_handlers, handle_stats_req}

[httpd_db_handlers]
_design = {couch_httpd_db, handle_design_req}
_temp_view = {couch_httpd_view, handle_temp_view_req}

[httpd_design_handlers]
_view = {couch_httpd_view, handle_view_req}
_show = {couch_httpd_show, handle_doc_show_req}
_list = {couch_httpd_show, handle_view_list_req}

database_dir が存在すること、LogFile が作成可能であることを確認します。

実行

erl (または werl) を起動し、次のコマンドを実行します。

couch_server:start().

うまく動作しない場合は、default.ini でログの 'level' を 'debug' にしてください。

適切に動作しているかどうか確かめるには、ブラウザで [WWW] http://localhost:5984/_utils/index.html にアクセスし、テスト・スイートを実行します。

last edited 2009-06-25 13:10:56 by David Liu