このページは CGIinstall の翻訳です。

MercurialのCGIサーバをセットアップする

Mercurialではウェブサーバを経由してリポジトリを公開することができます。Mercurialはウェブサーバを内蔵していて、hg serveで使えます。しかし、これは一度に1つのコネクションしか張ることができませんし、頑強ではありません。妙なタイミングで壊れたコネクションを張ろうとするとhg serveが止まります。より良い方法はApacheを使ってCGIスクリプト経由でMercurialにアクセスすることです。

以下にrepo-nameという名前のリポジトリをexample.orgという名のホストで公開する方法を説明しましょう。

Mercurialをインストールする

UnixInstall を見てサーバーにMercurialをインストールしてください。

ユーザを作りリポジトリをセットアップする

hgという名前のユーザを作り、/home/hg/repo-nameにリポジトリを作ります。

# adduser hg
# su - hg
$ mkdir /home/hg/repo-name; cd /home/hg/repo-name
$ hg init

設定ファイルrepo-name/.hg/hgrcに以下のような内容を書いてリポジトリに関する情報を追加してください。

[web]
description = short description of repo-name
author = Example User <hg@example.com>

絶対に必要というわけではありませんが、リモートからこのリポジトリを更新したい場合は、/home/hg/.sshというディレクトリを作ってauthorized_keysを適切に設定してください(詳しくはSharedSSHを見てください)。以下のようにしてリモートからリポジトリを更新できます。

$ hg push ssh://hg@example.org/repo-name

CGIスクリプトを設定する

hgweb.cgiというファイルをMercurialのソースアーカイブから/var/www/cgi-hg/index.cgiにコピーし、hgweb.hgweb()の呼びだしの最初の引数にリポジトリへのパスを、2つめの引数にリポジトリ名を与えるように変更してください。

上の例の場合、以下のようになります。

import cgitb, os, sys
cgitb.enable()

# sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install
from mercurial import hgweb

h = hgweb.hgweb("/home/hg/repo-name", "name of repository")
h.run()

index.cgiを実行可能にするのを忘れないでください。

$ chmod a+x index.cgi

Apacheの設定ファイルを編集する

apacheの設定ファイルを以下のように変更し、apacheをreloadして設定の変更をサーバに反映します。

Alias /hg /var/www/cgi-hg
<Directory "/var/www/cgi-hg">
    DirectoryIndex index.cgi
    AddHandler cgi-script .cgi
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

静的なファイルとしてしてリポジトリを公開したいなら(通常はする必要はないでしょう)以下のような設定を追加してください。

Alias /hg-static /home/hg/repo-name
<Directory "/home/hg/repo-name">
    Options Indexes
    Order allow,deny
    Allow from all
</Directory>

以上!

リポジトリを公開してしまえば、http://example.org/hg/というURLでリポジトリにアクセスできます。

複数リポジトリ

一つではなく複数のリポジトリを公開する場合、Apacheの設定ファイルは そのままで、hgwebdir.cgi/var/www/cgi-hg/index.cgiにコピーし、 リポジトリごとにhgweb.cgi/var/www/cgi-hg/repo-name/index.cgi} としてコピーしてください。


CategoryJapanese

JapaneseCGI_Install (last edited 2009-05-20 09:09:21 by DirkjanOchtman)