2004-09-03 11:49:19 +0900 (1348d); rev 17
BitChannel のインストールと設定の手順を解説します。
まず以下のリンクから最新バージョンのパッケージを取得し、 アーカイブを展開しておきます。
バージョン 0.2 以前には XSS 脆弱性があるので公開サーバでは使わないでください。
なお CVS でアクセスすると真の最新版が入手できます。
% cvs -d :pserver:anonymous@cvs.loveruby.net:/src co bitchannel
以下を順番に構築し、bitchannelrc に設定します。
以下のようにファイルを配置してください。 この例では Apache を前提とするので .htaccess も置いています。 他のウェブサーバではそれぞれの方法で設定してください。
$cgidir/index.cgi (CGI の場合) $cgidir/index.fcgi (FastCGI の場合) $cgidir/index.rbx (mod_ruby の場合) $cgidir/bitchannelrc bitchannelrc.sample.jaをコピーして編集 $cgidir/theme/ themeディレクトリをディレクトリごとコピー $cgidir/.htaccess dot.htaccessをコピーして編集
index.cgi, index.fcgi の #! などを含め、適切に編集してください。 基本的に、このディレクトリに置くファイルは環境に合わせて編集すべきです。
なお、最新バージョンで mod_ruby を使う場合は 必ず index.rbx を使ってください。絶対に index.cgi を使ってはいけません。 (理由が気になるならソースコードを見比べてみてください。一目でわかります)
また、index.* の類は実際に使うものだけを置いておくべきです。 例えば index.cgi を使うと決めたら index.fcgi や index.rbx を置いてはいけません (※)。 その点からも、BitChannel をチェックアウトするディレクトリと cgidir は分けることをお勧めします。tDiary や Hiki のように チェックアウトしたディレクトリでそのまま CGI を動かすのは避けましょう。
※ 理由は、Apacheのコンテントネゴシエーションによって動作が変わるからです。 例えば index.* が複数ある状態で拡張子のない .../index にアクセスされると、 なぜか index.fcgi が動いてしまったりします。
BitChannel の lib/ を Ruby のロードパスに入れます。 bitchannelrc.sample.ja の設定だと CGI ディレクトリに lib/ があれば動くようになっていますが、 この設定に問題があれば書き換えてください。
ちなみにこのサーバ (i.loveruby.net) では /usr/local/lib/bitchannel 以下に BitChannel のソースをチェックアウトして、 index.fcgi で /usr/local/lib/bitchannel/lib を $LOAD_PATH に入れてます。
# bitchannelrc $LOAD_PATH.unshift '/usr/local/lib/bitchannel/lib' ....
次に、ページのデータを格納する CVS レポジトリをセットアップします。 レポジトリはどこにあっても構いませんが、 セキュリティを考えると HTTP サーバから見えないところに置くべきです。 ここではレポジトリのパスを /var/cvs/bitchannel と仮定します。 モジュール名は wikidoc とでもしておきます。
まずパッケージの pages/ 以下を元にレポジトリを作ります。 CVS レポジトリはローカルでもリモートでも構いません。
% cvs -d /var/cvs/bitchannel init % cvs -d /var/cvs/bitchannel co CVSROOT (……CVSROOT のファイルを適切に設定する……) % cd /usr/local/lib/bitchannel/pages/ % cvs -d /var/cvs/bitchannel import -m 'start repository' wikidoc local start
※ import ではなく add で追加しても構いません。 またバージョン 0.3.1 より前だと 1.1.1.1 の扱いに バグがあるので import は避けてください。
ここで注意すべきはレポジトリのパーミッションです。 cvs はなにかというとレポジトリ内にファイルを作りたがるので、 CGI 実行時の実効ユーザから書き込めないと原因不明のエラーに 悩まされることになります。最も単純な方法を挙げるなら、 レポジトリ全体を CGI の実行ユーザに所有させれば OK です。 設定を済ませてから chown -R でまとめて変えてもよいでしょう。 ちなみにここで言う「レポジトリ全体」とは CVSROOT まで含みます。
なお、レポジトリの位置は bitchannelrc に設定する必要はありません。
BitChannel が使うワーキングコピーを二つ、 レポジトリからチェックアウトします。 これを仮に wc.read/ と wc.write/ としましょう。
/var/bitchannel % cvs -d /var/cvs/bitchannel co -d wc.read wikidoc /var/bitchannel % cvs -d /var/cvs/bitchannel co -d wc.write wikidoc
wc.read/ と wc.write/ の両方を CGI の動作権限で読み書き可能かつ cvs commit 可能にしてください。 例えば CGI が httpd ユーザで動くなら、次のように設定します。
/var/bitchannel % chown -R httpd wc.*
そしてこの二つを bitchannelrc の wc_read と wc_write に設定します。
...... :wc_read => '/var/bitchannel/wc.read', :wc_write => '/var/bitchannel/wc.write', ......
なお、CVS の特性上、 リモートレポジトリを使う場合はパスワードが必要になるはずです。 CGI が動くときのユーザから commit 可能になるよう、 ENV['HOME'] と ~/.cvspass をうまく設定してください。
レポジトリもワーキングコピーも正しくパーミッションを設定したのに、 それでもパーミッションなんたらと文句を言われて動かないことがあります。 そういう場合はテンポラリディレクトリに書き込み権限がないのが原因かもしれません。
Unix なら通常はテンポラリには /tmp を使いますが、 CVS をビルドするときに環境変数 TEMP や TMP を設定していると 実行時にもそちらにアクセスしてしまうことがあります。 だから例えばビルド時に TEMP=~/tmp なんてしていると httpd 権限では書き込めないわけです。
この問題は以下のような方法で解決できます。
もっとも BitChannel で CVS にオプションを追加するには ソースコードにハードコーディングしないといけないので、 現実的には CVS をビルドしなおすか環境変数を設定するしかありません。
どこかにディレクトリを作って、 CGI の動作権限で読み書き可能にしてください。 例えば /var/bitchannel/cache に作るならこうします。
/var/bitchannel % mkdir cache /var/bitchannel % chown -R httpd cache
これを bitchannelrc の cachedir に設定します。
.... :cachedir => '/var/bitchannel/cache', ....
template/ 以下を好きな場所にまるごとコピーしてください。 ウェブサーバから見えない場所に置くのが適切です。 そのパスを bitchannelrc の templatedir に設定します。
このサーバの場合は前述のように /usr/local/lib/bitchannel/template にテンプレートがあるのでそれを設定しています。
# bitchannelrc .... :templatedir => '/usr/local/lib/bitchannel/template', ....
以下は CGI の動作権限を仮に httpd とします。 また root と書いてあるところは必ずしも root である必要はありません。 CGI の実効ユーザとは違うほうが望ましい (それで問題ない) というだけです。
-rwxr-xr-x root root /var/www/htdocs/wiki/index.cgi CGIエントリポイント -rw-r--r-- root root /var/www/htdocs/wiki/bitchannelrc 設定ファイル drwxr-xr-x root root /var/www/htdocs/wiki/theme/ テーマ(CSS) -rw-r--r-- root root /var/www/htdocs/wiki/.htaccess -rwxr--r-- root root /usr/lib/bitchannel/lib/bitchannel.rb ライブラリ drwxr-xr-x root root /usr/lib/bitchannel/lib/bitchannel/ ライブラリ drwxr-xr-x root root /usr/lib/bitchannel/template/ templatedir drwxr-xr-x httpd httpd /var/cvs/bitchannel/CVSROOT/ drwxr-xr-x httpd httpd /var/cvs/bitchannel/wikidoc/ CVSレポジトリ drwxr-xr-x httpd httpd /var/bitchannel/wc.read/ wc_read drwxr-xr-x httpd httpd /var/bitchannel/wc.write/ wc_write drwxr-xr-x httpd httpd /var/bitchannel/cache/ cachedir drwxrwxrwt root root /tmp
BitChannelConfigurations も参照してください。
Related Pages: BitChannel
system revision 1.162