Ubuntu12.04でTracの環境を構築してみました。mod_pythonは最近まで開発が停止していたようなので、Trac + Apache + WSGI で動かしてみます。mod_pythonの開発は現在は再開されているそうなので、そちらの方が良くなったらWSGIから切り替えるかもしれません。
参考になる資料は次のとおり。
- TracModWSGI – The Trac Project
- さくらVPSにETロボコン開発環境を構築する(Ubuntuインストール~Trac構築) – 平常心是道
- Ubuntu10.04へのtracのインストール覚え書き – maru source
最初に環境は下記のとおり。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS"
最新の13系ではありませんが、基本は変わらないでしょう。
Apache, Pythonはインストールされているという前提です。trac には下記が必要です。
$ sudo apt-get install \ trac \ trac-xmlrpc \ trac-ja-resource \ libapache2-mod-python \ libapache2-mod-python-doc \ libapache2-mod-wsgi
trac-xmlrpcはEclipse mylynと連携するのに必要らしいので入れてありますが、必須ではありません。
参考にした資料ではSubversionのリポジトリも作っていますが、ここではとりあえずTracだけ動かしたいので、すぐにTrac用ディレクトリとプロジェクトを作成します。ディレクトリの所有者はwww-dataにします。今回はSQLiteを使っていますが、PostgreSQLを使うこともできます。その場合は別の設定方法になります。
$ sudo mkdir /var/trac $ sudo chown -R www-data:www-data /var/trac $ sudo trac-admin /var/trac/sample initenv Project Name [My Project]> sample Database connection string [sqlite:db/trac.db]> $ sudo trac-admin /var/www/trac/testrepos/ wiki load /usr/share/trac-ja-resource/trac/wiki/default-pages/ $ sudo cp /usr/share/trac-ja-resource/trac/templates/* /var/www/trac/testrepos/templates/
ここではsampleというTracプロジェクトを作成しました。環境設定は /var/trac/sample/conf/trac.ini を編集します。とりあえずはそのままでも大丈夫です。カスタマイズが必要になったら編集しましょう。
確認用にtracdを起動します。
$ sudo tracd --port 8000 /var/trac/sample/
これでWebブラウザから接続ができるようになるので、http://localhost:8000/ へアクセスします。
Apache+WSGIを使う場合の設定については、/usr/share/doc/trac/README.Debian.gz、/usr/share/doc/trac-ja-resource/README.Debian.jaが参考になります。
モジュールのロードについては、a2enmodしなくても下記のようにインストール時に有効となっています。
$ cat /etc/apache2/mods-enabled/wsgi.load LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
mods-enabledにwsgi.loadがない場合はa2enmodでwsgiを有効にする必要があるかもしれません。
次に、/var/trac/trac.wsgi を用意します。複数のTracプロジェクトを用意したいのでos.environにはTRAC_ENV_PARENT_DIRを指定しています。
import os os.environ['TRAC_ENV_PARENT_DIR'] = '/var/trac' os.environ['PYTHON_EGG_CACHE'] = '/var/trac/eggs' import trac.web.main application = trac.web.main.dispatch_request
ちなみに、/usr/share/trac-ja-resource/cgi-bin/trac.cgi を使うという方法もあるようです。
次に、/etc/apache2/sites-available/default を変更しました。下記のようになります。
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName 127.0.0.1:80 #略 WSGIScriptAlias /trac /var/trac/trac.wsgi <Directory /var/trac> WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory> </VirtualHost>
仮想ホストを別途用意するほどのことではないので default をそのまま使っています。
設定ができたら、apache2を再起動します。
$ sudo service apache2 restart
未確認ですが、/usr/share/trac-ja-resource/cgi-bin/trac.cgi を使う場合は、defaultへ下記を追加します。
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName 127.0.0.1:80 #略 ScriptAlias /trac /usr/share/trac-ja-resource/cgi-bin/trac.cgi <Location "/trac"> SetEnv TRAC_ENV_PARENT_DIR "/var/www/trac" </Location> </VirtualHost>
そうそう、XML_RPCを有効にするには /var/trac/sample/conf/trac.ini の編集が必要です。
[components] tracrpc.* = enabled
XML_RPCのAPIを利用するには認証の設定も必要なのですが、今回はここまで。