B.Forum - スレッド式フォーラム

8. データの管理

8.1. アーカイブ形式

非常にディスク容量を消費する問題への対応として,アーカイブ形式のファイルを取り扱うように変更しました.
アーカイブは標準ではTAR形式になっています.(アーカイバを変更する際は,ファイルも作成し直す必要があります)
拡張子が.bfaとなっているファイルはTARで展開できます.TARで展開後,編集し,その後TARでまとめる事で内部を変更する事が出来ます.

またGZIPを使用した圧縮も可能です.圧縮を使用するとファイル容量を抑えられます.圧縮のみは不可能です.
ただし,ファイル容量を抑えてもディスク上ではセクタサイズまでは変わりないので速度が犠牲になる事を考えると,1スレッドの投稿数が多く,1スレッドのログファイルが1セクタサイズを超える場合等は有効だと思います.
また圧縮率は,元ファイルの容量が大きい程有利ですから,1スレッド1ファイルのようなフォーラムでは使わない方がいいかもしれません.
また,記事表示時は同じスレッドの記事全てを伸縮し,記事投稿時には,同じスレッドにある全てのファイルを再圧縮するのであまり多い場合も速度面で問題が出る可能性があります.
メモリも非常に多く消費する(瞬間的には一リクエストで4-5MB以上)ため,トラフィックが多く,メモリに余裕の無いサイトではエラーになる可能性もあります.

アーカイブファイルを取り扱うにはArchive::Tar(Perlモジュール),アーカイブ+圧縮ファイルを取り扱うにはさらにCompress::Zlib(Perlモジュール)がインストールされている必要があります.
また記事ファイル以外にも,BFファイルもアーカイブ形式で取り扱う事ができます.ファイル名はBF.bfaとなります.

スレッド数約15,記事数約70,セクタサイズ4kBで圧縮の有無を試したところ,消費ディスク容量が約2倍,実行速度で約1.1倍の差が出ました.

ディスク容量を節約する事が出来る反面,実行速度は低下します.マシンにもよりますが,約1.2〜1.8倍かかります.そのため,利用が頻繁なフォーラムでは,運営は通常のファイルとし,定期的に手動でアーカイブ化する事をお勧めします.

アーカイブの作成には専用のツールを付属しています.使用方法は後述の"現行記事のアーカイブ作成"を読んでください.

.bfaファイルにはパス情報が含まれていません.そのため必ずカレントディレクトリを移動してから展開し下さい.また,アーカイブ作成を直接tar等で行うとパス情報が含まれてしまい正常に動作しません.
また.bfaファイルに含まれているファイルと同じファイルが通常ファイルで置かれている場合,通常ファイルの内容が優先されます.

また.bforumrcファイルでARCHIVE_DOやCOMPRESS_DOを'N'として無効化した場合,記事投稿時に使用されませんが,.bfaファイルの読み込みは可能です.(Archive::TarやCompress:Zlibがインストールされている場合)

8.2. ファイルアップロード

B.Forum Ver1.01B-1(1.00.0056)よりファイルアップロードに対応しました.
ファイルアップロードを使用するには投稿フォーム(標準ではBF.form)を変更する必要があります.ファイルアップロード用の投稿フォームはBF.formにコメントとして記述されているので,適宜編集してください.
アップロードするファイルの数に制限はありません.アップロードするファイルの容量に制限を掛ける事が出来ます.全てのファイル共通の制限と個別制限のどちらでも指定できます.設定方法は.bforumrc中のコメントをご覧下さい.
アップロードしたファイルは
(USER_DIR)/(アカウント)/files/(スレッド)/(記事番号)
以下に,投稿フォームでname=で指定した名前のファイル名として保存されています.
なおファイルは独自フォーマットとなっています.
このファイルをダウンロード(閲覧)するにはB.Forum経由で行います.

bforum.cgi?id=(アカウント)&t=(スレッド)&m=(記事番号)&d=(ファイル名)

8.3. Namazuによる記事検索

検索エンジンのNamazuを用いると,B.Forumの記事を全文検索する事ができます.
B.ForumではこのNamazu用のインデックスを作成する機能を搭載しました.
Namazuの入手,インストールはNamazu Projectのサイト等を参照して各自で行ってください.
>> http://www.namazu.org/

