ついでにloggerheadも動かしてみる
http://d.hatena.ne.jp/ytqwerty/20090905#p1 の続きでloggerheadも動かしてみます。
bzr-smart.cgiが動いたところから続けての手順です。
py26-distribute, py26-paste, py26-simpletalとloggerheadをhome以下にインストールします。ファイルをアップロードしてCGI経由でsetup.py --home=~/bzrを実行するだけ。loggerheadについては1.17が公開されたあとのbzr本体のAPIの変更で互換性がなくなってますので、rich-trunkから持ってきます。
で、loggerheadのWSGIアプリ部分をCGIとして動かすための嘘mainをでっちあげます。
#!/usr/bin/env python import sys sys.path.insert(0, "/home/自分のアカウント/bzr/lib/python") sys.path.insert(0, "/home/自分のアカウント/bzr/lib/python/distribute-0.6.14-py2.6.egg") from loggerhead import main import fcgi # http://svn.saddi.com/py-lib/trunk/fcgi.py # 通常serve-branchesコマンドに渡すコマンドライン引数を配列として作る args = ["--user-dirs", ".", "--trunk-dir", "."] #このCGIと同じディレクトリの直下のブランチが公開対象 main.load_plugins() config, path = main.get_config_and_path(args) app = main.make_app_for_config_and_path(config, path) fcgi.WSGIServer(app).run()
これで動くことは動くのですが、これだけですと案内として"To get this branch, use: bzr branch ..."のように表示されるパスが環境変数SCRIPT_NAME以下のみしか表示されません。(要するにhttp://ドメイン名の部分がつかない)
各ブランチのbranch.confにpublic_urlを設定してやればそれが表示される……はず……なのですが、なんかうまくいってない様子です。よくわかりません。/etc/loggerhead.confで設定できる?共用レンタルサーバーでどうしろと?
ですので、とりあえず~/bzr/lib/python/loggerhead/apps/branch.pyに直接ハードコードして対処。served_urlというのがそうですので、こんなかんじで。
- self.served_url = self.url([])
+ self.served_url = "http://uso800.neta" + self.url([])
これで、めでたしめでたし、のはず……。
動かしておいてなんですけど、loggerheadって耐えられないぐらい重いですよね!hgweb.cgiってかっこいいですよね!