hgサーバーを立ち上げる
http://mercurial.selenic.com/wiki/modwsgi
ここにならってやってみる。
環境は、ubuntu server 9.10にmoinmoin wikiを入れてwsgiで動かしているマシン。
wikiはwww.example.com/wikiでサービスしている。
上記ページの3.1までは終わっているから3.2から。
/etc/apache2/site-available/defaultの
WSGIScriptAlias /hg "/var/www/hg/script/hgwebdir.wsgi"Options ExecCGI FollowSymlinks AddHandler wsgi-script .wsgi AllowOverride None Order allow,deny Allow from all Options FollowSymlinks DirectoryIndex index.html AllowOverride None Order allow,deny Allow from all
hgwebdir.wsgiを以下のように作成し、/var/www/hg/scriptの下におく。
#!/usr/bin/env python
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir
application = hgwebdir('/var/www/hg/script/hgweb.config')
hgweb.configの中身は以下の通り。
[web] style = coal [paths] / = /var/www/hg/htdocs/**
これでブラウザでwww.example.com/hgとするとMercurial repositoryが見える。
repositoryを置くディレクトリhgを
sudo chown -R moin.moin hg
sudo chmod -R gu+rwX hg
sudo chmod -R o-rwx hg
としておく。
ためしに適当なファイルを作ってadd, commitしておく。
アクセスしようとすると、以下のエラーが出る。
error
An error occurred while processing your request:
Permission denied
wwwからパーミッションを変更。
sudo chown -R moin.moin hg
sudo chmod -R gu+rwX hg
sudo chmod -R o-rwx hg
今度は見られた。
次にやるべきことは、何らかの認証の設定とpushできるようにすること。
まずはpushのテスト。
レポジトリの.hgにhgrcを作成。次のように書き込む。
[web]
allow_push = *
push_ssl = false
リモートからTortoiseHGのsynchronizeでpush。
ちゃんと反映された。
次は認証設定。/var/etc/apache2/sites-available/defaultの
AuthType Digest
AuthName "Mercurial repositories"
AuthDigestProvider file
AuthUserFile /home/moin/hg/hgusers
Require valid-user
ダイジェスト認証を有効にする。
sudo a2enmod auth_digest
パスワードファイルを/home/moin/hg/hgusersに作成。
cd /home/moin/hg
htdigest -c hgusers 'Mercurial repositories' username
ここで注意すべきことは、AuthNameで指定したrealmとhtdigestで指定するrealmをそろえなければいけないこと。
apache2を再起動。
sudo /etc/init.d/apache2 restart
これで認証がかかった。