エックスサーバーにTracをインストールする

前回の「エックスサーバーにSubversionをインストールする」に引き続き、チケット(要求やバグ・レポートの帳票)を管理することができるTracをエックスサーバーにインストールしていきます。ブラウザに表示され、Subversionのリポジトリと連携できるまでを解説します。

(2014年6月20日追記:「Subversion+Tracにプロジェクトを作成する」への誘導等を追記しました。)

前回の記事に書きましたとおりにディレクトリが作成されており、Python、Subversion、その他のソフトウェアもその通りにインストールされていることが前提となります。(そうしないとエラーに悩まされるでしょう。経験者は語る。)

前回、今回と依存関係に悩みながらビルド&インストールしていると、パッケージ管理ツールの有難味が身に沁みます。ユーザー権限でも自分のホームの下だけでパッケージ管理ツールが使えるようにならないかしらん。

OSSの紹介

今回インストールするOSSを紹介いたします。

(2014年6月20日追記)

以降のインストールの手順において、wgetコマンドでアーカイブを取得しようとしたときに、もはやURLが変わってしまって取得できないことがあると思います。その際は以下のサイトからアーカイブのダウンロードURLを調べ、置き換えてダウンロードして下さい。

またwgetコマンドでSSLに転送され、サーバー証明書がない旨のエラーが表示されることもありました。その際はエラー表示に従って、「–no-check-certificate」オプションを指定してダウンロードして下さい。

(2014年6月20日追記:ここまで。)

EasyInstall

http://peak.telecommunity.com/DevCenter/EasyInstall

PythonのツールキットであるPEAKというプロジェクトの、EasyInstallというツールをインストールします。これによってPythonのパッケージが簡単にインストールできます。

Trac-ja

http://www.i-act.co.jp/project/products/products.html

インタアクト(株)さんの、Trac日本語化パッケージ配布ページです。Tracの特徴も簡潔にまとめられていますのでご参照ください。

本稿ではこのページより配布されているTrac-1.0.ja1をインストールします。

Trac

http://trac.edgewall.org/

Tracの本家です。このサイトからソフトウェアのダウンロードはしませんが、わからないことはこのサイトのマニュアルを参照します。

サブドメインの作成

(2014年6月20日追記:サブドメインは必須ではありませんので、必要なければ本章はスキップして下さい。)

Tracをデプロイするドメインは、独自ドメインのサブドメイン(trac.your-site.jp)にすることにしました。エックスサーバーでは、サブドメインは作成してから利用可能になるまで1時間‐2日かかるとのことですので、最初にしておきます。

サブドメインの作成方法についてはエックスサーバーさんのマニュアルの「サブドメインの作成」をご参照ください。

サブドメインを作成すると、独自ドメインのドキュメントルートにtracというディレクトリが作成され、またその中にindex.html、default_page.pngが作成されます。これらのファイルはいらないので削除します。

EasyInstallのインストール

ターミナルからSSH接続し、コマンド入力を開始します。

インストールディレクトリの指定

EasyInstallをインストールする前に、EasyInstallにインストール先のディレクトリを教えるファイル(.pydistutils.cfg)を、ホームディレクトリ(’~’)に作成します。

[user@srv ~]$ vi .pydistutils.cfg

viにて以下の内容の.pydistutils.cfgを作成します。

[install]
install_lib = /home/user/local/lib/python2.7/site-packages
install_scripts = /home/user/local/bin 

userは各位のユーザー名になります。

インストール

EasyInstallをインストールします。

[user@srv ~]$ cd tmp
[user@srv tmp]$ wget http://peak.telecommunity.com/dist/ez_setup.py
[user@srv tmp]$ python ./ez_setup.py
[user@srv tmp]$ easy_install --version
setuptools 1.3 

最後のコマンドでeasy_installが動作することを確認しました。

Tracのインストールとデプロイ

Tracをインストールして、ブラウザからアクセスできるディレクトリにデプロイします。

Tracのインストール

[user@srv tmp]$ easy_install http://www.i-act.co.jp/project/products/downloads/Trac-1.0.ja1.zip
[user@srv tmp]$ easy_install MySQL-python
[user@srv tmp]$ trac-admin --version
trac-admin 1.0.ja1

2行ではPythonからMySQLを利用するためのモジュールをインストールしていますが、TracからMySQLを利用しないのであれば必要ないと思います。

3行にてコマンドの確認をしています。

