
まだ、自分には使う機会がないけど、一応tracを入れてみることにした
殆ど「CORESERVER に trac を入れてみた - 記憶は削除の方向で」の内容と同じだけど、少しだけ違うところがあるのでメモ。
手順は以下の通りになります。
- 下準備
- Subversion Python バインディングのインストール
- clearsilverのインストール
- なんか便利な奴のインストール
- tracのインストール
- tracを動作させるための設定
- tracプラグインのインストール
1.下準備
virtual-pythonとeasy_installが便利ということなのでインストールします。
また、easy_installでpysqliteも入れておきます。
(1) virtual-pythonのインストール
$ wget http://peak.telecommunity.com/dist/virtual-python.py
$ python virtual-python
(2) .bashrcの作成
ここでは、「.bashrc」っていう名前で設定ファイルをホームディレクトリに作ります。
$ touch ~/.bashrc
$ echo 'export PYTHONPATH=~/lib/python2.4/site-packages' > ~/.bashrc
$ echo 'export PATH=~/bin:$PATH' > ~/.bashrc
(3) easy_installのインストール
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py
しかし、なぜかこのままだとeasy_installとかが上手く動かなかった。
何でかな・・と思ってたら、なんかありました。
[Distutils] Bug in setuptools/command/sdist.py: global name 'log' is not defined
ということで、
/virtual/【ドメイン】/lib/python2.4/site-packages/setuptools-0.6c6-py2.4.egg/setuptools/command/
の中にあるsdist.pyを編集します。
89行目あたりに、if data.startswith('8'):っていうのがあるはずなので、
if data.startswith('8') or data.startswith('9'):
に書き換えておしまいです。
これで、ようやく pysqliteをeasy_installでインストールできるようになります。
(4) pysqliteのインストール
$ easy_install pysqlite
easy_installって便利だ。
2.Subversion Python バインディングのインストール
CORESERVERには一応Subversion入ってるけど、古いから1.5をインストールします。
(1) swigのインストール
何のためか知らんけど一応入れます。
$ mkdir ~/tmp
$ cd ~/tmp
$ wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.36.tar.gz
$ tar xzvf swig-1.3.36.tar.gz
$ cd SWIG-1.3.36
$ ./configure --prefix=$HOME
$ make
$ make install
(2) Subversion Python バインディングのインストール
$ cd ~/tmp
$ wget http://subversion.tigris.org/downloads/subversion-1.5.5.tar.gz
$ wget http://subversion.tigris.org/downloads/subversion-deps-1.5.5.tar.gz
$ tar xzvf subversion-1.5.5.tar.gz
$ tar xzvf subversion-deps-1.5.5.tar.gz
$ cd subversion-1.5.5/apr
$ ./configure --prefix=$HOME
$ make
$ make install
$ cd ../apr-util
$ ./configure --prefix=$HOME --with-apr=$HOME/bin/apr-config
$ make
$ make install
$ cd ../
$ ./configure --prefix=$HOME --with-apr=$HOME/bin/apr-config --with-apu-config=$HOME/bin/apu-config
$ make
$ make install
$ make swig-py
$ make install install-swig-py
(3) PYTHONPATHのリンク
Python が見つけられるように、PYTHONPATHにリンクしておきます。(シンボリックリンクだっけ?)
$ ln -s $HOME/lib/svn-python/* $PYTHONPATH
3.clearsilverのインストール
easy_installでインストールやろうと思ってたけど、バージョンが0.10xでなんか駄目らしい。なんでだろ。
ということで、手動で0.9をインストールすることに。
$ cd ~/tmp
$ wget http://www.clearsilver.net/downloads/clearsilver-0.9.14.tar.gz
$ tar xzvf clearsilver-0.9.14.tar.gz
$ cd clearsilver-0.9.14
$ ./configure --prefix=$HOME --oldincludedir=$HOME/include --disable-ruby --disable-java --disable-perl --disable-csharp --disable-python --disable-static
$ make
$ make install
$ cd python
$ python setup.py install
4.なんか便利な奴のインストール
(1) docutilsのインストール
tracでRSTっていうのが使えるようになるらしい。・・・ってなんだそれ。
$ easy_install docutils
(2) SilverCityのインストール
リポジトリブラウザで構文強調がされたりするそうです。
$ cd ~/tmp
$ wget http://jaist.dl.sourceforge.net/sourceforge/silvercity/SilverCity-0.9.7.tar.gz
$ tar xzvf SilverCity-0.9.7.tar.gz
$ cd SilverCity-0.9.7
$ python setup.py install
5.tracのインストール
やっとtrac本体のインストールです。俺は何となく本家版(英語)をインストールしました。
$ cd ~/tmp
$ wget http://ftp.edgewall.com/pub/trac/Trac-0.11.2.1.tar.gz
$ tar xzvf Trac-0.11.2.1.tar.gz
$ cd Trac-0.11.2.1
$ python setup.py install
6.tracを動作させるための設定
(1) Subversionのリポジトリを作成
$ mkdir -p ~/var/svn
$ svnadmin create --fs-type=fsfs ~/var/svn/repo
$ cd ~/tmp
$ mkdir proj
$ cd proj
$ mkdir trunk branches tags
$ cd ../
$ svn import proj file:///virtual/【アカウント】/var/svn/repo -m "Import First"
$ rm -r proj
(2) Trac Environmentの作成
$ mkdir -p ~/var/trac
$ trac-admin ~/var/trac/repo initenv
このとき、何か設定しろと言ってくるので、設定する。
殆どリターンキーでOKだけど、リポジトリフォルダは必ず設定すること。(Path to repositoryってところ)
ちなみに、 /virtual/【アカウント】/var/svn/repo ってなかんじで設定します。
(3) trac.cgiの準備
まず、trac.cgiを~/public.htmlにコピーします。
$ cp ~/share/trac/cgi-bin/trac.cgi ~/public_html
サブドメインとかにしたかったら、以下のように。
$ cp ~/share/trac/cgi-bin/trac.cgi ~/public_html/【サブドメイン】
次に、コピーしたtrac.cgiを編集します。
TRAC_ENVの設定は必須だけど、SCRIPT_NAMEは任意。
但し、指定しないとhttp://example.com/trac.cgi/みたいな感じになってちょっと嫌。
# 1行目
#!/virtual/【アカウント】/bin/python
# 18行目以降に追記する。
try:
import os
os.environ['SCRIPT_NAME'] = "/trac/" # 任意
os.environ['TRAC_ENV'] = "/virtual/【アカウント】/var/trac/repo"
そして、trac.cgiを設置したディレクトリより一つ上の階層に以下の内容で「.htaccess」を作成します。(SCRIPT_NAME設定した人だけ)
RewriteEngine On
RewriteRule ^$ /trac/ [R=301,L]
RewriteRule ^trac(\/.*)$ /trac.cgi$1 [L]
(4) 静的ファイルを直接リンクさせる
静的ファイルをcgi経由で配信しないようにします。
これは別にやらなくても良いです。
$ ln -s ~/share/trac/htdocs/ ~/public_html/【trac.cgiがあるディレクトリ】/htdocs/
そして、~/var/trac/repo/conf/trac.ini(以降trac.ini)に以下の行を追記します。
[trac]
htdocs_location = /htdocs/
7.tracプラグインのインストール
(1) WebAdmin
これはeasy_installでインストールします。
$ easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/
(2) AccountManager
同様にeasy_installで。
$ easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk
そして、アカウントを作成するために、以下の内容をtrac.iniに追記します。
[account-manager]
password_file = /virtual/【アカウント】/var/trac/repo/conf/.htpasswd
password_format = htpasswd
password_store = HtPasswdStore
[components]
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.htfile.htpasswdstore = enabled
アカウントを作成したら、勝手にユーザーを作られないように以下の内容を追記します。
[components]
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.web_ui.registrationmodule = disabled
色々できるように、作成したユーザーに管理者権限を与えます。
$ trac-admin ~/var/trac/repo permission add 【作成したユーザー名】 TRAC_ADMIN
(3) SpamFilter
既にプリインストールされてるので、とりあえずtrac.iniから編集します。
[spam-filter]
akismet_api_key = 【API Key】
akismet_api_url = rest.akismet.com/1.1/
・
・
というようなところがあると思うので、【API Key】に、API Keyを入力します。
なお、API Keyは、WordPress.comにユーザー登録を行うと、登録完了メールの下部に記載されています。
upgradeが必要なのでしておきます。
$ trac-admin ~/var/trac/repo upgrade
(4) trac-post-commit-hook
なんかよく知らんけど、一応入れとく。
$ cp ~/tmp/Trac-0.11.2.1/contrib/trac-post-commit-hook ~/var/svn/repo/hooks
そして、新たに「post-commit」<という名前で以下の内容で同ディレクトリに作成します。拡張子は無しで。
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=ja_JP.UTF-8
LOG=`svnlook log -r $REV $REPOS`
AUTHOR=`svnlook author -r $REV $REPOS`
python ${REPOS}/hooks/trac-post-commit-hook \
-p "/virtual/【アカウント】/var/trac/repo" \
-r "$REV" \
-u "$AUTHOR" \
-m "$LOG"
はい、これでとりあえず全行程終了です!おつかれさん。