Trac0.11動いた

Trac0.11 Apache22 Python2.5 PostgreSQL8.3 Subversion1.5 なFreeBSDTracを動かしてみた。Apacheディレクティブもまともに知らない私には、なにやら設定が面倒だった。誰かの役に立つかもと思いメモっておく。


まず、Tracportsに入ってるのでソースコードからコンパイルしなくていい。*1
適当にmake&make installすると適当なところにtracdtrac-adminが入る。tracdはtracスタンドアロン*2動かせるデーモンで、trac-adminはtracのプロジェクト管理に使うプログラム。manがない。


さっそくtrac-adminを使ってプロジェクトを保存するディレクトリを作る。
tracではプロジェクトを保存するディレクトリのことをenvironmentと呼んでる。*3

# mkdir /usr/local/var/trac
# trac-admin /usr/local/var/trac/myenv initenv

適当なところにtracのenvironment管理用ディレクトリを作成し、その中にinitenvで新しいenvironmentを作る。
この管理用ディレクトリ直下にはenvironmentだけ置いておくようにすると後々しあわせになれます。SVNレポジトリとか作っちゃダメ、別のところに用意しましょう。
で、trac-admin hoge initenvすると質問攻めに遭う。あとで変更がきくので、気楽に。

Creating a new Trac environment at /usr/local/var/trac/test

Trac will first ask a few questions about your environment
in order to initialize and prepare the project database.

 Please enter the name of your project.
 This name will be used in page titles and descriptions.

Project Name [My Project]>

 Please specify the connection string for the database to use.
 By default, a local SQLite database is created in the environment
 directory. It is also possible to use an already existing
 PostgreSQL database (check the Trac documentation for the exact
 connection string syntax).

Database connection string [sqlite:db/trac.db]>

 Please specify the type of version control system,
 By default, it will be svn.

 If you don't want to use Trac with version control integration,
 choose the default here and don't specify a repository directory.
 in the next question.

Repository type [svn]>

 Please specify the absolute path to the version control
 repository, or leave it blank to use Trac without a repository.
 You can also set the repository location later.

Path to repository [/path/to/repos]> /usr/local/hoge/fuga

Creating and Initializing Project

名前、データベースへのアクセス方法、environmentのバージョン管理に使用するリポジトリの種類とそのロケーションを指定する。
エラー出なければOK。エラーが出てもひな形は作られているので、あとで conf/trac.ini を修正すればOK。
データベースについてはここ http://ameblo.jp/itboy/entry-10034678679.html を参考にしました。
レポジトリのロケーションは、前述したように、environmentの親ディレクトリには入れちゃダメ。


environmentを作ったあとからで良いので、さっき指定したディレクトリにsvnリポジトリを作る。または作成済みリポジトリを指すように conf/trac.ini を修正する。中身は空のままいじらなくて良く、とにかくsvnリポジトリが存在してそれを指していればOK。

# svnadmin create /usr/local/hoge/fuga


ここまででtrac側の準備は整うので、実験として

# tracd -p 8080 /usr/local/var/trac/myenv

さっき作ったばかりのenvironmentのディレクトリを指しつつ、スタンドアロンサーバを動かしてみる。http://localhost:8080/ で繋がればハッピー。Apacheの設定に移れる。

Apacheからmod_pythonを用いてtrac

Apacheから触れるように、権限をwwwに変更しとく。

# chown -R www:www /usr/local/var/trac/myenv


mod_python3をportsから入れて、入ったmod_python.soのロケーションをhttpd.confに書いとく。mod_python(無印)はapache2以上に対応してないのでmod_python3を入れるのね。

LoadModule python_module libexec/apache22/mod_python.so


その他、trac用の設定をhttpd.confに書く。
まとめて別ファイルに書いて、httpd.confからIncludeするときれいになるかも。*4

Alias /trac "/usr/local/var/trac"
<Directory "/usr/local/var/trac">
 Order Allow,Deny
 Allow from all
</Directory>

<Location "/trac">
 SetHandler mod_python
 PythonHandler trac.web.modpython_frontend
 PythonOption TracUriRoot "/trac"
 PythonOption TracEnvParentDir /usr/local/var/trac
</Location>

Directoryの設定をしとかないとアクセスできない*5。この設定だとグローバルな公開をするので安全じゃないけど、例なので許してくだしあ。
Locationで /trac 以下へのアクセスの設定をする。
TracEnvParentDirは、tracのenvironmentを置いている親ディレクトリを指定する。これを指定すると、新しくTracEnvParentDirにenvironmentが出来たときに自動的にそれを使用可能にしてくれる。TracEnvParentDirの代わりに、TracEnvを /usr/local/var/trac/myenv などとenvironmentディレクトリを直接指定することも可能。
TracUriRootは設定する必要があるかも知れないし、ないかも知れない(公式ドキュメントより)。私は/tracとしておいた。


こんな感じで動いた。設定しといてなんだけど、個人利用だったら別にtrac lightningでも良かったのかーと思わなくもない。


参考URL
色々あったけど、なんか最終的には公式だよね役に立つのは。
http://trac.edgewall.org/wiki/TracGuide

*1:最新版を落としてmakeしようとしたら失敗したがportsの方は全く問題なくmakeでき、ああport committerは偉大だと思った。ところで私が入れたのはports/www/tracの方で、ports/japanese/tracについては知らない

*2:ApacheなどのWebサーバなしに

*3:この言葉の対応を知った途端に設定が理解できるようになった><

*4:betterなやり方がありそうだけど知らない

*5:まともな設定をしている限り