(2014年6月20日追記)subversion.pthの作成

TracがSubversionのライブラリを見つけられるようにします。

viで、~/local/lib/python2.7/site-packages/の下にsubversion.pthというファイルを作成します。

[user@srv projects]$ vi ~/local/lib/python2.7/site-packages/subversion.pth

内容は以下の一行です。

/home/user/local/lib/svn-python

(userは各位のユーザー名になります。)

確認してみましょう。

[user@srv projects]$ python -c "import svn"

何も表示されなければ、成功です。

以上でTracのインストールは完了です。

以降、Tracをデプロイして設定し、動作を確認する記事が続きますが、2014年6月20日に同内容のより実践的な記事を投稿しました。(以下の記事は「実験的」です。)

ここより「Subversion+Tracにプロジェクトを作成する」にお進みください。

尚、subversion.pthの作成も以降の設定の段階で作成しておりましたが、そちらの記事と整合を取るために、ここに移動しました。

(2014年6月20日追記ここまで。)

Tracのデプロイ

最初のプロジェクトを作成し、サイトにデプロイします。尚、このプロジェクトは後から作成するプロジェクトのテンプレートにしようと考えています。

[user@srv tmp]$ mkdir -p ~/projects/trac/
[user@srv tmp]$ cd ~/projects/trac/
[user@srv trac]$ trac-admin first-project initenv "first project" sqlite:db/trac.db
[user@srv trac]$ trac-admin first-project deploy $HOME/your-site.jp/public_html/trac
[user@srv trac]$ chmod 755 ~/your-site.jp/public_html/trac/cgi-bin/*

3行にてプロジェクトを作成しています。作成が成功すると、「Congratulations!」と表示されます。失敗した場合はfirst-projectが中途半端に残りますので、’rm –r first-project’として削除してから、失敗の原因を探します。

4行にて、「http://trac.your-site.jp/」のドキュメントルートにTracサイトをデプロイしています。4,5行のyour-site.jpは各位のドメインに読み替えてください。

表示確認

ここでローカルのWEBブラウザから「http://trac.your-site.jp/cgi-bin/trac.cgi」(サブドメインが有効になっていない場合は「http://your-site.jp/trac/cgi-bin/trac.cgi」)にアクセスします。デプロイが正しく行われていればTracの画面が表示されます。

Tracの初期表示

以上でTracサイトの表示までが確認できました。

Tracの設定

続いて、TracがSubversionのリポジトリと連携するまでの設定をします。

管理ユーザーの作成

まず管理ユーザーを作成します。エックスサーバーにはmod_auth_digestが入っているようですので、ダイジェスト認証を使います。

[user@srv trac]$ cd ..
[user@srv projects]$ htdigest -c .htpasswd trac admin-user
Adding password for admin-user in realm trac.
New password: 
Re-type new password: 
[user@srv projects]$ trac-admin trac/first-project permission add admin-user TRAC_ADMIN

1行にて.hpasswdを作成し、admin-userというユーザーを追加しています。その後4,5行でパスワードを入力しています。(admin-userは任意のユーザー名にしてください。)次にユーザーを追加するときには’-c’オプションは必要ありません。

6行にてadmin-userにtracの管理者権限を付与しています。

.htaccessの作成

次に以下のような、認証ルールを記述した.htaccessを作成し、tracのドキュメントルート(/home/user/your-site.jp/public_html/trac)にPUTします。

<IfModule mod_auth_digest.c>
AuthType Digest
AuthName "trac"
AuthDigestDomain .
AuthUserFile /home/user/projects/.htpasswd
Require valid-user
</IfModule>

5行のuserは各位のユーザー名になります。

ブラウザから、「http://trac.your-site.jp/cgi-bin/trac.cgi」にアクセスすると、ユーザー名とパスワードを聞かれるので、先ほど作成したユーザーの名前(admin-user)とパスワードを入力します。

Tracのログイン後のメインメニュー付近

するとメインメニューの上のあたりに「logged in as admin-user」と表示されます。またメインメニューの右端に「Admin」が追加されています。

WEB管理ツールでの設定

ここからWEB管理ツールで設定をしていきます。

Adinボタン

メインメニュー右端の「Admin」をクリックします。

基本設定画面

プロジェクトの基本設定を入力し、下方の「Apply changes」をクリックします。

続いて、左メニューから「Logging」をクリックします。

ログ設定画面

適当に設定して「Apply changes」をクリックします。

続いて、左メニューから「Plugins」をクリックします。

プラグイン設定画面

「Trac 1.0.ja1」をクリックします。プラグインのリストが展開します。

プラグイン設定画面展開後

ページの下方に「SubversionConnector」があるので、その右側のチェックボックスをチェックし、「Apply changes」をクリックします。

プラグイン有効化後の表示

しばらくしてページが切り替わり、ページの上部にプラグインが有効化された旨が表示されます。

チケットの設定は後からすることにして、左メニューから「Repositories」をクリックします。

リポジトリ設定画面

「Name」に適当な名前を、「Directory」には「エックスサーバーにSubversionをインストールする」にて作成したリポジトリ(/home/user/svn/repo)を指定します。そして「Add」をクリックします。

リポジトリ設定後の表示

ページが切り替わると、上部にコマンド入力とフックを設定する旨のインストラクションが表示されます。

サーバー側の設定

ここでターミナルソフトに戻り、指定のコマンドを入力しますとエラーが表示されます。原因はSubversionのライブラリが見つけられないかららしいので、まず対策をします。

(2014年6月20日追記:subversion.pthの作成は先に記しました。以下の記載は飛ばして、コマンドの入力にお進み下さい。コマンドの入力でエラーが表示された場合は、subversion.pthをご確認下さい。)

viで、~/local/lib/python2.7/site-packages/の下にsubversion.pthというファイルを作成します。

[user@srv projects]$ vi ~/local/lib/python2.7/site-packages/subversion.pth

内容は以下の一行です。

/home/user/local/lib/svn-python

(userは各位のユーザー名になります。)

そして緑のボックスの2行目にインストラクションされたコマンドを入力します。

[user@srv projects]$ trac-admin trac/first-project repository resync "first project"
Resyncing repository history for first project... 
1 revision cached.
Done.

続いて、3行目にインストラクションされているように、リポジトリにpost-commitフックを作成します。

[user@srv projects]$ cd ~/svn/repo/hooks/
[user@srv hooks]$ vi post-commit

viにて、以下の内容のファイルpost-commitを作成します。

#!/bin/sh

REPOS="$1"
REV="$2"

/home/user/local/bin/trac-admin /home/user/projects/trac/first-project changeset added $REPOS $REV

(6行のuserは各位のユーザー名になります。)

以上で基本的な設定は終了です。

動作確認

Subversionと連携していることを、ローカルから確認します。

表示確認

WEBブラウザに戻り、メインメニューの「Browse Source」をクリックします。

Tracのリポジトリ表示

リポジトリにインポートしたディレクトリが確認できます。

そしてメインメニューの「Time line」をクリックします。

タイムライン表示

ページの一番下に、インポートしたときのチェンジセットが表示されています。

フックの確認

Subversionクライアントからリポジトリを更新し、それがTracに反映されるか確認します。Subversionクライアントには、前回の記事でインストールしたTortoiseSVNを使っています。

エクスプローラーの右クリックメニュー

エクスプローラーにて、前回の記事で作成したローカルのフォルダtrunkの中に、readme.txtという空のファイルを作成します。それを右クリックして、メニューから「TortoiseSVN>追加」を選択します。

追加ダイアログ

ダイアログが開きます。「OK」をクリックします。

エクスプローラーの右クリックメニュー

次に、readme.txtかその上位のフォルダ(trunk、first-project)を右クリックし、メニューより「SVNコミット」を選択します。

コミットダイアログ

ログメッセージを入力し、「OK」をクリックします。

コミットの経過ダイアログ

ダイアログに経過が表示されます。終了したら「OK」をクリックします。

ではブラウザ側で確認してみましょう。

Tracのタイムライン

Timelineをみると、先ほどのコミットがチェンジセットとして確認できます。クリックするとコミットの内容まで確認できます。

また「Brows Source」をみると、readme.txtが追加されてRev.2になったのが確認できます。

以上でTracとSubversionを連携させることが出来ました。

まとめと課題

Tracをインストールし、Subversionと連動して動作することを確認しました。

とりあえずTracは動作しましたが、運用まではまだまだです。

前回リポジトリの中にfirst-projectというファイルを作成しましたが、post-commit hookを設定することを考えると、一プロジェクト一リポジトリが正解でしたね。

それを踏まえて次回は、Tracサイトのマルチプロジェクト対応、プロジェクトに関する設定、およびプロジェクト作成のスクリプト化をしようと思います。

コメントを残す