alix上にDebian lennyをインストールした環境に、 subversionとバグトラッキングシステム(BTS)のTracを導入してみました。
Lennyの導入
このブログの記事: Lennyをインストールしてみると debianをsubversionサーバーにするに、おおまかな方法を掲載しています。 CFカードにDebian環境を作るところは、情報が分散しているから改めてまとめないとだなぁ。
この記事ではLennyがalix上で動作しているところから始めてtracを導入してみます。
tracパッケージの導入
$ sudo apt-get install trac libapache2-mod-python
関連するパッケージがどこに配置されているかは、dpkg -L tracで調べることができます。
trac関連のセットアップ
trac用のファイルはどこに配置するのか、明確に決まったところはありません。 パッケージの管理下にないファイルは、環境に合せて適宜変換してください。
専用ディレクトリの準備
自分のアプリケーション専用ディレクトリとして、"/app"を準備しています。 この下に"trac"用のディレクトリを作成する事にしました。
$ sudo mkdir -p /app/trac/projects $ sudo mkdir /app/trac/.egg-cache $ sudo chown www-data:www-data /app/trac/.egg-cache /app/trac/projects
tracではapacheのBASIC認証で渡されたユーザーIDをtracの利用者IDとして受け入れます。 "admin"を管理者用IDとして、"user01"を一般ユーザーとして準備しておきます。
$ sudo touch /app/trac/.htpasswd $ sudo htpasswd /app/trac/.htpasswd admin $ sudo htpasswd /app/trac/.htpasswd user01 $ sudo chgrp www-data /app/trac/.htpasswd $ sudo chown 640 /app/trac/.htpasswd
そういえば例としてhtpasswdを使う時は、だいたい新規に1つのIDを登録するので -c オプションを一緒に書くのではないでしょうか。 もちろん、それまでのファイルの内容は消えてしまうので、 -c オプションは本番環境では使い物になりません。 バックアップを常に取る習慣をつけることと、そういう危険な作業から身を遠ざけるスキルを身につけたいものです。
apache関連の設定
$ cd /etc/apache2/sites-available $ sudo vi trac
"trac"ファイルは以下のような内容にします。 今回はサーバーのIPアドレスを"192.168.10.10"にしているので、先頭2行に書かれたIPを環境に合せて変更してください。
<VirtualHost 192.168.10.10:80>
ServerName 192.168.10.10
DocumentRoot /var/www
<Directory "/var/www">
SetHandler None
Options All
Order deny,allow
Deny from none
Allow from all
</Directory>
<Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /app/trac/projects
PythonOption TracUriRoot /trac
PythonOption PYTHON_EGG_CACHE /app/trac/.egg-cache
</Location>
<locationMatch "/trac/[[:alnum:]]+/login">
AuthType Basic
AuthName "trac"
AuthUserFile /app/trac/.htpasswd
Require valid-user
</locationMatch>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
最後にapacheで設定を有効にするために、"site-enabled"に反映させます。
$ sudo /usr/sbin/a2ensite trac
設定の確認方法
apacheをリスタートして、実際にアクセスしてみます。
$ sudo /etc/init.d/apache2 restart
続いてブラウザを使ってアクセスしてみます。 まだプロジェクトの設定をしていないので、タイトルだけが表示されます。
Available Projects
とりあえず使うまでの手続き
Tracは基本的にプロジェクト毎に設定が必要で、複数のプロジェクトを便利に管理する方法はないようです。 そのためプロジェクトを作成してから、ユーザー権限やプラグインの設定が必要になります。
Tracプロジェクトの作成
稼働確認をするための"testproj01"を作成します。
$ sudo -u www-data trac-admin /app/trac/projects/testproj01 initenv
Creating a new Trac environment at /app/trac/projects/testproj01
...
Project Name [My Project]> Test Projects
...
Database connection string [sqlite:db/trac.db]>
...
Repository type [svn]>
...
Path to repository [/path/to/repos]> /var/lib/svn/testproj01
...
Congratulations!
SVNリポジトリの準備
svnのリポジトリの場所は実際に存在する場所にしてください。 もしまだ準備していなければ適当な場所にcdしてから、次のコマンドでディレクトリを準備します。
$ sudo svnadmin create testproj01
テストプロジェクトを使った確認
Webブラウザを開いて、 先ほどと同じようにアクセスしてみます。
先ほどは表われなかったプロジェクト名が表示されれば、成功です。
ユーザー権限の修正
現時点でのユーザー権限を確認しておきます。
$ sudo -u www-data trac-admin /app/trac/projects/testproj01 Trac [/app/trac/projects/testproj01]> permission list
User Action ------------------------------ anonymous BROWSER_VIEW anonymous CHANGESET_VIEW anonymous FILE_VIEW anonymous LOG_VIEW anonymous MILESTONE_VIEW anonymous REPORT_SQL_VIEW anonymous REPORT_VIEW anonymous ROADMAP_VIEW anonymous SEARCH_VIEW anonymous TICKET_VIEW anonymous TIMELINE_VIEW anonymous WIKI_VIEW authenticated TICKET_CREATE authenticated TICKET_MODIFY authenticated WIKI_CREATE authenticated WIKI_MODIFY
今回はあらかじめ"admin"と"user01"のユーザーIDを作成していますので、 "admin"には管理者権限を追加します。user01はそのままにして、"authenticated"ユーザーの権限で動かします。
Trac [/app/trac/projects/testproj01]> permission add admin TRAC_ADMIN
これで"admin"ユーザーでログインすると、 Admin タブが表示され選択可能になります。 この後はプラグインを加えていきます。
プラグインの追加方法
あると便利なプラグインがいくつかありますが、今回のようにパッケージでTracを導入している場合は、 導入先が問題になりそうです。そういう事を考えないのが普通そうですけどね。
"easy_install"を使って本来はパッケージで管理されているシステムディレクトリに導入するのは、 少し嫌だったので別ディレクトリに導入するようにしてみました。 このために設定の追加が必要になります。
この別ディレクトリとして /app/trac/lib を作成します。
$ sudo mkdir /app/trac/lib/lib/python2.5/site-packages
今回はちょっとだけ手数の多い MasterTicketsPlugin を導入してみます。 マニュアルは配布元の tracHacks::MasterTicketsPluginにあります。
まずはgraphvizを追加で導入します。
$ sudo apt-get install graphviz
配布元からパッケージをダウンロードして、サーバー上で展開します。
$ unzip masterticketsplugin-r7356.zip $ cd masterticketsplugin/0.11 $ chmod -R a+rX . $ python setup.py bdist_egg $ cd dist $ sudo env PYTHONPATH=/app/trac/lib/lib/python2.5/site-packages easy_install --prefix=/app/trac/lib TracMasterTickets-2.1.3-py2.5.egg
Creating /app/trac/lib/lib/python2.5/site-packages/site.py
Processing TracMasterTickets-2.1.3-py2.5.egg
Copying TracMasterTickets-2.1.3-py2.5.egg to /app/trac/lib/lib/python2.5/site-packages
Adding TracMasterTickets 2.1.3 to easy-install.pth file
Installed /app/trac/lib/lib/python2.5/site-packages/TracMasterTickets-2.1.3-py2.5.egg
Processing dependencies for TracMasterTickets==2.1.3
Finished processing dependencies for TracMasterTickets==2.1.3
このままでは mod_python が必要なパッケージを見つけられないので、 apacheの envvars に PYTHONPATH を追加してライブラリを探す時のパスに追加します。
...
export PYTHONPATH=/app/trac/lib/lib/python2.5/site-packages
trac.ini ファイルを編集して必要な設定をファイルの最後に追加します。
$ sudo vi /app/trac/projects/testproj01/conf/trac.ini
[components] mastertickets.* = enabled [ticket-custom] blocking = text blocking.label = Blocking blockedby = text blockedby.label = Blocked By
最後に upgrade しておきます。
$ sudo env PYTHONPATH=/app/trac/lib/lib/python2.5/site-packages trac-admin /app/trac/projects/testproj01 upgrade
これで mod_python から導入したパッケージが認識できるはずです。 ここまでの設定が終ってからapacheのプロセスをリスタートします。
$ sudo /etc/init.d/apache2 restart
再び admin ユーザーでログインしてから、AdminタブのPluginsを開くと TracMasterTickets のセクションが表われます。
また新規のチケットを開く時にBlocking, Blocked Byを入力するフィールドが追加されているため、ここに数字を入れて親子関係を定義する事ができるようになります。
うまく動かないときのデバッグ方法
apacheの設定ファイルの中で、ErrorLogで指定した場所にエラーログが出力されます。 VirtualHostを再定義しているため、/etc/apache2/sites-enabled/000-defaultは無視されます。 Log関連以外で必要な設定があれば、コピーしておきましょう。
Tracレベルのエラーメッセージは"Admin"タブの"Logging"セクションで設定します。 確認のためには DEBUG レベルのメッセージを出力すると良いと思いますが、 本番環境では WARNING 以上に設定するなどログサイズに気をつけましょう。
syslogにログを出力すれば、/etc/syslogd.conf or /etc/rsyslog.confの設定によりますが、基本的には/var/log以下のファイルに書き込まれます。
まとめ + 今後の展望
今回はTrancendの2GB x266なCFカードに入れたまっさらなDebian LennyにTracをパッケージから入れてみました。 もしソースからtracを/opt以下などに入れても、envvarsの編集を前倒しで行なうぐらいで動くはずです。
まだsubversionと連携させるための設定が終っていませんが、 これは定型的な作業なので他のサイトに書かれている以上の作業はないと思います。
ただしsubversionのpost-commitをいじるので、スクリプトが正常に動作するまではテスト用のプロジェクトで手順を確立するようにしましょう。
0 件のコメント:
コメントを投稿