Kanonの実装にみるBazaarのサーバ設定

このエントリーをはてなブックマークに追加このエントリのはてなブックマーク数

この記事は、Bazzar Advent Calendar 2011年12月13日分の記事として執筆しました。

Kanonでは、Subversion、Git、Mercurialに加え、Bazaarもサポートしています。
これが意味するところは、Bazaarの共有リポジトリを簡単に立てれるということです。
Kanonを利用すれば、Bazaarのサーバ設定を気にする必要はありませんが、ここではKanonの実装をみながら、
自分でBazaarの共有リポジトリを立てる方法について見て行きましょう。

Bazaarをきちんとした共有リポジトリとして利用したい場合、Apacheと組み合わせて使いたくなってくると思います。
ApacheでBazaarを利用する場合は、次のようにします。

bzrは、標準でWSGIプロトコルを利用してWebサーバと通信するためのAPIを持っています。そのAPIを利用して、bzr.wsgiファイルを作成します。

from bzrlib.transport.http import wsgi

def application(environ, start_response):
    app = wsgi.make_app(
        root="/var/opt/kanon/bzr",
        prefix="/bzr",
        readonly=False,
        load_plugins=True,
        enable_logging=False)
    return app(environ, start_response)

rootには、リポジトリのルートを設定します。上記の設定の場合、/var/opt/kanon/bzrの下にリポジトリを複数立てていきます。次にApacheの設定ファイル(httpd.confなど)に先ほど作成したbzr.wsgiの設定を行います。

WSGIScriptAliasMatch ^/bzr/.*/\.bzr/smart$ /opt/kanon/lib/cgi-bin/bzr.wsgi
<Directory "/var/opt/kanon/bzr">
  WSGIApplicationGroup %{GLOBAL}
  Options Indexes
  AuthType Digest
  AuthName kanon
  AuthUserFile /etc/opt/kanon/kanon_users.htdigest
  Require valid-user
</Directory>

これでApacheを再起動すれば、準備は完了です。プロジェクトの初期化は、次のようにします。この例は、homuリポジトリを作成した例です。

$ bzr init-repo /var/opt/kanon/bzr/homu
$ bzr init /var/opt/kanon/bzr/homu/trunk
$ bzr chown apache.apache -R /var/opt/kanon/bzr

以上で、Bazaarサーバの設定は終わりです。

$ bzr clone http://xxxx/bzr/homu/trunk

でリポジトリをクローンできることを確認してみてください。Bazaarのサーバの構築は、Mercurialと同じくらい簡単に構築することができます。是非Bazaarの共有サーバを使ってみてください。

Leave a Reply

*