2006年06月08日

http://plagger.org/のようなtrac&svn環境を作りたかったので頑張ってみました。
Apache1.3系でtracとsvnwebの構築をしました。
例としてBloxabというプロジェクトを立ち上げる時の構築方法で書いていきます。
ディレクトリとかユーザー名とかは適時書き換える事。
tracの細かい事についてはドキュメントとかを参考に。

svnリポジトリの作成


$ svnadmin create /usr/local/bloxab/repos
普通にリポジトリを作ります。
この作成したリポジトリは、apacheとtracdを動かすuid双方で読み書きできるしておく必要があります。
適切なchownとchmodをしておいて下さい。
以上

tracのインストール


tracを動かす為の各種ソフトをインストールします。
インストール方法は付属のドキュメントなどを参考に。
http://www.sqlite.org/からsqlite3をダウンロードしてインストール
/sbin/ldconfigを実行しておく
http://initd.org/tracker/pysqliteからPySQLiteをダウンロードしてインストール
http://www.clearsilver.net/からClearsilverをダウンロードしてインストール
http://www.edgewall.com/trac/からtracをダウンロードしてインストール

svnweb環境のインストール


mod_davを動くようにしてapache2を入れて、Subversion付属のmod_dav_svnとmod_authz_svnをいれてください。
なぜかapache2.2.2ではうまく動いてくれなかったです。

tracの設定


tracのプロジェクトを作成します
trac-admin /usr/local/bloxab/trac initenv
repositoryは/usr/local/bloxab/reposを指定します。
tracでの権限設定は
$ sqlite3 /usr/local/bloxab/db/trac.db
sqlite> delete from permission where username = 'anonymous' and action not like '%VIEW';
として匿名アクセスは読み込みのみ許可に変えてます。
管理者権限設定は
$ trac-admin /usr/local/bloxab/trac permission add MyName TRAC_ADMIN
してます。

認証ファイルの用意


svnのcommitとtracで使用するパスワードファイルを作成します。
$ htpasswd -c /usr/local/bloxab/trac/htpasswd MyName

tracdの起動


tracdはたまに落ちるという話をmiyagawaさんから聞いたので、mysqlを参考にtracd_safeという落ちてもあげ直すスクリプトを書いたので、これを使って起動します。
$ tracd_safe&
これでport 11001 でtracdがあがりました。

svnwebの設定


先ほどインストールしたapache2のhttpd.confを下記のようにします
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

Listen 127.0.0.1:11002
ServerName svn.example.jp:80

<Location /repos/bloxab>
DAV svn
SVNPath /usr/local/bloxab/repos

# how to authenticate a user
AuthType Basic
AuthName "Bloxab repository"
AuthUserFile /usr/local/bloxab/trac/htpasswd

# For any operations other than these, require an authenticated user.
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

これでapache2を起動すれば
$ svn co http://localhost:11002/repos/blocab
でチェックアウト可能です。

apache 1.3系用のモジュールを追加


まずmod_proxyを入れておきます。
そして、そのままだとmod_proxyでsvnwebへのリクエストを通せないので、apache1.3系用のmod_davを入れます。
http://www.webdav.org/mod_dav/です。

フロントエンドのapache設定


今まで立ち上げたtracdとsvnwebをまとめます。
普段お使いのhttpd.confに下記の行を追加(もちろんdns周りは設定する事)
#for tracd
<VirtualHost example.jp>
DocumentRoot 適当に
ServerName example.jp

RedirectMatch ^/$ http://example.jp/trac
ProxyPass /trac http://localhost:11001/trac
ProxyPassReverse /trac http://localhost:11001/trac
</VirtualHost>

#for svnweb
<VirtualHost svn.example.jp>
ServerName svn.example.jp
ProxyPass / http://localhost:11002/
ProxyPassReverse / http://localhost:11002/
</VirtualHost>

logとかその他は適当に設定して下さい。


だいたいこんな感じでplagger.orgのような環境が出来上がります。
これでhttp://example.jp/にアクセスするとtracにhttp://svn.example.jp/repos/bloxab/にアクセス/svn coする事が可能になりました。

Posted by Yappo at 2006年06月08日 13:53 | TrackBack | tech
Comments
Post a comment









Remember personal info?






コメントを投稿する前に↓の場所にnospamと入力してください。