ページ更新: 2008-10-31 (金) (5259日前)

(2006-10-14 新規作成)

Tracを構成するソフトウェアについて。

目次

[編集]

Tracの構成 #

Trac 0.9.X / 0.10.X の、Trac自身とTracに必要なソフトウェアの構成を示す。

実際にはもっと複雑だと思われるが、インストールするだけであればこの程度のメンタルモデルがあればよいだろう。

(トラブルシューティング時に、矢印で結ばれているところを重点的にチェックするとよい)

trac-assembly-01.png

[編集]

構成から導かれるインストール順序 #

上の構成図から、ある程度各ソフトウェアのインストールの順序がわかる。

  1. Python をインストールする。
  2. HTTPサーバ (Apache 2.0など)、SQLite (あるいはサポートされているDBMS)、Subversion をインストールする。 なお、1.と2.は逆順でも問題ない。
    また、tracd を使うのであればHTTPサーバは不要、ただし若干機能が劣る。このときの動作速度はmodpython.frontendとほぼ同等。
  3. Pythonと2.でインストールしたソフトウェアを接続するために、 PySQLite (→SQLite)、ClearSilver (Pythonとのインターフェイスを含むので)、Subversion-Python binding、 mod_python (modpython.frontendを使用しないのであれば不要)をインストールする。
    1. Python 2.5以後であればSQLiteを含むので、インストール不要である。
  4. Trac Pluginを使用するのであれば、setuptools をインストールする。
    1. Trac 0.11以後は、Trac自体をsetuptoolでインストールするように。よってsetuptoolsは必須である。

なお、以下のような環境であれば、インストールの順序は特に考慮する必要はない。ただし、最新の環境を使えるとは限らない、というデメリットが生じる。

  • Debian GNU/Linux の様にパッケージ間のインストール順序を自動的に決定してくれる環境
  • Trac LightningAll-In-One Trac の様に必要なソフトウェアを1つのインストーラーで全てインストールするもの
  • Buildix の様に必要なソフトウェアがすべてインストールされている環境
[編集]

DBMSについて #

Tracでは、DBMSは Trac 0.9.X 以後では SQLite, PostgreSQL, MySQL (実験的サポート) から選択できる。

ただし、バックアップ機能 (trac-admin hotcopy) 処理は SQLite のみ使用できる。

Trac 0.12 ではObject/Relational Mappingに SQLArchemy を使うとのこと。TracとDBMSの間に1つレイヤが追加されることにより、Features - SQLAlchemy を見る限り、対応データベースがこれまでより増えそうだ。

また、Python 2.5以後にはSQLiteが含まれるので、別途インストールする必要が無くなった。

[編集]

SCM (ソースコード管理システム) について #

  • Trac 0.9.X以前では、たとえ使用しなくても、Subversion と Subversion-Python binding のインストール作業が必要である。
  • Trac 0.10以後を使用する場合、TracとSCMを連携させない(レポジトリビューアを使用しない)のであれば、 SCM周り (Subversion, Subversion-Python binding) は不要である。
  • Trac 0.10以後では、Subversion以外のSCMを使用するためのインターフェイスが本体に用意された。 ただし標準ではSubversionのみ使用できる。他のSCMはPluginとしてサードパーティから供給されると思われる。
[編集]

HTML Templateについて #

  • Trac 0.10までは、ClearSilver (C言語)を使用している。テンプレートファイルの拡張子は .cs。
  • Trac 0.11にて、Pythonで書かれた Genshi (日本語の「原糸」)に変更された。
    • ClearSilver (C/C++のコードを含む) よりインストールが楽になった(Pythonで書かれているので)
    • ただし、従来のプラグイン (ClearSilverを前提としている)を動作させるため、しばらくはClearSilverもサポートされる。
[編集]

HTTPサーバについて #

TracはHTTPサーバとの間に mod_python、FastCGI、CGI の3つのインターフェイスを持つ。 よって、これらのいずれかのインターフェイスを持つHTTPサーバが使用できる。

加えて、Trac自体にもHTTPサーバ tracd が含まれている。HTTPサーバを別途用意せずとも Tracが使えるため便利である。しかし、若干機能が少ない。 特に現時点ではユーザーアカウント管理を行うWebAdminPluginの機能の一部が使えないのが難点である。
また、Trac を Apache 1.3.X + mod_python の組み合わせで稼働させるのは面倒であるが(私は断念した)、 Apache 2.0を用意したくない場合に mod_proxy(ProxyPass, ProxyPassReverse)を使えば、 ユーザーからはあたかもApacheに組み込まれているように見せることもできるようである。 (特に Trac 0.10では tracd の機能が増強され、コマンドラインオプションもいくつか追加された)

速度は tracd、mod_python、FastCGI がほぼ同速度で、CGIは遅いらしい。

ユーザー認証の柔軟性では、Apache + mod_python, FastCGI, CGI がよいようだ。 これは Apache は各種のユーザー認証をサポートしているため。 (LDAP、Kerberos、NTLM、...)

以上のことから、次の組み合わせがよく使われると思われる:

  • Apache 2.0/2.2 + mod_python ( + WebDAV, mod_svn,..) : モジュール・実例ともに豊富
  • Apache 1.3/2.0/2.2 + mod_wsgi : Subversionではなく、Mercurialを使う場合はこの構成も可能。
    • 注:筆者は Apache 1.3 + mod_wsgiを試したことがない。
  • lighttpd + fastcgi : 軽い lighttpd
  • tracd : 機能は少ないが設置が容易
    • 筆者は: Apache 1.3 + mod_proxy + tracdで、Subversion抜きでTracをしばらく使っていたことがある。 (当時CVSを使っていたので)