さくらインターネットに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で実施します。
- PuTTY Download Page よりputtygen.exeをダウンロードしてください。
- puttygen.exeを起動して、Generateボタンを押してください(空白エリアの中でマウスを動かせと表示されます。グリグリ動かしましょう)。
- 表示されるテキストエリア(Puglib key for pasting into OpenSSH authorized_keys file)の中身をコピーし、メモ帳でテキストファイルに保存してください。そのファイルをauthorized_keysというファイル名(拡張子な し)に変更してください。
- そのままSave private keyボタンを押して秘密鍵を適当なフォルダに適当な名前で保存してください(私は忘れないようにToritoiseSVNのインストールフォルダ/binにおきました)。
- authorized_keysをFTPで$HOME/.ssh/に置いてください。
- さくらインターネットにTelnetで接続して、パーミッションを変更してください。あと、.cshrcを書き換えて$HOME/local/binにPATHを通しておくことも忘れずに(2.(1)で既にやってあれば大丈夫)。
(3) ToritoiseSVNの設定
ゑBLOG さんを参照。
1. ToritoiseSVNの設定画面を開いてください(エクスプローラで適当なフォルダを選び右クリック→ToriseSVN→setting(または設定))。
- 画面左のツリーからNetwork(またはネットワーク)を選び、SSHクライアント欄にTortoiseSVNのインストールディレクトリ\binにあるTortoisePlink.exeのフルパスを指定してください。引数は 「-l アカウント名」と「-i 4.(2).5で作成した秘密鍵のパス」を指定してください。
例:秘密鍵id_rsa.ppkをTortoisePlink.exeと同じフォルダに置いた場合。XXXはさくらインターネットのユーザID
(4) つないでみる
- 適当なフォルダで右クリック→TortoiseSVN→RepositoryBrowser(またはリポジトリブラウザ)
- URLを入力("svn+ssh" + "://さくらサーバのアドレス" + レポジトリの絶対パス)。
例:$HOME/var/svn/repoにレポジトリを作った場合。XXXはさくらインターネットのユーザID
- なんかキャッシュに入れていいかというメッセージが出る。アドレスが正しければ「はい」をクリック。
- パスワードを聞かれたら、さくらインターネットのパスワードを入力。
- リポジトリが見えて、ツリーを開くことが出来ればOK
5.追記
(1) ImportError: No module named thread が出たら
まちゅダイアリー さん、Today's HOGE さんを参照。
trac-adminにてTracEnvを作る際に、「ImportError:No module named thread」というエラーがでることがあるようです。
さくらインターネットのpythonにはthreadモジュールが入っていことが原因らしいです。
エラーが出たら、上記ページを参照して対処する必要があります。
(2) スパムチケット対策
#76を参照
6.参考
- attr.skr.jp
http://atty.skr.jp/sakura_log.html[[BR]][[BR]] - SaikyoLine.jp:さくらインターネットでSubversion
http://saikyoline.jp/weblog/archives/2005/10/subversion_2.html[[BR]][[BR]] - 「さくらのレンタルサーバ」で Python 外部モジュールを使う
http://www.emptypage.jp/notes/pymods-on-sakura.html[[BR]][[BR]] - TachTracについて
http://tach.arege.net/trac/wiki/TachTrac[[BR]][[BR]] - Discypus.jp/ソフト/Bug Tracking/trac/AccountManagerPlugin
http://discypus.jp/wiki/?%A5%BD%A5%D5%A5%C8%2FBug%20Tracking%2Ftrac%2FAccountManagerPlugin[[BR]] - ゑBLOG
http://yebisuya.dip.jp/yeblog/archives/a000496.html - まちゅダイアリー
http://www.machu.jp/diary/20060527.html#p01[[BR]][[BR]] - Today's HOGE
http://diary.atzm.org/20060507.html#p02[[BR]]