Warning: リポジトリと同期できません (サポートされていないバージョンコントロールシステム "svn です。 Python のライブラリに "svn" が正しくインストールされているか確認してください。)

さくらインターネットにTracを構築する

1.説明

さくらインターネットにTracを構築します。ライトプランだとTelnetが使えないので、スタンダードプラン以上が必要です。
今回の例では、~/local/配下に構築します。svnのリポジトリは~/var/svn/repo、TracEnvは~/var/trac/repoとします。
基本的に、いかに書いてあるコマンドをそのまま実行すればよい(一部変更必要)ですが、
若干スクリプトの変更等が必要なので、viを使える程度の知識が必要です。
なお、以下のコマンドは、tcsh(デフォルト)で実行することを前提としています。

2.インストール

(1)環境設定

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
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

(2) swig

swig-1.3.21を使用。1.3.24では動かないらしいが未確認。
ダウンロード先は、日本のミラーサーバを指定します。

cd $HOME/local/src
wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.21.tar.gz
gunzip swig-1.3.21.tar.gz
tar xvf swig-1.3.21.tar
cd SWIG-1.3.21
./configure  --prefix=$HOME/local 
make
make runtime
make install
make install-runtime
cd ..

(3) Subversion

最後のlnコマンドをやらないと、pythonがsvnを見つけてくれない。

cd $HOME/local/src
wget http://subversion.tigris.org/downloads/subversion-1.2.3.tar.bz2
tar jxf subversion-1.2.3.tar.bz2
cd subversion-1.2.3
./configure --prefix=$HOME/local --with-neon=$HOME/local --without-berkeley-db --enable-swig-bindings=python --with-swig=$HOME/local/bin/swig --disable-static
make
make install
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
cd ..

(4) sqlite

3.3.4では何故かうまく動かなかった。 atty.skr.jp

さんを参考に3.2.1を使う。

cd $HOME/local/src
wget  http://www.sqlite.org/sqlite-3.2.1.tar.gz
gunzip sqlite-3.2.1.tar.gz
tar -xvf sqlite-3.2.1.tar
cd sqlite-3.2.1 
./configure --prefix=$HOME/local --disable-dynamic
make
make install
cd ..  

(7) pysqlite

これも、2.1.3では動かなかった。 atty.skr.jp さんを参考に1.1.7を使う。

cd $HOME/local/src
wget http://initd.org/pub/software/pysqlite/releases/1.1/1.1.7/pysqlite-1.1.7.tar.gz
gunzip pysqlite-1.1.7.tar.gz
tar -xvf pysqlite-1.1.7.tar
cd pysqlite
setenv LOCALBASE $HOME/local
python setup.py build
python setup.py install --prefix=$HOME/local

(8) clearsilver

makeがこけるので。gmakeを使う。
pythonモジュールは、gmakeではインストールされないので、python setup.pyが必要。

cd $HOME/local/src
wget http://www.clearsilver.net/downloads/clearsilver-0.9.14.tar.gz
gunzip clearsilver-0.9.14.tar.gz
tar -xvf clearsilver-0.9.14.tar
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

(9) docutils

エラーが出ているので、うまく行ってないかも。
ダウンロード先は、日本のミラーサーバを指定します。

cd $HOME/local/src
wget http://jaist.dl.sourceforge.net/sourceforge/docutils/docutils-0.4.tar.gz
gunzip docutils-0.4.tar.gz
tar -xvf docutils-0.4.tar
cd docutils-0.4
python setup.py install --home=$HOME/local

(10) trac

trac-0.9.5-ja-1を使用します。なお、既に0.9.4をインストールしてある人は、#75を参照して0.9.5にUpgradeしましょう。

cd $HOME/local/src
wget http://www.i-act.co.jp/project/products/downloads/trac-0.9.5-ja-1.zip
unzip trac-0.9.5-ja-1
cd $HOME/local/src/trac-0.9.5-ja-1
python ./setup.py install --prefix=$HOME/local
cp $HOME/local/share/trac/cgi-bin/trac.cgi $HOME/www


3.動くまでの設定

(1) subversionのリポジトリを作成

#sudo chmod 777 /var
#mkdir /var/svn
mkdir -p $HOME/var/svn
svnadmin create --fs-type=fsfs $HOME/var/svn/repo

リポジトリ内にフォルダを作る。

mkdir $HOME/tmp
cd $HOME/tmp
mkdir proj
cd proj
mkdir trunk branches tags
cd ..
svn import proj file:///$HOME/var/svn/repo -m "Import First"
rm -r proj

これで、リポジトリへのフォルダの作成はできた。

(2) trac の環境を設定

mkdir -p $HOME/var/trac
trac-admin $HOME/var/trac/repo initenv

リポジトリフォルダは~とか使わずに/home/XXXという形で全部入力すること。

%trac-admin $HOME/var/trac/repo initenv
Project Name [My Project]>
Database connection string [sqlite:db/trac.db]>
Path to repository [/var/svn/test]> /home/XXX/var/svn/repo
Templates directory [/home/weekbuild/local/share/trac/templates]>


(3) trac.cgiの作成

まず、$HOME/www/trac.cgiをtrac_.cgiという名前に変更します。

mv $HOME/www/trac.cgi $HOME/www/trac_.cgi

CGIに環境変数を渡すために、新たな$HOME/www/trac.cgiを作成します。 ブラウザからリクエストがくると、これがまず呼ばれることになります。
XXXの個所は自分のアカウント名にしてください。

#!/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

(4) URLのRewrite設定

$HOME/www/.htaccessに以下を記載

RewriteEngine On
RewriteBase /
RewriteRule ^$ /trac/ [R=301,L]
RewriteRule ^/trac/(.*)$ /trac.cgi/$1 [L]

これで書いているのは以下の2つ
* http://xxx.sakura.ne.jp/ というような、サーバ直指定のURLの場合に、/trac/というURLに移動する。

  • http://xxx.sakura.ne.jp/trac/hogehoge というようなURLの場合に、/trac.cgi/hogehoge を内部で(ブラウザに見せずに)呼び出す。

ブラウザでURLを開いて、Tracが見えるか確認してください。
なお、Tracのリンクも自動的に/trac.cgi/から/trac/に変更されます。何故かは不明。

(5) AccountManagerプラグインのインストール

http.confをいじることが出来ないので、ユーザを作成するためにAccountManager プラグインを使用します。

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 http://cheeseshop.python.org/packages/2.4/s/setuptools/setuptools-0.6a11-py2.4.egg
python ez_setup.py --prefix=$HOME/local -U setuptools
cd $HOME/local/src
wget http://trac-hacks.org/download/accountmanagerplugin.zip
unzip accountmanagerplugin.zip
cd accountmanagerplugin.zip/0.9
python setup.py install --prefix=$HOME/local

trac.ini($HOME/var/trac/repo/conf/trac.ini)を編集。XXXは、さくらインターネットのアカウント名を入れること

[account-manager]
password_format = htpasswd
password_file = /home/XXX/var/trac/repo/conf/trac.htpasswd
[components]
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled

(6) アカウントの作成

ブラウザでTracを見ると、右上にRegisterというリンクが出来ています。これをクリックして、アカウントを作成してください。

必要なアカウントを作成したら、他の人がアカウントを勝手に作成できないようにします。(4)で編集したtrac.iniを再編集。

[components]
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.web_ui.registrationmodule = disabled

パーミッションを設定します。trac-adminを起動します。

trac-admin $HOME/var/trac/repo

とりあえずは、いたずらされないように自分(XXX)は全て可能とし、自分以外は参照のみ可能とします。
必要に応じて変更してください。

permission add XXX WIKI_ADMIN
permission add XXX REPORT_ADMIN
permission add XXX TICKET_ADMIN
permission add XXX MILESTONE_ADMIN
permission remove anonymous WIKI_CREATE
permission remove anonymous WIKI_MODIFY
permission remove anonymous TICKET_CREATE
permission remove anonymous TICKET_MODIFY

4. ToritoiseSVNでsvn+sshを使って接続する

参考:

(1) ToritoiseSVNをインストールする

省略

(2) PuTTYgenを使い鍵を作成する

SaikyoLine.jp さんを参照。
1. Windowsで実施します。

  1. PuTTY Download Page よりputtygen.exeをダウンロードしてください。
  2. puttygen.exeを起動して、Generateボタンを押してください(空白エリアの中でマウスを動かせと表示されます。グリグリ動かしましょう)。
  3. 表示されるテキストエリア(Puglib key for pasting into OpenSSH authorized_keys file)の中身をコピーし、メモ帳でテキストファイルに保存してください。そのファイルをauthorized_keysというファイル名(拡張子な し)に変更してください。
  4. そのままSave private keyボタンを押して秘密鍵を適当なフォルダに適当な名前で保存してください(私は忘れないようにToritoiseSVNのインストールフォルダ/binにおきました)。
  5. authorized_keysをFTPで$HOME/.ssh/に置いてください。
  6. さくらインターネットにTelnetで接続して、パーミッションを変更してください。あと、.cshrcを書き換えて$HOME/local/binにPATHを通しておくことも忘れずに(2.(1)で既にやってあれば大丈夫)。

(3) ToritoiseSVNの設定

ゑBLOG さんを参照。
1. ToritoiseSVNの設定画面を開いてください(エクスプローラで適当なフォルダを選び右クリック→ToriseSVN→setting(または設定))。

  1. 画面左のツリーからNetwork(またはネットワーク)を選び、SSHクライアント欄にTortoiseSVNのインストールディレクトリ\binにあるTortoisePlink.exeのフルパスを指定してください。引数は 「-l アカウント名」と「-i 4.(2).5で作成した秘密鍵のパス」を指定してください。

    例:秘密鍵id_rsa.ppkをTortoisePlink.exeと同じフォルダに置いた場合。XXXはさくらインターネットのユーザID

(4) つないでみる

  1. 適当なフォルダで右クリック→TortoiseSVN→RepositoryBrowser(またはリポジトリブラウザ)
  2. URLを入力("svn+ssh" + "://さくらサーバのアドレス" + レポジトリの絶対パス)。

    例:$HOME/var/svn/repoにレポジトリを作った場合。XXXはさくらインターネットのユーザID
  3. なんかキャッシュに入れていいかというメッセージが出る。アドレスが正しければ「はい」をクリック。
  4. パスワードを聞かれたら、さくらインターネットのパスワードを入力。
  5. リポジトリが見えて、ツリーを開くことが出来ればOK

5.追記

(1) ImportError: No module named thread が出たら

まちゅダイアリー さん、Today's HOGE さんを参照。

trac-adminにてTracEnvを作る際に、「ImportError:No module named thread」というエラーがでることがあるようです。
さくらインターネットのpythonにはthreadモジュールが入っていことが原因らしいです。
エラーが出たら、上記ページを参照して対処する必要があります。

(2) スパムチケット対策

#76を参照

6.参考