breezy trac

tracのインストールについては、すっかり忘れたので、再度やってみることにした。
前回、wartyでは挫折して、sargeベースでやったのだけど、こんどは、専用マシンを用意できそうなこともあって、breezyでやることにする。用意できたマシンのメモリが非力なので、ほんとは、ubuntu-serverのほうがいいんだろうけど。
では、作業開始。

  • trac 環境のインストール

まず、apt-line の univers を有効にしておく。アップデートしてtracのインストールを行う。

# apt-get update
# apt-get install trac
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
apache2 apache2-common apache2-mpm-worker apache2-utils db4.2-util libapr0
libpcre3 libsvn0 openssl python-clearsilver python2.4-clearsilver
python2.4-subversion ssl-cert subversion
Suggested packages:
apache2-doc lynx www-browser ca-certificates subversion-tools enscript
python-docutils
The following NEW packages will be installed:
apache2 apache2-common apache2-mpm-worker apache2-utils db4.2-util libapr0
libpcre3 libsvn0 openssl python-clearsilver python2.4-clearsilver
python2.4-subversion ssl-cert subversion trac
0 upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
Need to get 3343kB/4712kB of archives.
After unpacking 15.9MB of additional disk space will be used.

breezyに入っているのは、0.8.4になる。さすがにリリースしたばかりの0.9はまだ入っていないようだ。
mxdatetimeは入れなかった。svn-toolsもとりあえずやめてシンプルな構成にしておく。

  • メッセージを日本語化する

本家プロジェクトは日本語化されているわけではない。テンプレートエンジンにClearSilverを使っているので、参照するテンプレートを日本語化したものに差し替えることで日本語を使えるようになる。
インタアクト社にて0.8.4用のローカライズされたファイルを配布しているので、それを使うことにする。
日本語テンプレートファイルを別ディレクトリに置く(わたしはこれが好きなだけで上書きでも可)。

# cp -a /usr/share/trac/templates /usr/share/trac/templates.ja
# cp -a /usr/share/trac/wiki-default /usr/share/trac/wiki-default.ja

インタアクトから日本語化されたテンプレートをもらってくる。

# wget http://www.i-act.co.jp/project/products/downloads/trac-0.8.4-ja-2.zip
# unzip trac-0.8.4-ja-2.zip
# mv trac-0.8.4-ja-2/templates/* /usr/share/trac/templates.ja/
# mv trac-0.8.4-ja-2/wiki-default/* /usr/share/trac/wiki-default.ja/
# mv /usr/share/trac/wiki-default /usr/share/trac/wiki-default.orig
# ln -s /usr/share/trac/wiki-default.ja /usr/share/trac/wiki-default
# rm -r trac-0.8.4-ja-2

今回は、自分用のwikiがほしいだけなので、リポジトリ名は"kinneko"で行くことにする。

# mkdir /var/svn
# cd /var/svn/
# svnadmin create kinneko
# chown -R www-data.www-data ./

  • tracプロジェクトを作成する

tracプロジェクト名もリポジトリと合わせて"kinneko"を使う。

# mkdir /var/trac
# trac-admin /var/trac/kinneko initenv kinneko /var/svn/kinneko /usr/share/trac/templates.ja
Creating and Initializing Project
Inserting default data
Configuring Project
trac.repository_dir
trac.templates_dir
project.name
Installing wiki pages
/usr/share/trac/wiki-default/TracImport => TracImport
/usr/share/trac/wiki-default/TracRss => TracRss
/usr/share/trac/wiki-default/TracMultipleProjects => TracMultipleProjects
/usr/share/trac/wiki-default/TracBackup => TracBackup
/usr/share/trac/wiki-default/TracTimeline => TracTimeline
/usr/share/trac/wiki-default/TracTickets => TracTickets
/usr/share/trac/wiki-default/TracInstall => TracInstall
/usr/share/trac/wiki-default/WikiRestructuredText => WikiRestructuredText
/usr/share/trac/wiki-default/WikiPageNames => WikiPageNames
/usr/share/trac/wiki-default/TracSyntaxColoring => TracSyntaxColoring
/usr/share/trac/wiki-default/TracPermissions => TracPermissions
/usr/share/trac/wiki-default/TracSupport => TracSupport
/usr/share/trac/wiki-default/WikiHtml => WikiHtml
/usr/share/trac/wiki-default/TracIni => TracIni
/usr/share/trac/wiki-default/TracModPython => TracModPython
/usr/share/trac/wiki-default/WikiFormatting => WikiFormatting
/usr/share/trac/wiki-default/TracBrowser => TracBrowser
/usr/share/trac/wiki-default/TracTicketsCustomFields => TracTicketsCustomFields
/usr/share/trac/wiki-default/TracNotification => TracNotification
/usr/share/trac/wiki-default/TracUnicode => TracUnicode
/usr/share/trac/wiki-default/TracAccessibility => TracAccessibility
/usr/share/trac/wiki-default/TracInstallPlatforms => TracInstallPlatforms
/usr/share/trac/wiki-default/TracReports => TracReports
/usr/share/trac/wiki-default/TracEnvironment => TracEnvironment
/usr/share/trac/wiki-default/WikiMacros => WikiMacros
/usr/share/trac/wiki-default/CamelCase => CamelCase
/usr/share/trac/wiki-default/WikiProcessors => WikiProcessors
/usr/share/trac/wiki-default/TracSearch => TracSearch
/usr/share/trac/wiki-default/TracQuery => TracQuery
/usr/share/trac/wiki-default/WikiStart => WikiStart
/usr/share/trac/wiki-default/TracLogging => TracLogging
/usr/share/trac/wiki-default/SandBox => SandBox
/usr/share/trac/wiki-default/WikiRestructuredTextLinks => WikiRestructuredTextLinks
/usr/share/trac/wiki-default/TracLinks => TracLinks
/usr/share/trac/wiki-default/TracRoadmap => TracRoadmap
/usr/share/trac/wiki-default/TracStandalone => TracStandalone
/usr/share/trac/wiki-default/TracUpgrade => TracUpgrade
/usr/share/trac/wiki-default/RecentChanges => RecentChanges
/usr/share/trac/wiki-default/TracAdmin => TracAdmin
/usr/share/trac/wiki-default/TracGuide => TracGuide
/usr/share/trac/wiki-default/TracChangeset => TracChangeset
/usr/share/trac/wiki-default/TitleIndex => TitleIndex
/usr/share/trac/wiki-default/WikiNewPage => WikiNewPage
/usr/share/trac/wiki-default/TracWiki => TracWiki
/usr/share/trac/wiki-default/TracJa => TracJa
/usr/share/trac/wiki-default/TracTermsJa => TracTermsJa
Indexing repository

                                                                                                                                        • -

