#language ja このページは [[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 }}} 絶対に必要というわけではありませんが、リモートからこのリポジトリを更新したい場合は、{{{/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つめの引数にリポジトリ名を与えるように変更してください。 上の例の場合、以下のようになります。 {{{ #!/usr/bin/env python 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 DirectoryIndex index.cgi AddHandler cgi-script .cgi Options ExecCGI Order allow,deny Allow from all }}} 静的なファイルとしてしてリポジトリを公開したいなら(通常はする必要はないでしょう)以下のような設定を追加してください。 {{{ Alias /hg-static /home/hg/repo-name Options Indexes Order allow,deny Allow from all }}} == 以上! == リポジトリを公開してしまえば、{{{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