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" )
tracとsvnのBasic認証ファイル(/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