さくらにtracを入れてみる。
最近さくらのレンサバをあまり触ってなかったので、暇つぶしにtracでも入れてみることに。
subversionに関しては[id:orangehat:20071014]で導入済み。
また、sqlite3もインストール済みですが、こちらはさくらにデフォルトでインストールされているものを使っても問題ないようです。
準備
$ mkdir -p $HOME/local/src $ cd $HOME/local/src $ mkdir -p $HOME/local/lib/python2.4/site-packages $ ln -s ~/local/lib/python2.4 ~/local/lib/python $ vi $HOME/.cshrc //下記追加 setenv PYTHONPATH $HOME/local/lib/python:$HOME/local/lib/python/site-packages setenv PATH $HOME/local/bin:$PATH setenv LD_LIBRARY_PATH $HOME/local/lib
.cshrcを読み込んで反映させる。
$ source $HOME/.cshrc
pysqlite
$ cd $HOME/local/src $ wget wget http://oss.itsystementwicklung.de/download/pysqlite/2.4/2.4.1/pysqlite-2.4.1.tar.gz $ tar zxvf pysqlite-2.4.1.tar.gz $ cd pysqlite-2.4.1 $ setenv LOCALBASE $HOME/local $ python setup.py build
ここで下記エラーが。
src/connection.h:33:21: sqlite3.h: No such file or directory
sqlite3.hがないということでシンボリックリンクを貼ってやる。
$ ln -s $HOME/local/src/sqlite-3.5.4/sqlite3.h $HOME/local/pysqlite-2.4.1/src/ $ python setup.py build
今度はライブラリlibsqlite3がないと言われてる??
/usr/bin/ld: cannot find -lsqlite3 error: command 'cc' failed with exit status 1
LD_LIBRARY_PATHではダメ?らしいのでLDFLAGSをセットしてやる。
$ setenv LDFLAGS -L$HOME/local/lib $ python setup.py build $ python setup.py install --prefix=$HOME/local
clearsilver
テンプレート機能。
どうやらgmakeじゃないと入ってくれない模様。
$ cd $HOME/local/src/ $ wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz $ tar zxvf clearsilver-0.10.5.tar.gz $ cd clearsilver-0.10.5 $ ./configure --prefix=$HOME/local --disable-ruby --disable-java --disable-perl --disable-apache --disable-csharp $ gmake $ gmake install
pythonモジュールは、gmakeではインストールされないのでpython setup.pyが必要とのことです。
$ cd python
$ python setup.py build
またしてもエラー。。。下記のようなエラーがずらずら100行ほど。
どうやらオブジェクトファイルとライブラリファイルの呼び出し方が悪い?らしいのだが、どこが悪いか全くわからず断念。
/usr/lib/crt1.o(.text+0x72): In function `_start': : undefined reference to `main' build/temp.freebsd-6.1-RELEASE-p19-i386-2.4/neo_cgi.o(.text+0x20): In function `p_cgi_dealloc': : undefined reference to `PyObject_Free'
上記エラーが解消できなかったので、clearsilver-0.9.14を入れてみる。
$ wget http://www.clearsilver.net/downloads/clearsilver-0.9.14.tar.gz $ tar zxvf clearsilver-0.9.14.tar.gz $ cd clearsilver-0.9.14 $ ./configure --prefix=$HOME/local --oldincludedir=$HOME/local/include --disable-ruby --disable-java --disable-perl --disable-csharp --disable-python --disable-static $ gmake $ gmake install $ cd python $ python setup.py build $ python setup.py install --prefix=$HOME/local
docutils
$ wget http://jaist.dl.sourceforge.net/sourceforge/docutils/docutils-0.4.tar.gz $ tar zxvf docutils-0.4.tar.gz $ cd docutils-0.4 $ python setup.py install --home=$HOME/local
trac
ここでようやくtracを入れる。
株式会社インターアクトが出している日本語対応バージョンを使う。
wget http://www.i-act.co.jp/project/products/downloads/trac-0.10.3.1-ja-2.zip tar zxvf trac-0.10.3.1-ja-2.zip cd trac-0.10.3.1-ja-2 python ./setup.py install --prefix=$HOME/local
tracを使うための準備
まずtracの初期設定
以前にsvnのリポジトリを$HOME/svnに作成していたので、そのリポジトリを指定した。
まだ作っていない方は下記のようにどうぞ。
$ svnadmin create fs-type=fsfs $HOME/svn
tracの初期化作業
rehash mkdir $HOME/svn/trac trac-admin $HOME/svn/trac/ initenv Project Name [My Project]> My Trac // プロジェクトの名前。適当に。 Database connection string [sqlite:db/trac.db]> // データベースの種類。デフォルトで。 Repository type [svn]> // リポジトリのタイプ? svn以外はCVSとか? Path to repository [/path/to/repos]> /home/xxx/svn // リポジトリの場所 Templates directory [/home/xxx/local/share/trac/templates]> // テンプレートのディレクトリ。デフォルトで。
tracをCGIとして使う
流れとしては、
1. 元からあるtrac.cgiをtrac_.cgiに変更し、新たに下記のようなtrac.cgiを作成する。
2. 新たに作成したtrac.cgiに環境変数を指定し、そこでtrac_.cgiを実行するようにする。
xxxはさくらのユーザID。
$ cp $HOME/local/share/trac/cgi-bin/trac.cgi $HOME/www $ mv $HOME/www/trac.cgi $HOME/www/trac_.cgi $ vi $HOME/www/trac.cgi ------------------------------------------------------------------------------------------------------------ #!/bin/sh LD_LIBRARY_PATH=/home/XXX/local/lib;export LD_LIBRARY_PATH TRAC_ENV=/home/XXX/var/trac/repo;export TRAC_ENV PYTHONPATH=/home/XXX/local/lib/python:/home/XXX/local/lib/python/site-packages;export PYTHONPATH /usr/local/bin/python /home/XXX/www/trac_.cgi ------------------------------------------------------------------------------------------------------------ $ chmod 755 $HOME/www/trac.cgi
Rewriteモジュール
.htaccessにてRewriteモジュールを使う。
http://xxx.sakura.ne.jp/index.py を http://xxx.sakura.ne.jp/trac.cgi/index.pyに書き換えてやる。
下記のRewriteRuluのオプションR=301(恒久的な遷移)やL(現在のルールの先頭に戻る?)なんかはなくても動作するが、他の人がみんな付けているので一応。
vi $HOME/wwww/.htaccess ----------------------------------------------- #trac config RewriteEngine On RewriteBase / RewriteRule ^$ /trac/ [R=301, L] RewriteRule ^/trac/(.*)$ /trac.cgi/$1 [L] -----------------------------------------------
tracにアクセス
http://xxx.sakura.ne.jp/tracにアクセスすると、
Python Traceback Traceback (most recent call last): File "/home/xxx/local/lib/python2.4/site-packages/trac/web/main.py", line 406, in dispatch_request dispatcher.dispatch(req) File "/home/xxx/local/lib/python2.4/site-packages/trac/web/main.py", line 191, in dispatch chosen_handler = self._pre_process_request(req, chosen_handler) File "/home/xxx/local/lib/python2.4/site-packages/trac/web/main.py", line 263, in _pre_process_request chosen_handler = f.pre_process_request(req, chosen_handler) File "/home/xxx/local/lib/python2.4/site-packages/trac/versioncontrol/api.py", line 73, in pre_process_request self.get_repository(req.authname).sync() File "/home/xxx/local/lib/python2.4/site-packages/trac/versioncontrol/api.py", line 91, in get_repository raise TracError('Unsupported version control system "%s". ' TracError: Unsupported version control system "svn". Check that the Python bindings for "svn" are correctly installed.
どうやらsubversionがpython対応していない?らしいので、リコンパイル。
$ cd $HOME/local/src/subversion-1.4.5 $ make swig-py $ make install-swig-py $ ln -s $HOME/local/lib/svn-python $HOME/local/lib/python/site-packages/svn-python $ ln -s $HOME/local/lib/svn-python/svn $HOME/local/lib/python/site-packages/svn $ ln -s $HOME/local/lib/svn-python/libsvn $HOME/local/lib/python/site-packages/libsvn
ここでやっとエラーなしに見れるように。
Pythonのモジュールを入れるためのツール
Pythonのモジュールを使うためには必要らしい。
$ mkdir $HOME/local/src/setuptools $ cd $HOME/local/src/setuptools $ wget http://peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.py --prefix=$HOME/local
AccountManager
httpd.confを触ることができないので、tracのプラグインであるAccountManagerを使用する。
Pythonにはeasy-installというrubyのgemのようなものがあるということで、試しに使ってみる。
$ easy_install --prefix=$HOME/local --build-directory=$HOME/tmp http://trac-hacks.org/svn/accountmanagerplugin/0.10 Downloading http://trac-hacks.org/svn/accountmanagerplugin/0.10 Doing subversion checkout from http://trac-hacks.org/svn/accountmanagerplugin/0.10 to /tmp/easy_install-UJx-CU/0.10 svn: Unrecognized URL scheme for 'http://trac-hacks.org/svn/accountmanagerplugin/0.10' Processing 0.10 error: Couldn't find a setup script in /tmp/easy_install-UJx-CU/0.10
どうやら/tmpディレクトリにチェックアウトしようとするらしく、どうにもならず。
上記の--build-directoryオプションがそのディレクトリの指定だと思うんですが、うまくいかない。
実はここで1日くらい頑張ったんですがどうにもならなかったので、仕方なくソースから入れることに。
どうやらさくらに直接チェックアウトはできないようなので、下記URLから一旦ローカルのパソコンに落としてscpかなんかであげる。
http://trac-hacks.org/changeset/latest/accountmanagerplugin/0.10?old_path=/&filename=accountmanagerplugin/0.10&format=zip
$ tar zxvf accountmanagerplugin-0.10.zip $ cd accountmanagerplugin $ python setup.py install --prefix=$HOME/local Installed /home/xxx/local/lib/python2.4/site-packages/TracAccountManager-0.1.3dev-py2.4.egg Processing dependencies for TracAccountManager==0.1.3dev Searching for TracWebAdmin Reading http://pypi.python.org/simple/TracWebAdmin/ Couldn't find index page for 'TracWebAdmin' (maybe misspelled?) Scanning index of all packages (this may take a while) Reading http://pypi.python.org/simple/ No local packages or download links found for TracWebAdmin error: Could not find suitable distribution for Requirement.parse('TracWebAdmin')
どうしても上記エラーが出てしまうのですが、WebAdminは別に自分で入れることにする。
WebAdmin
trac-adminの機能をブラウザから使用できるようにするプラグイン。
こちらも先ほどと同じように、下記URLから一旦ローカルに落としてscpであげる。
http://trac.edgewall.org/attachment/wiki/WebAdmin/TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip?format=raw
http://trac.edgewall.org/wiki/WebAdminに書いてある通りに行う。
$ mv $HOME/local/src/TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip $HOME/local/src/TracWebAdmin-0.1.2dev_r4240-py2.4.egg $ mv $HOME/local/src/TracWebAdmin-0.1.2dev_r4240-py2.4.egg $HOME/svn/trac/
これでインストール完了。
なんかかなり変な感じがするが、上記URLにも間違っていると思うかもしれないがこれで動くなんて書いてある。
trac.iniの設定
htdigest認証を使う。
trac.iniの書き方ですが、見たところ[components]のところについては、
各プラグインの__init__.pyの親フォルダの名前.親フォルダにあるファイル.pyの名前.そのフォルダのclass名 = enabled/disabled
という感じでしょうか。以下例
$ pwd $HOME/local/src/accountmanagerplugin/0.10/acct_mgr $ ls -l -rwxr-xr-x 1 xxx users 0B Jul 27 2006 __init__.py -rwxr-xr-x 1 xxx users 5.7K Feb 23 2007 admin.py -rwxr-xr-x 1 xxx users 4.7K Nov 14 2006 api.py -rwxr-xr-x 1 xxx users 3.4K Apr 14 21:46 db.py -rwxr-xr-x 1 xxx users 5.7K Apr 11 2007 htfile.py -rwxr-xr-x 1 xxx users 1.1K Nov 13 2006 http.py -rwxr-xr-x 1 xxx users 3.0K Jul 29 2006 md5crypt.py -rwxr-xr-x 1 xxx users 3.0K Mar 24 2007 pwhash.py drwxr-xr-x 2 xxx users 512B Apr 17 23:49 templates drwxr-xr-x 2 xxx users 512B Apr 17 23:49 tests -rwxr-xr-x 1 xxx users 15K Aug 5 2007 web_ui.py
というディレクトリ構成の場合、
acct_mgr.admin.AccountManagerAdminPage = enable
以上の要領で変更します。
ちなみに*はすべてということになるようです。
AccountManagerはhttp://trac-hacks.org/wiki/AccountManagerPlugin#LoginModuleに書いているので参考まで。
$ vi $HOME/svn/trac/conf/trac.ini // xxxはさくらのユーザID ----------------------------------------- [account-manager] htdigest_realm = TracRealm password_file = /home/xxx/svn/trac/conf/.htdigest password_store = HtDigestStore [components] ; tracのデフォルトのレポート機能を無効化 trac.ticket.report.* = disabled ; WebAdminでユーザアカウントの発行などができるようになる acct_mgr.admin.accountmanageradminpage = enabled ; アカウントマネージャの認証にhtdigest認証を使用 acct_mgr.htfile.htdigeststore = enabled ; ログイン時にMy Accountリンクを出して、パスワードの変更などができるようになる acct_mgr.web_ui.accountmodule = enabled ; アカウントマネージャのログインモジュールを使用 acct_mgr.web_ui.loginmodule = enabled ; enableにすると、Registerリンクを出せるが出しなくないのでdisabled。おそらく明示的に書かなくてもOK acct_mgr.web_ui.registrationmodule = disabled ; デフォルトのログインモジュールを無効化 trac.web.auth.loginmodule = disabled ; WebAdminモジュールをすべて使えるようにする webadmin.* = enable ---------------------------------------
TRAC_ADMINについて
まず匿名、つまり誰にでもTRAC_ADMINの権限を与える。最初これを知らなかったので、かなり苦労した。。。
TRAC_ADMIN権限を持っていないとブラウザ上にADMINページが出てこないらしいので。
下記はまだユーザを一つも作っていないので、とりあえず誰にでもTRAC_ADMIN権限を与える。
$ trac-admin $HOME/svn/trac permission add anonymous TRAC_ADMIN
ここでhttp://xxx.sakura.ne.jp/tracにアクセスすると、右上に「Admin」というタブが増える。
そこを押し、Accounts > user > add userで新規にユーザを登録する。
先ほど匿名に与えた権限を取り上げ、作成したユーザ(ここではjhonさん)にTRAC_ADMIN権限を与える。
$ trac-admin $HOME/svn/trac/ permission remove anonymous TRAC_ADMIN $ trac-admin $HOME/svn/trac/ permission add jhon TRAC_ADMIN
これで右上のloginというところからjhonでログインすると、Adminタブが出現し、使えるようになる。
また現在の状態では、anonymousにticketの登録やWikiの編集ができてしまうので、Admin > General > Permissionsから各権限を奪うことができる。
次はtracを速くするのと日本語化をやっていきたいと思います。
追記
4/21 tracの高速化