wiki:TracJaInstall

TracJa インストールガイド 0.12

記述内容を更新して Trac 0.12 に対応させました。Trac 0.11 対応の記述については TracJa インストールガイド 0.11 を参照ください。

このページについて

Trac & Subversion をさくらインターネットのレンタルサーバにインストールするための覚え書き。すでに同様の情報が Web には多数ありインストールの際には大変参考になったが、最新のバージョンに追従していない古い情報 (Trac 0.10 など) が多かったり、中には誤った方法や失敗のまま解決していない手順、冗長な作業などもあったりで、ところどころインストール作業につまづいたため、自分用の覚え書きとしてインストール方法をまとめる。

※ 適切でない手順や誤った記述などがあるかもしれません。お気づきの点がありましたらコンタクトページまたはチケット登録から情報をお寄せください。

参考ページ

Trac 0.12 の主な新機能

  • インターフェースの国際化 ( Babel)
    • ユーザー (ブラウザー) の使用言語で表示される
  • 1 つの Trac 環境で複数のリポジトリをサポート
  • 並べて編集モード (Wiki)
    • テキストエリアとプレビューを横に並べて表示
    • テキストエリアの内容に応じて自動的にプレビューが更新される
  • チケット
    • コメントの内容が編集可能に (自動更新されるプレビューにも対応)
    • 同梱の  TicketDeleter コンポーネントを有効にするとチケットの削除が可能
    • 各項目 (添付ファイル、コメント一覧、チケットの編集エリア) が折りたたみ可能に
  • 表関連の Wiki プロセッサ (#!th, #!td など)
    • 複数行にわたるセル内容、スタイル指定、セルの行結合、表の入れ子、セル中の Wiki 文法などの複雑な表を作成できる

インストール環境 (インストール構成)

サーバー環境

※ シェルログインで Trac などをインストールするためスタンダードプラン以上が必須。 ライトプランではインストール不可。

パッケージ構成

Trac
必須パッケージ
  •  Python 2.4 以上 3.0 未満
    • さくらのレンタルサーバは Python 2.7.2
  •  Genshi 0.6 以上
  • データベースシステム
    •  SQLite 3.x,  pysqlite 2.x
      • Python 2.5 以降は同梱されている (詳細は  PySqlite を参照)
      • さくらのレンタルサーバは Python 2.7 を使用しているためインストール不要
オプションパッケージ

ディレクトリ構成

  • /home/[username]
    • /local
      • /lib
      • /src
    • /tmp
    • /var
      • /svn/repos
      • /trac/project
    • /www

SVN リポジトリ構成

  • /home/[username]/var/svn/repos
    • /trunk
    • /branches
    • /tags

※ svn+ssh アクセス時の URL は "svn+ssh://[username].sakura.ne.jp/home/[username]/var/svn/repos/"

Web サイト構成

  • /home/[username]/www
    • trac.cgi (chmod 755)
    • _trac.cgi

※ Web ページの URL は "http://[username].sakura.ne.jp/"

インストールに向けた準備

インストール作業に入る前に確認しておく項目や行っておく作業など。

注意事項

  • ページ中の "[username]" はさくらのレンタルサーバのユーザ名 (アカウント名) を表す。各自のユーザ名 (アカウント名) に置き換えること。
  • シェルはデフォルトの csh を利用。シェルを変更している環境では適宜コマンドなどを読み替えること。
  • インストールしたコマンド (trac-admin, svnadmin など) が見つからない場合は、いったんシェルを exit してログインし直してみる。
  • さくらのレンタルサーバではパッケージ管理システム (apt, rpm, yum など) を利用した簡単なインストール方法が使えない。また root 権限がないためインストール先などを適宜調整する必要がある。そのため基本的にソースからインストールすることになる。

推奨する使用ツール

端末 (ターミナル) エミュレータ
 PuTTY,  Poderosa or  TeraTerm
FTP クライアント
 WinSCP,  FileZilla or  FFFTP
SVN クライアント
 TortoiseSVN (エクスプローラー拡張) or  Subversive ( Eclipse プラグイン)
テキストエディタ
BOM なし UTF-8 (UTF-8N) の文字コードに対応したエディタ

環境変数の設定

設定しておく環境変数は次の通り。

変数
PATH $HOME/local/bin
($PATH)
PYTHONPATH $HOME/local/lib/python/site-packages
$HOME/local/lib/svn-python

テキストエディタで .cshrc ファイルを編集して環境変数を追加する。

%vi ~/.cshrc

.cshrc ファイルに追記する内容は次の通り。

setenv PATH $HOME/local/bin:$PATH
setenv PYTHONPATH $HOME/local/lib/python/site-packages:$HOME/local/lib/svn-python

設定した環境変数を反映させるため、いったんシェルを exit して再ログインする。ログイン後に正しく環境変数が反映されていることを確認する。

%env
... (省略)
PATH=/home/[username]/local/bin: (省略)
... (省略)
PYTHONPATH=/home/[username]/local/lib/python/site-packages:/home/[username]/local/lib/svn-python

作業ディレクトリの作成

取得するソースファイルのダウンロード先および解凍先となる作業ディレクトリを作成しておく。

%mkdir -p ~/local/src

Python

さくらのレンタルサーバにインストール済み。

%python -V
Python 2.7.2

Virtual Python の作成

さくらのレンタルサーバでは Python のインストール先に admin 権限がないため、後から Python パッケージを追加するといったことができない。そこで自分のホームディレクトリ以下にローカルな Python 環境 (Virtual Python) を作成する 。

%cd ~/local/src
%wget http://peak.telecommunity.com/dist/virtual-python.py
%python virtual-python.py --prefix=~/local

インストール済みの Python のバージョンに対応する Virtual Python が構築される。上記の例では python コマンドは python2.7 を表すため Python 2.7 向けの環境が構築される。

※ 参考:作成する Virtual Python のバージョンを明示的に指定する場合は次のようにする。

%python2.7 virtual-python.py --prefix=~/local

※ 詳細は  Custom Installation Locations - Creating a "Virtual" Python を参照。

シンボリックリンクを作成する。

%ln -s ~/local/include/python2.7 ~/local/include/python
%ln -s ~/local/lib/python2.7 ~/local/lib/python

自分のホームディレクトリ以下に Virtual Python が構築されたか確認する。

%which python
/home/[username]/local/bin/python

setuptools (Easy Install)

インストールされている Python のバージョンに対応する最新の  setuptools をインストールする。

%cd ~/local/src
%wget http://peak.telecommunity.com/dist/ez_setup.py
%python ez_setup.py --prefix=~/local

setuptools にバンドルされている  Easy Install が正しくインストールされているか確認する。

%easy_install
error: No urls, filenames, or requirements specified (see --help)

easy_install コマンドが見つからない場合は ~/local/bin ディレクトリに PATH が通っていないか、インストールに失敗している。

デフォルトエンコーディングの設定

テキストエディタで sitecustomize.py ファイルを作成し、Python のデフォルトエンコーディングを utf-8 に変更する。

%vi ~/local/lib/python/site-packages/sitecustomize.py

sitecustomize.py ファイルの内容は次の通り。

import sys
sys.setdefaultencoding('utf-8')

※ 適切なデフォルトエンコーディングが設定されていない場合、テンプレートのレンダリング中に Genshi UnicodeDecodeError エラーが発生することがある。

SQLite, pysqlite

さくらのレンタルサーバは Python 2.7 を使用しているためインストール不要

Apache HTTP Server

さくらのレンタルサーバにインストール済み。

Subversion

 Subversion および依存パッケージ (subversion-deps) をソースコードからインストールする。

%cd ~/local/src
%wget http://subversion.tigris.org/downloads/subversion-1.6.16.tar.gz
%wget http://subversion.tigris.org/downloads/subversion-deps-1.6.16.tar.gz
%tar zxvf subversion-1.6.16.tar.gz
%tar zxvf subversion-deps-1.6.16.tar.gz
%cd subversion-1.6.16
%./configure --with-ssl --enable-shared --enable-static --without-serf --prefix=$HOME/local
%make
%make install
%make swig-py
%make install-swig-py

※ "make install-swig-py" の installswig-py の間にダッシュ ( - ) があることに注意。

※ 自分の環境ではエラーとならずにインストールできたが、ネットを見るとエラーが発生するという情報も。よくある対応としては以前のバージョン (1.6.13, 1.6.15 など) を試す、make (BSD make) ではなく gmake (GNU make) を使う、といった方法がある。

~/local/lib/svn-python 以下のモジュールを python が見つけられるよう ~/local/lib/python/site-packages へシンボリックリンクを作成する。

%ln -s ~/local/lib/svn-python/svn ~/local/lib/python/site-packages/svn
%ln -s ~/local/lib/svn-python/libsvn ~/local/lib/python/site-packages/libsvn

正しくインストールされているか確認する。次のコード (Subversion のバージョン表示とモジュールインポート) でエラーが発生しなければ OK。

%svn --version
svn, version 1.6.16 (r1073529)
   compiled Apr 28 2011, 02:09:17
(省略)
%python
Python 2.7.2 (default, Jan  7 2012, 16:48:29)
(省略)
>>> from svn import fs, repos, core, delta
>>> 

リポジトリの構築

SVN リポジトリを作成し、標準的なリポジトリレイアウト (trunk, branches, tags) をインポートする。

%mkdir -p ~/var/svn
%svnadmin create --fs-type=fsfs ~/var/svn/repos
%mkdir -p ~/tmp/project
%cd ~/tmp/project
%mkdir trunk branches tags
%cd ..
%svn import project file:///$HOME/var/svn/repos -m "initial import (trunk, branches, tags)"
%rm -r project

Genshi

Easy Install を利用して Trac をインストールするため  Genshiインストール作業は不要。Trac インストール時に依存関係の解決により自動的にインストールされる。

Babel

Trac 0.12 以降は  Babel を利用することでインターフェースの国際化がサポートされる。Trac のインターフェースを日本語化 (国際化) するには Trac より先に Babel をインストールする。

Easy Install を利用して Babel 0.9.5 をインストールする。

%easy_install Babel==0.9.5

※ Trac の UI が英語のままで構わない場合は Babel のインストールは不要。

Trac (Trac-ja)

Easy Install を利用して  Trac-ja をインストールする。

%easy_install http://www.i-act.co.jp/project/products/downloads/Trac-0.12.2.ja1.zip

※ 参考:Easy Install を利用せずに TracJa をインストールする場合。(TracJa インストール前に Genshi, Babel をインストールしておく)

%cd ~/local/src
%wget http://www.i-act.co.jp/project/products/downloads/Trac-0.12.2.ja1.zip
%unzip Trac-0.12.2.ja1.zip
%cd Trac-0.12.2.ja1
%python setup.py install --prefix=~/local

※ Babel がインストールされた Trac 0.12 以降では、Trac の UI はデフォルトで日本語化 (国際化) される。Trac-ja に含まれる日本語の Trac ドキュメントなどが不要な場合は、オリジナル (英語) の Trac の利用も検討することができる。Easy Install を利用してオリジナル (英語) の Trac をインストールする場合は、次のようなコマンドを実行する。

%easy_install Trac

Trac 環境の作成

trac-admin コマンドを使用して Trac Environment を新規作成する。

%mkdir -p ~/var/trac
%trac-admin ~/var/trac/project initenv
 (省略)
Project Name [My Project]> [Enter]
 (省略)
Database connection string [sqlite:db/trac.db]> [Enter]
 (省略)
Congratulations!

プロジェクト名やデータベース接続文字列を入力するためのプロンプトが表示されるが、後から設定ファイル (trac.ini) を編集して変更できるため、ここでは設定しない。未入力のまま単に [Enter] キーを押す。

※ Trac 0.12 以降は Trac Environment 作成時にソースコードリポジトリのパスを指定しないように変更された。リポジトリの設定を行うまでバージョン管理機能は無効となる。

Trac CGI の設置

Trac を動かすための CGI を Web サイトに設置する。

オリジナルの trac.cgi ファイルを www ディレクトリ以下にコピーする。 (CGI 実行時に環境変数を渡すためにファイル名を変更している)

%cd ~/www
%wget http://svn.edgewall.org/repos/trac/trunk/cgi-bin/trac.cgi -O _trac.cgi

オリジナルの trac.cgi (_trac.cgi) に環境変数を渡す CGI ファイルを作成する。

%vi trac.cgi

trac.cgi ファイルの内容は次の通り。

#!/bin/sh
home=/home/[username]
export TRAC_ENV=$home/var/trac/project
export PYTHONPATH=$home/local/lib/python/site-packages:$home/local/lib/svn-python
$home/local/bin/python $home/www/_trac.cgi

trac.cgi ファイルに実行属性を付加する。

%chmod 755 trac.cgi

Web ブラウザで http://[username].sakura.ne.jp/trac/ にアクセスする。"Welcome to Trac 0.12.2" と表示されれば OK。

http://*/trac/* でアクセスするために .htaccess ファイルを用意する必要は特にない。

Trac プラグイン

Web Admin Plugin

Trac に [管理コンソール] 画面を追加するプラグイン。Trac 0.11 以降は統合されているためインストールは不要

Trac に統合されている  Web Admin Plugin を有効にするため trac.ini ファイルを編集する。

%vi ~/var/trac/project/conf/trac.ini

trac.ini ファイルに次の内容を追加する。

[components]
webadmin.* = enabled

[管理コンソール] 画面を表示するには TRAC_ADMIN パーミッションを持つユーザが必要となるが、この段階ではまだユーザ登録できないので、暫定的に anonymous ユーザに TRAC_ADMIN パーミッションを付与して動作確認をする。

%trac-admin ~/var/trac/project permission add anonymous TRAC_ADMIN

Web ブラウザ で Trac を表示すると Wiki メニューの一番右に [管理] ボタンが追加される。[管理] ボタンを押すと管理コンソールが開く。

確認作業が終了したら anonymous ユーザから TRAC_ADMIN パーミッションを削除しておく こと。

%trac-admin ~/var/trac/project permission remove anonymous TRAC_ADMIN

Account Manager Plugin

Trac のユーザアカウントを管理するためのプラグイン。

Easy Install を利用して  Account Manager Plugin をインストールする。

%easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk

TRAC_ADMIN パーミッションを持つ admin ユーザを登録する。

%trac-admin ~/var/trac/project permission add admin TRAC_ADMIN

admin ユーザ用のパスワードファイルを生成する。

%htpasswd -c ~/var/trac/project/conf/trac.htpasswd admin
New password: 
Re-type new password: 
Adding password for user admin

Account Manager Plugin の設定を変更し admin ユーザを認識させる。

%vi ~/var/trac/project/conf/trac.ini

trac.ini ファイルに次の内容を追加する。

[account-manager]
password_format = htpasswd
password_store = HtPasswdStore
htpasswd_file = /home/[username]/var/trac/project/conf/trac.htpasswd

[components]
trac.web.auth.loginmodule = disabled
acct_mgr.admin.accountmanageradminpages = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.abstractpasswordfilestore = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled

※ TracAccountManager 0.4dev-r10396 以降のバージョンでは password_file オプション名が htpasswd_file に変更されている。( changeset:10396)

※ TracAccountManager 0.3dev-r10303 以降のバージョンではコンポーネント名が acct_mgr.admin.accountmanageradminpage から acct_mgr.admin.accountmanageradminpages (page から pages) に変更されている。( changeset:10303)

Web ブラウザで Trac を開き admin ユーザでログインする。[管理コンソール] 画面が表示できれば OK。

※ 参考:ブラウザから admin ユーザを登録する場合。シェルでの操作が苦手な人向け。

  1. IniAdminPlugin をインストールする (#IniAdminPlugin 参照)
  2. anonymous ユーザに TRAC_ADMIN パーミッションを付与する
    • %trac-admin ~/var/trac/project permission add anonymous TRAC_ADMIN
  3. Web ブラウザで Trac の [管理コンソール] 画面を開く
  4. [一般設定] - [プラグイン] を選択する
    • [Trac 0.12.2.ja1] - [LoginModule] のチェックをはずして [変更を適用] を押す
    • [IniAdmin 0.x-r?????] - [IniAdminPlugin] をチェックして [変更を適用] を押す
    • [TracAccountManager 0.xdev-r?????] の中から次のコンポーネントをチェックして [変更を適用] を押す
      • AccountManagerAdminPage
      • AccountManager
      • AbstractPasswordFileStore
      • HtPasswdStore
      • AccountModule
      • LoginModule
  5. [trac.ini] - [account-manager] を選択する
    1. [password_format] 欄に "htpasswd" と入力
    2. [password_store] 欄に "HtPasswdStore" と入力
    3. [password_file] 欄に "/home/[username]/var/trac/project/conf/trac.htpasswd" と入力
    4. 画面左下の [Apply changes] ボタンを押す
  6. [アカウント] - [ユーザ] を選択する
    • 画面右側の [アカウントの追加] 欄から登録したいアカウントを追加する
  7. [一般設定] - [権限] を開く
    1. 画面右側の [権限の付与:] 欄で、追加したアカウントに TRAC_ADMIN パーミッションを付与する
    2. 中央の表の anonymous のアクション一覧から TRAC_ADMIN をチェックし [選択した項目を削除] ボタンを押す
    3. 権限削除により [管理コンソール] 画面がエラー画面に切り替わる
      • TRAC_ADMIN パーミッションを付与したアカウントでログインする

IniAdminPlugin

trac.ini ファイルを直接編集することなく、ブラウザから Trac の各種設定を変更できるようにするプラグイン。

Easy Install を利用して  IniAdminPlugin をインストールする。

%easy_install http://trac-hacks.org/svn/iniadminplugin/0.11

※ Trac 0.12 の場合も Trac 0.11 と同じ URL (iniadminplugin/0.11) を指定する。

テキストエディタで trac.ini ファイルを編集し IniAdminPlugin を有効にする。

%vi ~/var/trac/project/conf/trac.ini

trac.ini ファイルに次の内容を追加する。

[components]
iniadmin.iniadmin.iniadminplugin = enabled

※ 参考:ブラウザから IniAdminPlugin を有効にする場合。シェルでの操作が苦手な人向け。

  1. Web ブラウザで Trac にアクセスし TRAC_ADMIN パーミッションを持つユーザでログインする
  2. [管理コンソール] 画面を開く
  3. [一般設定] - [プラグイン] を選択する
    • [IniAdmin 0.x-r?????] - [IniAdminPlugin] をチェックして [変更を適用] を押す

TortoiseSVN

TortoiseSVN をインストールする。

  1.  TortoiseSVN - Downloads より TortoiseSVN をダウンロードする
    • ページ下部に日本語の Language packs があるので必要であれば取得しておく
  2. ダウンロードしたセットアップファイルを実行し TortoiseSVN をインストールする
    • Japanese Language packs を取得した場合は、TortoiseSVN インストール後に Language packs のセットアップファイルを実行する

SSH 認証鍵

SSH 接続に使われる SSH 認証鍵を生成する。

  1.  PuTTY Download Page より PuTTYgen (puttygen.exe) をダウンロードする
    • すでに PuTTY がインストール済みの場合はダウンロード不要
  2. PuTTYgen を起動し [Generate] ボタンを押す
  3. PuTTYgen のダイアログ内の領域で自由にマウスを動かす
    • ランダムなマウスの動きが鍵生成に使われる
  4. テキストエリア (Public key for into OpenSSH authorized_keys file) の内容をコピーする
  5. テキストエディタを開き、コピーした内容を authorized_keys (拡張子なし) ファイルとして保存する
  6. [Save private key] ボタンを押し秘密鍵を任意のファイル名で保存する
    • パスフレーズ (Key passphrase) を指定することでよりセキュリティが高まるが今回の説明では指定しない
      • 警告ダイアログ (Are you sure you want to save this key without a passphrase to project it?) が表示されるが無視する
  7. PuTTYgen を終了する

生成した認証鍵ファイル (*.ppk) をサーバにアップロードする。

  1. FTP クライアントなどで ~/.ssh ディレクトリに authorized_keys ファイルを配置する
  2. ファイル属性を 600 に変更する (chmod 600)

接続の設定とテスト

TortoiseSVN から SSH 接続する。

  1. デスクトップを右クリック - [TortoiseSVN] - [設定] を選択する
  2. [ネットワーク] - [SSH] - [SSH クライアント] 欄に次の文字列を入力する
    • TortoisePlink.exe -l [username] -i [生成した認証鍵ファイル (*.ppk) のパス]
      • ファイルパスに空白が含まれる場合は引用符で括る
  3. デスクトップを右クリック - [TortoiseSVN] - [リポジトリブラウザ] を選択する
  4. URL 欄に次の文字列を入力し [OK] ボタンを押す
    • svn+ssh://[username].sakura.ne.jp/home/[username]/var/svn/repos
      • ホスト名 ([username].sakura.ne.jp) には PuTTY のセッション名を指定することもできる
  5. リポジトリブラウザが起動し SVN リポジトリの構成が表示されれば OK

トラブルシューティング

接続に失敗する場合は次の手順を試す。

  1. TortoiseSVN が利用する SSH クライアントに Plink (plink.exe or plinkw.exe) を指定する
    • TortoiseSVN がデフォルトで利用する TortoisePlink ではエラーメッセージが出力されないため
  2. TortoiseSVN から SSH 接続してエラーメッセージを確認する
    • 例:エラーメッセージが Command not found の場合の対応
      1. SVN 関連コマンド (svn, svnserve など) に PATH が通っているか
      2. authorized_keys ファイルを次のように編集する
        • command="/home/[username]/local/bin/svnserve -t" ssh-rsa (省略)

command オプションを付加すると実行されるコマンドが指定したコマンドに制限される。端末からの自動ログインなどのために鍵を利用していた場合は別途鍵を用意する必要がある。

※ 参考: AUTHORIZED_KEYS ファイルの形式