なお一般ユーザでのNamazuのインストールについてウェブで方法を紹介しているのでそちらも参考にしてください.
>> http://www.beetas.org/

インストール後は動作確認を行い,単独で動作する事は最低限必要です.
なおバージョンについては2.0.*以降であれば問題なく動作すると思いますが,現行以前のバージョンではバグが見つかっていますので,動作とは別問題として必ず最新版を利用してください.なお今後もバグが見つかる可能性がありますので,Namazu Projectの情報を得て常に最新版に置き換えるよう心がけてください.なお動作確認は2.0.12(2004/2/2時点で最新版)で行っています.

次に,B.Forum側の設定を行います.まずインデックスを作成するアカウント(或いはルートファイル)の.bforumrcのMKNMZの項目に,mknmzのパスを指定します.

例:
MKNMZ /usr/local/bin/mknmz

パスは各自のインストールにより異なりますので,確認してください.またこの際に,オプションを同時に指定することも可能です.例えば,インデックスを置くディレクトリがデフォルトと異なる場合,

例:
MKNMZ /usr/local/bin/mknmz --output-dir=/var/apache/cgi-bin/index

の様に指定します.オプションについてはNamazuのドキュメントを参考にしたり,

$ mknmz --help
	


としてください.
またインデックスを作成したくないアカウントでは,.bforumrcのMKNMZの項目のコメントアウトを外し,明示的にMKNMZを無効にしてください.

例:
MKNMZ

次にB.Forum用のフィルタファイルをインストールします.配布ファイル中に含まれる,bforum.plファイルを,Namazuのfilterディレクトリへコピーしてください.
(Namazuのfilterディレクトリはmknmz -Cで表示されます)

$ cp ./NamazuFilter/bforum.pl /usr/local/share/namazu/filter/
	


その後,

$ mknmz -C
	


として対応メディアタイプの中に,

text/bforum

という項目がある事を確認してください.

この状態で,記事を投稿すると自動的にNamazuのインデックスが作成されます.
なお,OSについてはUNIX(Linux,FreeBSD等のPC-UNIX,Solaris等),WindowsNTとも一応確認していますが,WindowsはNTである必要があります.DOS系のWindowsでウェブサーバを公開している事はまず無いと思います(動作云々以前にモラルとして問題があります)が,オフラインでの動作確認等ではご注意下さい.またバグが見つかった際に変更を加えたり,仕様変更があった際にWindowsNTでの動作確認が遅れる事があります.
もし動作に問題が出た際はUNIXで試してください.(B.Forum自体が基本的にUNIXを対象としています)

なおmknmzは非常にリソースが必要なため,速度の遅いマシンだと投稿者のブラウザが一時反応待ちとなります.またNamazuの問題ではありますが,ウェブサーバの動作にメモリ資源に制限がある場合,Namazuの設定ファイルを書き換えないとメモリ不足で正しくインデックスの作成が行われないことがあります.
レンタルサーバでは注意してください.しかしほとんどの場合,1ファイルのみを対象とするためまず制限にかかる心配は無いと思います.

Namazuを使用する場合,サービスや再配布についてB.Forumのライセンスに加え,Namazuのライセンスも考慮する必要があります.詳しくはNamazuのドキュメントをご覧下さい.

8.4. 付属ツール

B.Forumを運営していく上で必要と思われるツール類を同梱しています.
簡単な説明です.なお個別の使い方については,-hオプションを付けて実行してください.

a2b.pl
アーカイブ形式,圧縮アーカイブ形式(.bfa)のログファイルを,通常ファイル形式に変換します.最新フォーマットのみ対応しています.

b2a.pl
通常ファイル形式をアーカイブ形式,圧縮アーカイブ形式(.bfa)に変換します.変換の是非は設定ファイルを参照します.またBF.*ファイル群をBF.bfaにまとめます.

b2n.pl
Namazuのインデックスを作成します.通常ファイル形式でもアーカイブ形式でも動作します.Namazu必須.

install.cgi
B.Forumのインストーラです.B.Forum自身のインストールと,ネットワーク経由によるPerlモジュールのインストールが行えます.

sort.pl
スレッドのソートに矛盾が出た際に,スレッドをソートし直します.
Copyright 2004 Sakuma,Hiroaki All Rights Reserved.
Copyright 2004 BEETAS.org All Rights Reserved.