Apache2 + Subversion by mod_proxy(lighttpd) & trac on lighttpd

 バンド用システムをリニューアルすることにしたので、デザインのできるメンバーと組むことに。
 実はリポジトリ周りは殆どやったことがなかったので、いい機会だと思い、lightyのmod_proxy経由でSubversionにアクセスできるようにして、ついでにtracもlightyで立ち上げた。あらかじめ言っておくと、目新しいことは何も言ってないですし、このサーバは公開してないです。
 サーバはUbuntuなので、どれもaptでインストール。

# aptitude install lighttpd apache2 trac
# lighty-enable-mod auth cgi fastcgi proxy

 Subversionのレポジトリ作成とtracのプロジェクトフォルダの作成は略。ここでは便宜上、svnは「/path/to/repo」、tracは「/path/to/proj」に作成したことに。URLの構成は、個人的な好みにより「http://(ホスト)/svn」「http://(ホスト)/trac」でいく。
 Apacheは、単純にSubversionを動かすためだけにあるので、VirtualHostを使って、ポートは適当に8080を指定して立ち上げる。このときのapache2.confには以下を追加。

NameVirtualHost *:8080
<VirtualHost *:8080>
        # 実際にはServerNameとかDocumentRootは使わないけど
        ServerName (ホスト名)
        DocumentRoot /path/to/svn_htdocs

        <Location /svn>
                DAV svn
                SVNPath /path/to/repo
                AuthType Basic
                AuthName "**** repository"
                AuthUserFile /path/to/repo/conf/users
                Require valid-user
                Order allow,deny
                Allow from all
        </Location>
</VirtualHost>

 また、メインのhttpサーバはlighttpdで、proxy処理もここで行う。lighttpd.confには

$HTTP["host"] == "(ホスト)" {
        server.document-root = "/path/to/htdocs"
        server.errorlog      = "/var/log/lighttpd/sample_error.log"
        ## "/svn"でのアクセスがあったら、裏のApacheプロセスに投げる
        proxy.server = (
                "/svn" => (("host" => "127.0.0.1", "port" => 8080))
        )
        ## "/trac" の処理は全てここ
        $HTTP["url"] =~ "^/trac" {
                # 認証関係
                auth.backend.htpasswd.userfile = "/path/to/proj/trac.htpasswd"
                auth.require = ("/" => (
                        "method" => "basic",
                        "realm" => "**** project",
                        "require" => "valid-user"
                ))
                #tracの共通ファイルを指定
                alias.url            = (
                        "/trac/chrome/common/" => "/usr/share/trac/htdocs/",
                )
                # tracを動かすためのfcgiの設定
                fastcgi.server = (
                        "/trac" => ( "trac" => (
                                "socket"          => "/tmp/trac-fastcgi.socket",
                                "bin-path"        => "/usr/share/trac/cgi-bin/trac.fcgi",
                                "check-local"     => "disable",
                                "bin-environment" => ( "TRAC_ENV" => "/path/to/proj" ),
                                "min-procs"       => 1,
                                "max_procs"       => 3,
                        ))
                )
        }
}

 を記述した。
 あと、/etc/lighttpd/conf-enable/10-fcgi.confに以下を追加して、.fcgiファイルを有効にする。

static-file.exclude-extensions = ( ".fcgi" )

 tracsvnBasic認証ファイル(/path/to/repo/conf/users、/path/to/proj/trac.htpasswd)は基本共通なので、どっちかを作成したらもう一方のファイルはln -sで。
 lightyにしてもapacheにしても、起動ユーザ名を変更するとあちこちで支障が出る確率が高いので、

# chown www-data -R /path/to/repo
# chown www-data -R /path/to/proj

 これで、サーバの起動ユーザでリポジトリtrac wikiの読み書きができる。
 ということで、話題的には二番煎じも甚だしいですが、半日もかからずに一気に立ち上げることができた感動のあまり、ついエントリを立ててしまった次第です。 
 ・参考にしたサイト(ありがとうございます)
 →HowToSetupTrac - Lighttpd - lighty labs
 →http://blog.mizzy.org/articles/2006/05/17/trac_and_lighty
 →Trac をインストールしてみたよ
 →https://trac.cakephp.org/wiki/TracFastCgi?format=pdf

.screenrc & .zshrcを見直し

 もういい加減眠い。とりあえず感想としては、かなり環境が改善できてにんまり。あ、これも二番煎じシリーズです。
 今までシェル周りはちょっと怖くて手をつけたくなかったんだけど、それ以上に使いにくさを感じることが増えたので、それができるのは今日しかないと感じ、一気に。screenのエスケープも、^z^zから^t^tに移したので、emacsを立ち上げてもなんの問題もなくなったし、文字コードの問題もほぼ解決。あとはzshを使いこなすのみ。がんばろー。