Project database for 'kinneko' created.

Customize settings for your project using the command:

trac-admin /var/trac/kinneko

Don't forget, you also need to copy (or symlink) "trac/cgi-bin/trac.cgi"
to you web server's /cgi-bin/ directory, and then configure the server.

If you're using Apache, this config example snippet might be helpful:

Alias /trac "/wherever/you/installed/trac/htdocs/"

SetEnv TRAC_ENV "/var/trac/kinneko"

# You need something like this to authenticate users

AuthType Basic
AuthName "kinneko"
AuthUserFile /somewhere/trac.htpasswd
Require valid-user

The latest documentation can also always be found on the project website:
http://projects.edgewall.com/trac/

Congratulations!


# cp -a /usr/share/trac/htdocs /var/trac/
# cp -a /usr/share/trac/cgi-bin /var/trac/kinneko/
# chown -R www-data.www-data /var/trac/

  • apache2 の設定を行う

自動起動を可能にするために、/etc/default/apache2 の NO_START を 0 に書き換える。
debianではデフォルトでは起動しないようになっているが、ubuntuでは起動するのがデフォルト設定だった。
debianの場合は、以下の作業が必要になる。

# vi /etc/default/apache2
# 0 = start on boot; 1 = don't start on boot
NO_START=0

trac専用の設定ファイルを作成する。
今回は専用ホストで、複数プロジェクトの予定もないので、default設定を変更して利用する。

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.orig
# vi /etc/apache2/sites-available/default
NameVirtualHost *

ServerAdmin webmaster@localhost

DocumentRoot /var/www/

Options FollowSymLinks
AllowOverride None

Alias /trac/ "/var/trac/htdocs/"

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

ScriptAlias /kinneko/ "/var/trac/kinneko/cgi-bin/"

AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all


SetEnv TRAC_ENV "/var/trac/kinneko"

# You need something like this to authenticate users

AuthType Basic
AuthName "kinneko Project login:"
AuthUserFile /var/trac/kinneko/trac.htpasswd
Require valid-user

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

設定を変更したら、apache2を再起動する。

# /etc/init.d/apache2 restart

パスワード認証用のファイルを作成すると同時にユーザーを登録しておく。

# htpasswd2 -c /var/trac/kinneko/trac.htpasswd kinneko
New password:
Re-type new password:
Adding password for user kinneko
# chown www-data.www-data /var/trac/kinneko/trac.htpasswd

本来は、固定アドレスで運用するべきだが、たまたまDHCPで運用しているので、取得アドレスを調べる。そのうち固定IPに設定を変更する予定。

# ifconfig eth0 | grep "inet addr"
inet addr:192.168.0.26 Bcast:192.168.0.255 Mask:255.255.255.0

  • 動作確認

ブラウザから、設定したURLにアクセスしてtracの表示とログインを確認する。

http://192.168.0.26/kinneko/trac.cgi

いちいちtrac.cgiを呼び出すのが面倒な場合は、kinneko/index.htmlにリダイレクトファイルをおいておくとよい。

動作が遅いと感じる場合、mod_pythonを有効にしておくといいだろう。

# apt-get install libapache2-mod-python

こちらも、ubuntuだと入れるだけで有効になるが、debianの場合は、実行モジュールへのリンクが必要かもしれない。

# a2enmod mod_python

defaultの設定ファイルは下記のように書き換える。

NameVirtualHost *

ServerAdmin webmaster@localhost

DocumentRoot /var/www

Options FollowSymLinks
AllowOverride None

Alias /trac /var/trac/htdocs/

SetHandler mod_python
PythonHandler trac.ModPythonHandler
#PythonOption TracUriRoot "/kinneko"
PythonOption TracUriRoot "/"
pythonOption TracEnvParentDir /var/trac

# You need something like this to authenticate users

AuthType Basic
AuthName "kinneko Project "
AuthUserFile /var/trac/kinneko/trac.htpasswd
Require valid-user

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

アクセスは、"http://192.168.0.26/kinneko/"で可能になる。
システムのリソースが少ない場合は、mod_pythonを採用しても動作速度に大きな差が出ることはないようだ。
# なぜか脳内BGMはずっと「東京ブギウギ」でした。