mercurialのhgwebをWSGIで動かす
ブログ放置しまくりでした。
久しぶりに書いてみます。
僕はメインにmercurialを使っています。
ただマルチプルヘッドが増えてきたり、ブランチが複雑になってきたりするとCUIだとgraphlogが結構見辛くなってきます。
なのでブラウザからgraphが見れるようにしましょうってことです。
まぁTortoiseHgやMacHgを使う手はあるんですがインストールしないといけない欠点があります。
では早速やってみましょう。
対象のマシンはCentOS6.2です。
mercurialはインストール済みとします。
まずソースを公式から拾ってきます。
mercurialのバージョンが古すぎると動かないかもしれません。
その場合はバージョンをあげるかソースのバージョンを下げましょう。
http://mercurial.selenic.com/downloads/
僕の環境ではhg --versionが2.1.1、使ったソースがMercurial 2.3.1 source releaseでした。
ユーザーはhoge前提とします。
ダウンロードしたら解凍します。
$ wget http://mercurial.selenic.com/release/mercurial-2.3.1.tar.gz $ tar -xvzf mercurial-2.3.1.tar.gz
hgwebの設定ファイルを作ります。
$ cd mercurial-2.3.1 $ vi hgweb.config
適当に書きます。
[web] encoding = "UTF-8" # ブラウザで見た時に日本語が文字化けするので必要 [paths] project1 = /home/hoge/repo1 project2 = /home/hoge/repo2
保存したら、hgweb.wsgiファイルを編集します。
$ vi contrib/hgweb.wsgi
# An example WSGI for use with mod_wsgi, edit as necessary # See http://mercurial.selenic.com/wiki/modwsgi for more information # Path to repo or hgweb config to serve (see 'hg help hgweb') #config = "/path/to/repo/or/config" # さきほど作ったconfigファイルのパスを指定 config = "/home/hoge/mercurial-2.3.1/hgweb.config" # Uncomment and adjust if Mercurial is not installed system-wide # (consult "installed modules" path from 'hg debuginstall'): #import sys; sys.path.insert(0, "/path/to/python/lib") # 自分の環境に合わせてpathを追加。 # 元々パスが通ってれば直す必要ないと思います。 import sys; sys.path.insert(0, "/usr/lib64/python2.6/site-packages") # 以下省略
今回はApacheのmod_wsgiを使ってWSGIを動かしているのでApacheのconfファイルを修正します。
# vi /etc/httpd/conf.d/wsgi.conf
LoadModule wsgi_module modules/mod_wsgi.so WSGIPythonHome /usr/local WSGIPassAuthorization On WSGIScriptAlias /repo /home/hoge/mercurial-2.3.1/contrib/hgweb.wsgi # ローカル環境以外からは見えないように制限したいので <Location /repo> Order Deny,Allow Deny from all Allow from 192.168.0.0/24 </Location>
これで
http://サーバーのURL/repo
にアクセスすればリポジトリの一覧が出てくると思います。
エラーが出る場合はApacheのerror_logを参考にして下さい。