= さくらインターネットにTracを構築する = == 1.説明 == さくらインターネットにTracを構築します。ライトプランだとTelnetが使えないので、スタンダードプラン以上が必要です。[[BR]]今回の例では、~/local/配下に構築します。svnのリポジトリは~/var/svn/repo、TracEnvは~/var/trac/repoとします。[[BR]]基本的に、いかに書いてあるコマンドをそのまま実行すればよい(一部変更必要)ですが、[[BR]]若干スクリプトの変更等が必要なので、viを使える程度の知識が必要です。[[BR]]なお、以下のコマンドは、tcsh(デフォルト)で実行することを前提としています。[[BR]] == 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では動かないらしいが未確認。[[BR]]ダウンロード先は、日本のミラーサーバを指定します。[[BR]] {{{ 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を見つけてくれない。[[BR]] {{{ 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では何故かうまく動かなかった。 [http://atty.skr.jp/sakura_log.html atty.skr.jp] さんを参考に3.2.1を使う。[[BR]] {{{ 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では動かなかった。 [http://atty.skr.jp/sakura_log.html 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を使う。[[BR]]pythonモジュールは、gmakeではインストールされないので、python setup.pyが必要。[[BR]] {{{ 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 === エラーが出ているので、うまく行ってないかも。[[BR]]ダウンロード先は、日本のミラーサーバを指定します。[[BR]] {{{ 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 === [http://www.i-act.co.jp/project/products/products.html trac-0.9.5-ja-1]を使用します。なお、既に0.9.4をインストールしてある人は、#75を参照して0.9.5にUpgradeしましょう。[[BR]] {{{ 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 }}} [[BR]] == 3.動くまでの設定 == {{{ }}} === (1) subversionのリポジトリを作成 === {{{ #sudo chmod 777 /var #mkdir /var/svn mkdir -p $HOME/var/svn svnadmin create --fs-type=fsfs $HOME/var/svn/repo }}} リポジトリ内にフォルダを作る。[[BR]] {{{ 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という形で全部入力すること。[[BR]] {{{ %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]> }}} [[BR]] === (3) trac.cgiの作成 === まず、$HOME/www/trac.cgiをtrac_.cgiという名前に変更します。[[BR]] {{{ mv $HOME/www/trac.cgi $HOME/www/trac_.cgi }}} CGIに環境変数を渡すために、新たな$HOME/www/trac.cgiを作成します。 ブラウザからリクエストがくると、これがまず呼ばれることになります。[[BR]]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に以下を記載[[BR]] {{{ RewriteEngine On RewriteBase / RewriteRule ^$ /trac/ [R=301,L] RewriteRule ^/trac/(.*)$ /trac.cgi/$1 [L] }}} これで書いているのは以下の2つ[[BR]] * !http://xxx.sakura.ne.jp/ というような、サーバ直指定のURLの場合に、/trac/というURLに移動する。 * !http://xxx.sakura.ne.jp/trac/hogehoge というようなURLの場合に、/trac.cgi/hogehoge を内部で(ブラウザに見せずに)呼び出す。 ブラウザでURLを開いて、Tracが見えるか確認してください。[[BR]]なお、Tracのリンクも自動的に/trac.cgi/から/trac/に変更されます。何故かは不明。[[BR]] === (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は、さくらインターネットのアカウント名を入れること[[BR]] {{{ [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というリンクが出来ています。これをクリックして、アカウントを作成してください。[[BR]] 必要なアカウントを作成したら、他の人がアカウントを勝手に作成できないようにします。(4)で編集したtrac.iniを再編集。[[BR]] {{{ [components] trac.web.auth.LoginModule = disabled acct_mgr.web_ui.LoginModule = enabled acct_mgr.web_ui.registrationmodule = disabled }}} パーミッションを設定します。trac-adminを起動します。[[BR]] {{{ trac-admin $HOME/var/trac/repo }}} とりあえずは、いたずらされないように自分(XXX)は全て可能とし、自分以外は参照のみ可能とします。[[BR]]必要に応じて変更してください。[[BR]] {{{ 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を使って接続する == 参考:[[BR]] === (1) ToritoiseSVNをインストールする === 省略 === (2) PuTTYgenを使い鍵を作成する === [http://saikyoline.jp/weblog/archives/2005/10/subversion_2.html SaikyoLine.jp] さんを参照。[[BR]] 1. Windowsで実施します。 1. [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY Download Page] よりputtygen.exeをダウンロードしてください。 1. puttygen.exeを起動して、Generateボタンを押してください(空白エリアの中でマウスを動かせと表示されます。グリグリ動かしましょう)。 1. 表示されるテキストエリア(Puglib key for pasting into OpenSSH authorized_keys file)の中身をコピーし、メモ帳でテキストファイルに保存してください。そのファイルをauthorized_keysというファイル名(拡張子な し)に変更してください。 1. そのままSave private keyボタンを押して秘密鍵を適当なフォルダに適当な名前で保存してください(私は忘れないようにToritoiseSVNのインストールフォルダ/binにおきました)。 1. authorized_keysをFTPで$HOME/.ssh/に置いてください。 1. さくらインターネットにTelnetで接続して、パーミッションを変更してください。あと、.cshrcを書き換えて$HOME/local/binにPATHを通しておくことも忘れずに(2.(1)で既にやってあれば大丈夫)。[[BR]] === (3) ToritoiseSVNの設定 === [http://yebisuya.dip.jp/yeblog/archives/a000496.html ゑBLOG] さんを参照。[[BR]] 1. ToritoiseSVNの設定画面を開いてください(エクスプローラで適当なフォルダを選び右クリック→ToriseSVN→setting(または設定))。 1. 画面左のツリーからNetwork(またはネットワーク)を選び、SSHクライアント欄にTortoiseSVNのインストールディレクトリ\binにある!TortoisePlink.exeのフルパスを指定してください。引数は 「-l アカウント名」と「-i 4.(2).5で作成した秘密鍵のパス」を指定してください。[[BR]][[BR]]例:秘密鍵id_rsa.ppkを!TortoisePlink.exeと同じフォルダに置いた場合。XXXはさくらインターネットのユーザID[[BR]] === (4) つないでみる === 1. 適当なフォルダで右クリック→TortoiseSVN→RepositoryBrowser(またはリポジトリブラウザ) 1. URLを入力("svn+ssh" + "://さくらサーバのアドレス" + レポジトリの絶対パス)。[[BR]][[BR]]例:$HOME/var/svn/repoにレポジトリを作った場合。XXXはさくらインターネットのユーザID[[BR]] 1. なんかキャッシュに入れていいかというメッセージが出る。アドレスが正しければ「はい」をクリック。 1. パスワードを聞かれたら、さくらインターネットのパスワードを入力。 1. リポジトリが見えて、ツリーを開くことが出来ればOK == 5.追記 == === (1) !ImportError: No module named thread が出たら === [http://www.machu.jp/diary/20060527.html#p01 まちゅダイアリー] さん、[http://diary.atzm.org/20060507.html#p02 Today's HOGE] さんを参照。[[BR]][[BR]]trac-adminにてTracEnvを作る際に、「!ImportError:No module named thread」というエラーがでることがあるようです。[[BR]]さくらインターネットのpythonにはthreadモジュールが入っていことが原因らしいです。[[BR]]エラーが出たら、上記ページを参照して対処する必要があります。[[BR]] === (2) スパムチケット対策 === #76を参照[[BR]][[BR]] == 6.参考 == * attr.skr.jp[[BR]]http://atty.skr.jp/sakura_log.html[[BR]][[BR]] * !SaikyoLine.jp:さくらインターネットでSubversion[[BR]]http://saikyoline.jp/weblog/archives/2005/10/subversion_2.html[[BR]][[BR]] * 「さくらのレンタルサーバ」で Python 外部モジュールを使う[[BR]]http://www.emptypage.jp/notes/pymods-on-sakura.html[[BR]][[BR]] * !TachTracについて[[BR]]http://tach.arege.net/trac/wiki/TachTrac[[BR]][[BR]] * Discypus.jp/ソフト/Bug Tracking/trac/AccountManagerPlugin[[BR]]http://discypus.jp/wiki/?%A5%BD%A5%D5%A5%C8%2FBug%20Tracking%2Ftrac%2FAccountManagerPlugin[[BR]] * ゑBLOG[[BR]]http://yebisuya.dip.jp/yeblog/archives/a000496.html * まちゅダイアリー[[BR]]http://www.machu.jp/diary/20060527.html#p01[[BR]][[BR]] * Today's HOGE[[BR]]http://diary.atzm.org/20060507.html#p02[[BR]]