trac サイトを構築した時のメモ

weekbuild さんの さくらインターネットにTracを構築する を参考に、さくらインターネットtrac サイトを構築してみた。

結果はここ → http://goodspeed.xii.jp


Windows以外触ったことがないのでかなり大変だった。いくつか手間取ったのでメモしておく。

手順2.(1)

$HOME/.cshrc に以下を追加。

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

手順3.(3)

trac.cgi に実行権限を与える(744っていうのか?)。

手順3.(5)

以下のアドレスだとAccountManagerプラグインがダウンロードできないので、

wget http://trac-hacks.org/download/accountmanagerplugin.zip

リポジトリから直接チェックアウトして setup.py を叩いた。

svn co http://trac-hacks.org/svn/accountmanagerplugin/0.9

手順4.(3)

PuTTY Download Page から
A .ZIP file containing all the binaries (except PuTTYtel), and also the help files
とかかれた putty.zip をダウンロード。解凍してできた putty.exe を実行して
カテゴリ[Connection]→[SSH]→[Auth]を選択。puttygen.exe で作成した秘密鍵を指定。


カテゴリ[Session]を選択。さくらのアドレス「username.sakura.ne.jp」を指定したら適当な名前をつけて保存ボタンを押す。

手順4.(4)

TortoiseSVN1.2.6以上を使う。1.2.3だと無理だった。ここでかなりはまった。自宅は1.2.3 で、会社では 1.2.6 だったから気付くことができた。謎だ。

2006/05/31 追記
http://tortoisesvn.tigris.org/ChangeLog.txt によるとバグらしい・・・
Version 1.2.4
- BUG: TortoisePlink was unable to connect to svn+ssh. (Stefan)

リポジトリのURLは 「svn+ssh://」 + 「putty.exe で保存するときにつけた名前(上の画像だと sakura )」 + 「リポジトリのパス(手順通りなら /home/username/var/svn/repo)」を指定する。



あとついでに TracWebAdmin , TracDown , ezSuggest を入れてみた。AccountManager と同じように prefix 付きで setup.py を叩けば一応動くっぽい。
はてなとどうやって使いわけようかなあ。

ダウンロードリストを作成するプラグインをインストールしてみた

単純にあるディレクトリ以下のファイルをリストアップするだけっぽい。こんな感じ
デイリービルドでダウンロードファイルを作成すればいちいちリンクを貼らなくてもいいかな。

インストール

TracDown に書いてあるとおりなんだけど。
1. https://svn.rectang.com/tracdown からチェックアウト
2. python setup.py bdist_egg を実行
3. できた egg を $TracEnv/plugins にコピー
4. $TracEnv/conf/trac.ini に以下のように追加。ここで path は物理ディレクトリルート、url は仮想パスルート。一致していないとダウンロードできないので注意。

[components]
tracdown.* = enabled

[download]
path = /path/to/release/project
url = http://server.com/releases/project

ezSuggestPlugin を IE6 に対応してみた

これ の続き


ようやく IE6 でも入力支援ができるようになった。使い方は前と同じ。
Firefox1.5とIE6で使えるようになったのでもういいかな。ダウンロードはこちら → ezSuggestPlugin-0.2.zip

ただ問題がいくつかあって、解決できそうにない。

  1. IE6 で選択した文字列の最後が改行だと、置換したときに改行がなくなる。
    → TextRangeのせい?
  2. Firefox1.5 で改行せずに文字を入力していくとsuggest表示位置がずれる。
    → 適度に改行が必要
  3. trac.js の40行目でエラーが起きる。
    prototype.js の Object 汚染らしい。

trac.jsは

for (var p in params)
→ for (var p=0;p<params.length;p++)

とすれば回避は可能。

続きを読む

簡易suggest機能を追加するプラグインを作ってみた

