0.初めに
ふと、チケット駆動開発を行いたいなぁ~と思い、数年前流行って今では中々聞かないTracが今どうなっているのか興味があったのでインストールしてみました。
Tracと言えば、Windows用のTrac Lightningが有名ですが、正直言ってプログラマーにはおすすめしません。
と言うのも、Trac Lightningはいろんなプラグインをゴテゴテに入れてしまい、正直自分では全く使わない機能が邪魔してて、一つずつ消すのが面倒なので、今回はピュアなTracのインストールして運用していく話を。
今回の話は、
Trac ver 1.0.4を元に話しております。
Tracが一番流行ったv0.1及びv0.12の情報が一番WEBにありますが、今回は最新のv1.0.4を使います。設定が違う!と嘆かないでください。(嘆いた人ノw
1.ダウンロード
Python製なので、pipでインストールが可能です。
- sudo pip install trac
これだけ。 (さすがPython!そこに惚れるw憧れるぅw)
2.Tracの環境設定&初期化
Tracで運用するプロジェクトの一式を保存するフォルダを作ります。
- mkdir Main
ひとまず僕はMainと言うフォルダを作りました。
- trac-admin ./Main initenv
trac-admin でTracのコンフィグを行うことが出来ます。
./Main は先ほど作成したディレクトリで、
initenv はそのディレクトリで初期化するよって事です。
で、コマンドを叩くと、以下のように・・・なりません。
実際は英語なので、何となく進めてください。
項目は二ヶ所。プロジェクト名とデーターベースの選択。
プロジェクト名は今回はmain
データーベースはそのままエンターでデフォルトのSQLiteを使います。 SQLite最高w
3.サーバー立ち上げ
僕はApachが大嫌いなので(僕の理解度を越えた巨大なので)、今回はせっかくPython何だから、簡易サーバーとか無いの?って思ったらTracに標準で入っていました。
- tracd --port 1121 ./Main
tracdはTracのサーバーアプリで、--portはポート番号の設定、書いてないけど--hostもあります。あとはディレクトリの宣言でおわり。
徐にブラウザを立ち上げ、疑心暗鬼に localhost:1121 にアクセスしてみてください。
すると、以下のサイトが現れ、リンクをクリックすると、
になります。
(おや?メニューが英語だぞ?とお気づきの方はすみません、後述に日本語化の方法を書いておきますのでご了承ください。)
おめでとうございます。Tracのインストールは無事に完了しました。
次はパスワード及び日本語化の話。
4.パスワードの作成
TracでのログインはBasic-loginになります。他のLogin方式にも選択出来た気がしますが、よく分からないのでパスします。
で、ここでもいろんなサイトにはApachiを使うよう書いてありますが、ここはPythonでハッシュコードを生成します。
from optparse import OptionParser
import md5
# build the options
usage = "usage: %prog [options]"
parser = OptionParser(usage=usage)
parser.add_option("-u", "--username",action="store", dest="username", type = "string",
help="the username for whom to generate a password")
parser.add_option("-p", "--password",action="store", dest="password", type = "string",
help="the password to use")
(options, args) = parser.parse_args()
# check options
if (options.username is None) or (options.password is None):
parser.error("You must supply both the username and password")
# Generate the string to enter into the htdigest file
realm = 'trac'
kd = lambda x: md5.md5(':'.join(x)).hexdigest()
str = ':'.join((options.username, realm, kd([options.username, realm, options.password])))
f = open("login","w")
f.write(str)
f.close()
公式のサンプルを少し修正し、
- python pass.py --username hoge --password hogehoge
とすると、loginと言うファイルが生成されます。
5.ログイン
さて、loginファイルが出来たので、再度サーバーを立ち上げます。
- tracd --port 1121 --auth=*,login,trac ./Main
見ての通り、--authが追加されてます。
--auth は、--auth= ,, って所かな。
公式はまた違った名前でかかれていますが、僕のイメージ的なこうです。
これで起動すると、無事に行けばチケットの作成タブが増えます。
6.日本語化
TracはSubversionを使っているので、まずは先にそれを入れておく。
- sudo apt-get install Subversion
とかとかで入れて、
- svn checkout http://svn.edgewall.org/repos/trac/trunk trac-1.0dev
で、ファイルをダウンロードし、
-
easy_install Babel
-
python setup.py extract_messages
-
python setup.py update_catalog
-
python setup.py install
でインストールします。
そして、再度Tracdを起動すると、メニューが少し日本語になったかと思います。
7.最後に
Tracについて知っているかたは、今では少ないと思いますので、
http://ja.wikipedia.org/wiki/Trac
や、少し古いですが
http://itpro.nikkeibp.co.jp/article/COLUMN/20080414/298973/
をご覧いただければ様子がつかめるかも
(正直、Tracやチケット駆動に関して流行った時期が2010年あたりからなので、今ではもっと良い物があるかもしれません。また、Tracも2012年にVer1.0になり、今はVer1.0.4です。)
僕は、Tracを採用した理由は Python製だからぁぁぁぁ~!! ですw
8.裏技テク?
もし、バックアップが必要な再は、trac-adminで指定したディレクトリー一式を丸まるコピーすれば良い。これが素晴らしい。
さらに、dbディレクトリに生のSQLiteがあるから、これさえあれば、再構築だって出来る。素晴らしい。
また、複数のプロジェクトがある時は、trac-adminで新規作成か既存のファイルをコピーし、
tracd --host $HOST --port $PORT --auth=,login,trac ./$Project1
--auth=,login,trac ./$Project2 \
なスクリプトを作ればOK。素晴らしい。
TracはPython製のなので、きっとまだまだ裏技があると思われます。
サーバーにかんしても、uwsgiで動いているからアレコレできるんじゃないかなぁ~ ふっふっふw
駄文で失礼。w