2006年7月アーカイブ

trac

| | コメント(0) | トラックバック(0)| Edit
会社の人から、tracと言うものの存在を聞いたので、インストールしてみた。
portsから、japanese/trac をインストール。
FreeBSD4の場合は、依存している clearsilver-python がコンパイルできないので、Makefileをいじってしまったりする。
あと、tclをコンパイルしようとして失敗したりしていたので、sqlite3をコンパイルするときには、TCLWRAPPERとDOCSのオプションを外すようにした。
無事にインストールが終わったら、以下の手順で使えるようにする。
  1. プロジェクト用のsubversionリポジトリを作る。
    # svnadmin create /var/svn/tractest
    # chown -R www:www  /var/svn/tractest
    
  2. プロジェクト用のtrac environmentを作る。
    # trac-admin /var/trac/tractest initenv
    # chown -R www:www  /var/trac/tractest
    
    initenvの過程で、subversionのリポジトリの場所を聞かれるので、前の手順のパスを入れる。
  3. apacheの設定ファイル(/usr/local/etc/apache22/httpd.conf)を書き換える。
    Alias /trac/static "/usr/local/share/trac/htdocs/"
    <Directory /usr/local/share/trac/>
        Order allow,deny
        Allow from all
    </Directory>
    
    ScriptAlias /trac/tractest /usr/local/share/trac/cgi-bin/trac.cgi
    <Location "/trac/tractest">
      SetEnv TRAC_ENV "/var/trac/tractest"
    </Location>
    
    後半の部分を、プロジェクトを増やす毎に増やして行く。
これで、/trac/tractest にアクセスすれば、日本語のわかりやすいドキュメントで上記手順が説明されているページにアクセスできる。(一部間違いもあるみたいだが・・・)
ログインの機能を使うためには、認証の設定が必要になるが、それについては別のエントリ(mod_auth_external)で説明しようと思う。

後、上記手順は、普通にpythonのプログラムをcgiとして呼び出すのだが、起動後のドキュメントを良く読むと、mod_pythonが使えるようなことが書いてある。
そこで、/usr/ports/www/mod_python3 をインストールしてみたが、設定してもうまく行かない。(apr系のシンボルが見つからないといわれる)
調べてみたところ、apache2.2ではまだmod_python 3.2.8は動かないようだ。(3.2.9でサポート予定だとか)
と、言うわけで、mod_python3.2.9がportsに入ったら再度試して見ることにしよう。
tracは、subversionと組み合わせて使うものだ。
以前subversionを入れて遊んだのは、2004年7月頃のことで、そのころの1.0系ではBDBをバックエンドに使っていた。
しかし、ちょうど2004年の後半から、フラットなファイルシステム上のバックエンド(FSFS)が開発されたようで、現在のバージョンではこちらがデフォルトになっているようだ。
tracで遊べるように、subversionについて見直しを行ってみた。

cvs2svn
まずは、既存のCVSのリポジトリの移行だ。
これは、cvs2svnと言うプログラムを使えば良いらしい。/usr/ports/devel/cvs2svnをインストールする。
で、移行の手順としては、以下のようにした。
  1. CVSのリポジトリを好きなところにコピーして、CVSROOTとか、移行しないプロジェクトとかを削除する。
  2. 以下の内容でmime.typesと言うファイルを作成する。
    test/plain;charset=shift_jis text java jsp html
    
    ※ これはこのプロジェクトの *.text, *.java, *.jsp, *.html がshift_jisで書かれていたため。
  3. 以下のコマンドで、リポジトリを変換する。
    % cvs2svn --encoding=shift_jis --mime-types=mime.types -s /var/svn/tractest /var/cvsrep
    
    この例では、--encoding でコメントの文字コードを指定し、subversionのリポジトリは /var/svn/tractest 、CVSのリポジトリは /var/cvsrep にあるものとしている。


subversionへのアクセス方法
以前は、svn+sshでのアクセス方法を頑張って書いたりしたのだが、それはあまり一般的ではないようだ。
リポジトリのオーナーは www にしてしまって、apacheとmod_dav_svnに任せてしまうのが、tracとの相性で考えても良いようである。
その場合でも、mod_authz_svnとか、いろいろ研究する必要はありそうである。
tracや subversionを使うのに、それぞれに認証を設定するのは面倒くさい。
特に、会社の中で使う場合、利用者は多いし、firewallの内側でそこそこの安全性が確保されているので、Unixのアカウントと共用したくなる。
そんなときに使えるのがmod_auth_pamやmod_auth_externalと言うモジュールである。
以前は、別プログラムが必要ないのでmod_auth_pamを使っていた。
しかし、apache2.2に上げてから、認証に失敗するようになってしまった。
そこで、今回は mod_auth_external と pwauth を使ってみることにした。
portsから、www/mod_auth_external2とsecurity/pwauthをインストールする。
で、/usr/local/etc/apache22/httpd.confを修正する。
LoadModule auth_external_module libexec/apache22/mod_auth_external.so

AddExternalAuth pwauth /usr/local/bin/pwauth
SetExternalAuthMethod pwauth pipe

<Location "/trac/tractest/login">
  AuthExternal pwauth
  AuthType Basic
  AuthName trac
  Require valid-user
</Location>
注意点としては、LoadModuleは、ほかのapache2.2.のmod_auth_*よりも前に必要だと言う事。
で、これで試して見ると、
[Sun Jul 09 09:23:08 2006] [error] [client a.b.c.d] GROUP: hoge not in required group(s)., referer: http://www.wizard-limit.net/trac/tractest
のようなエラーが出て、認証に失敗してしまう。 どうも、valid-userでの認証がうまくないようなので、Require valid-userの代わりに、Require group hoge のようにしたら、無事に使えるようになった。
mod_auth_externalのページを見たところ、apache2.2の場合は、mod_auth_externalの2.2系ではなく、3.1系を使うのが正しいらしい。
どうも、apache2.2では、auth系のモジュールが見直されて、mod_auth_basicとmod_auth_digestがメインで、ほかのモジュールがプラグインする形らしい。
その辺もあって、mod_auth_externalを先にLoadModuleする必要があるのかも知れない。
まあ、これも、portsでmod_auth_external の3.1が入るようになってから追加検証することにしよう。

# 最近は、portauditが使えるからとか、バージョンアップが追いやすいとかの理由で、ports経由でしかインストールする気にならないのです。
2006年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

このアーカイブについて

このページには、2006年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2006年6月です。

次のアーカイブは2006年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1