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
ただ問題がいくつかあって、解決できそうにない。
- IE6 で選択した文字列の最後が改行だと、置換したときに改行がなくなる。
→ TextRangeのせい? - Firefox1.5 で改行せずに文字を入力していくとsuggest表示位置がずれる。
→ 適度に改行が必要 - 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したりするプラグインを作ってみた。PythonとJavaScriptの勉強を兼ねてたはずなんだけど、ほとんどの機能はJavaScriptで実現していてPythonはあまり使ってない。
ここからどうぞ → ダウンロード(Avast 4.7 Home ウィルスデータベース0619-2 でチェック済み)
何もないのもあれなので、ライセンスは trac と同じで縛りの少ない修正BSDライセンスにしておく。
今のところ WinXP + firefox 1.5 でしか動かない。IE6は動作しなかった。ほかの環境は不明だけど、少なくともIE6には対応する予定。
インストール方法
- ダウンロードしたzipを解凍。
- ezSuggest-0.1-py2.3.egg を $TracEnv$/plugins にコピー。
- $TracEnv$/htdocs/js に prototype-1.4.0.js と ezsuggest.js をコピー。
- $TracEnv$/templates に site_header.cs をコピー。修正しているなら記述内容を追加してもかまわない。
- 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
subversion の python バインディング
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/projectname で trac にアクセスできるようになる。
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 を使ったほうがいいのかな?