あんまりsuggestしてないけど( ´ω`)
最近はtracを自分用まとめサイトとして使ったりしてるわけなんだけど、wikiページに日本語名を使っていると、wiki:ページ名 と入力しないとリンクが張られない。結構めんどくさい。
じゃあ英語名にすればいいかというとそういうわけでもなく、ページ名を覚えてないとリンクが張れない。なので wiki: とか入力するとwikiページをsuggestしたりするプラグインを作ってみた。PythonJavaScriptの勉強を兼ねてたはずなんだけど、ほとんどの機能はJavaScriptで実現していてPythonはあまり使ってない。


ここからどうぞ → ダウンロード(Avast 4.7 Home ウィルスデータベース0619-2 でチェック済み)
何もないのもあれなので、ライセンスは trac と同じで縛りの少ない修正BSDライセンスにしておく。


今のところ WinXP + firefox 1.5 でしか動かない。IE6は動作しなかった。ほかの環境は不明だけど、少なくともIE6には対応する予定。

インストール方法

  1. ダウンロードしたzipを解凍。
  2. ezSuggest-0.1-py2.3.egg を $TracEnv$/plugins にコピー。
  3. $TracEnv$/htdocs/js に prototype-1.4.0.js と ezsuggest.js をコピー。
  4. $TracEnv$/templates に site_header.cs をコピー。修正しているなら記述内容を追加してもかまわない。
  5. apahce を再起動

使い方

Wiki 編集画面内の TextArea 内で使う。

  • wiki: と入力すると wiki ページ一覧が表示される。ただし trac のデフォルトページは除く。
  • milestone: と入力すると milestone 一覧が表示される。

候補一覧が表示されているとき、

  • 文字を入力すると一覧を絞り込む。
  • 矢印上下キーで選択候補を上下する。
  • TABキーまたはEnterキーで選択候補をカーソル位置に挿入する。

基本はこんな感じ。
ついでに Ctrl + space を押すと trac の wiki 記法とかよく使うマクロが表示されるようにしてみた。FootNoteマクロ以外は trac 0.9.5なら標準で用意されているはず。カーソルを囲むやつは、文字を選択してる状態で実行すると選択文字列を囲んだ状態で入力される。

wiki
カーソル位置に wiki と入力
milestone
カーソル位置に milestone と入力
bold
ボールド。カーソルを ''' で囲む
bolditalic
ボールドイタリック。カーソルを ''''' で囲む
del
取り消し線。カーソルを ~~ で囲む
footnote
FootNote記述マクロ。カーソルを [[FootNote()]] で囲む
footnoteReference
FootNote表示マクロ。カーソル位置に [[FootNote]] と入力
image
Imageマクロ。カーソルを [[Image()]] で囲む
italic
イタリック。カーソルを '' で囲む
monospace
モノスペース。カーソルを {{{ と }}} で囲む
newline
改行。カーソル位置に [[BR]] と入力
outline1
見出し第1レベル。カーソルを = で囲む
outline2
見出し第2レベル。カーソルを == で囲む
outline3
見出し第3レベル。カーソルを === で囲む
pageoutline
アウトラインマクロ。カーソル位置に [[PageOutline]] と入力
sub
上付き文字。カーソルを ^ で囲む
sup
下付き文字。カーソルを ,, で囲む
timestamp
Timestampマクロ。カーソル位置に [[Timestamp]] と入力
underline
アンダーライン。カーソルを __ で囲む

これは ezsuggest.js の __wikiFormat で指定しているので自分で追加可能。

既知の問題とかTODOのようなもの

不具合

  • 候補一覧に長い文字列があると suggest の表示がおかしくなる → suggest を可変にすればいいけど面倒。
  • チケット編集可能だと、チケットの詳細で suggest の表示がおかしくなる → どうしよう。
  • 画面の下のほうで suggest を表示すると下のほうが見えない → 全部表示できないときは描画位置を変えればいいけど面倒。

TODO

  • IE対応。 → suggest の表示位置とか描画がおかしいのを直す。

できたらいいなというもの

  • source パスの補完
  • 添付ファイル名の補完
  • egg をコピーするだけで動くようにする

やる気のしないもの、というか多分やらない

WikiStart にTrac Hacksのようなニュースを表示する

ここ で実現しようとしてたニュースの表示の仕方がわかったのでメモ。といっても以前やってたサイドメニューの表示をちょっと変えただけでできた。環境は 0.10dev のままなので、0.9.xで動作するかは試してない。WebAdminPlugin , TracTagsPlugin , TracBlogPlugin が必要。

site_css.cs

C:\trac\prj\templates の site_css.cs を修正する。

@import url(<?cs var:chrome.href ?>/site/custome.css);

custome.css

C:\trac\prj\htdocs に custome.css を作成する。

#newsflash {
	border: solid 2px #8f8;
	width: 400px;
	float: right;
	background: #dfd;
	font-size: 0.8em;
	margin: 0em;
	padding: 0.5em 1em 0.5em 1em;
}

#newsflash h1 {
	font-size: 1.2em;
	padding: 0em;
	margin: 0em;
}

#newsflash .post hr {
	display: none;
}

WikiStart

http://localhost/prj/WikiStart を編集して先頭に以下のマクロを追加。

[[html(<div id="newsflash">)]]
[[BlogShow(blog,news,hidecal=true,num_posts=5)]]
[[BlogPost(tag=(blog,news),readonly=1,link="Post News")]]
[[html(</div>)]] 

以上で、WikiStartにニュースが表示されるようになる。


大分プロジェクトポータルっぽくなってきた。Web+DB Press でも取り上げられたことだし、今度やる新しいプロジェクトでも trac 使いたいなあ・・・

trac 0.10 dev on Windows

これの0.10dev版。
0.10 の正式版はでていないので、リポジトリからソースを取ってきてインストールした。以前の環境をクリアして最初からインストールしたのでその手順をメモしておく(apache 2.0.55 、 subversion 1.3.1 はインストール済み)。
trac のインストール部分だけ変えれば 0.9.x もこの手順で問題ないと思う。

python 2.3

まずは http://www.python.jp/Zope/download/pythonjpdist から python234jp-20040927.exe をインストール。

trac 0.10 dev

http://svn.edgewall.com/repos/trac/trunk からリビジョン 3235 をチェックアウト。
チェックアウトしたディレクトリに移動してコマンドを実行。

python ./setup.py install

clearsilver 0.9.14

http://www.clearsilver.net/downloads/ から clearsilver-0.9.14.win32-py2.3.exe をインストール。

pysqlite 2.0.5

http://initd.org/tracker/pysqlite から pysqlite-2.0.5.win32-py2.3.exe をインストール。

mod_python 3.2.8

http://httpd.apache.org/modules/python-download.cgi から mod_python-3.2.8.win32-py2.3.exe をインストール。

docutils 0.3.9

http://docutils.sourceforge.net/ から docutils-0.3.9.tar.gz をダウンロード。解凍してできたディレクトリに移動してコマンド実行。

python setup.py install

subversionpython バインディング

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 から svn-win32-1.3.1_py.zip をダウンロード。解凍してできた libsvn と svn フォルダを以下のフォルダにコピー

C:\Python23\Lib\site-packages

trac プロジェクトの作成

initenv コマンド実行。ついでにユーザに管理権限を与えておく。

python C:\Python23\scripts\trac-admin c:\trac\projectname initenv
python C:\Python23\scripts\trac-admin c:\trac\projectname permission add username TRAC_ADMIN

日本語が使えるように trac.ini の default_charset を修正。

default_charset = japanese.shift_jis

WebAdmin プラグイン ※必須じゃない

http://projects.edgewall.com/trac/wiki/TracPlugins から ez_setup.py をダウンロードしてコマンド実行。
ez_setup.py は c:\trac に置いておく。

python c:\trac\ez_setup.py

http://projects.edgewall.com/trac/wiki/WebAdmin から TracWebAdmin-0.1.1dev_r2765-py2.3.egg をダウンロードしてコマンド実行。

python c:\trac\ez_setup.py TracWebAdmin-0.1.1dev_r2765-py2.3.egg

trac.ini に設定を追加。

[components]
webadmin.* = enabled

apache の設定変更

httpd.conf に設定を追加。dav_module と dav_fs_module は既存行のコメントアウトを外しても構わない。
※ c:/trac/log ディレクトリを作成し、c:/trac/.htpasswd を用意しておくこと。

#TRAC with mod_python
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule python_module modules/mod_python.so
LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
<VirtualHost *:80>
      ServerName servername
      ServerAdmin webmaster@hoge.net
      DocumentRoot c:/trac
      ErrorLog c:/trac/log/error.log
      CustomLog c:/trac/log/access.log common
      UserDir disabled
      <LocationMatch "/[[:alnum:]]+">
          SetHandler mod_python
          PythonHandler trac.web.modpython_frontend
          PythonOption TracUriRoot /
          PythonOption TracEnvParentDir c:/trac
      </LocationMatch>
      <LocationMatch "/[[:alnum:]]+/login">
          AuthType Basic
          AuthName "trac"
          AuthUserFile c:/trac/.htpasswd
          Require valid-user
      </LocationMatch>
</VirtualHost>


以上で http://locahost/projectnametrac にアクセスできるようになる。
mod_python を使うとwikiのファイル添付に失敗する不具合は修正されているようだ。デスクトップのように、空白を含むパスも問題ない。
続いて以前試したブログ機能をインストールしてみる。

TracBlogPlugin ※必須じゃない

依存するプラグイン( TracTags )も同時にインストール。

python c:\trac\ez_setup.py TracTags-0.3.1-py2.3.egg
python c:\trac\ez_setup.py tBlog-0.2-py2.3.egg

trac.ini の trac セクションと components セクションを修正。

[trac]
default_handler = TagsWikiModule
[components]
trac.wiki.web_ui.wikimodule = disabled
tractags.* = enabled
tBlog.* = enabled

trac プロジェクトをアップグレード。

python C:\Python23\scripts\trac-admin c:\trac\projectname upgrade


0.9.4-ja-1 で起きていたカレンダーの文字化けや、ブログ表示マクロ( BlogShow )も問題ないようだ。
それにしても Trac Hacks のように表示するにはどうやればいいんだろう?

trac にブログ機能を付けてみる

Trac Blog Plugin というプラグインを見つけたので入れてみた。trac 0.10 でしかテストしてないみたいだけど、trac 0.9.4 でも動いた。インストールにかなり手間取ったのでメモ。

依存するプラグイン

  • TagsPlugin・・・以前インストールしたのは0.1で、0.3以上が必要だったので TracTags-0.3.1-py2.3.egg を使った。
  • WebAdminPlugin・・・trac のバージョンが0.9.4なので TracWebAdmin-0.1.1dev_r2765-py2.3.egg を使った。

関係ないかも知れないが、上記2つのプラグインを以下のようにインストールしないとプロジェクトが作れなくなっていた。

ez_setup.py TracWebAdmin-0.1.1dev_r2765-py2.3.egg
ez_setup.py TracTags-0.3.1-py2.3.egg

trac.ini を編集する

デフォルトの状態だと components セクションはないので以下を追加。

[components]
webadmin.* = enabled
trac.wiki.web_ui.wikimodule = disabled
tractags.* = enabled

次に trac セクションの default_handler を以下のように変更する。

[trac]
default_handler = TagsWikiModule

trac プロジェクトをアップグレードする

この状態だと trac プロジェクトにアクセスするとサーバエラーになるので trac プロジェクトをアップグレードする

python scripts\trac-admin [TracEnv] upgrade

プラグインを許可する

TRAC_ADMIN 権限を持つユーザでログインし、adminページからpluginページに移動する。そうするとプラグイン一覧に

  • tblog 0.2
  • tractags 0.3.1

というメニューができているはずなので、この2つにプラグインのコンポーネントをすべて許可する(不必要なものもあるかもしれない)。
これで trac 上部のメニューに Blog メニューが表れるはず。

ブログを表示する

あとは好きなところに

[[BlogShow]]

と記述すればブログが表示される・・・はずなんだけど trac-0.9.4-ja-1 だと

Error: Macro BlogShow(None) failed
'utf8' codec can't decode byte 0x93 in position 969: unexpected code byte

とエラーが出て表示できない。 Trac Blog Plugin のページで試してみたら表示されたので、trac 0.10じゃないと無理なのかも?

ブログに投稿する

こちらは

[[BlogPost]]

と記述すれば問題ない。日本語の投稿も大丈夫なようだ。


Trac Hacksのようにトップページにプロジェクトのニュースとして表示すると便利かも。
ただ、カレンダー部分が文字化けしていたりするので(WikiCalendarMacroを使っているから?) trac 0.10 を使ったほうがいいのかな?