概要
簡単なメッセージを書き込みできるBBSです。
かなり簡単なアプリケーションの例になっており、
小さなアプリケーションを作成するときの雛形に適しています。
CSV/タブ区切りファイルからの挿入、
CSV/タブ区切りファイルへの書き出し、検索、フォームからの書き込みなど、
本システムの基本的な機能を利用しています。
動作環境
インストールの手順
- 簡易版BBS に関連するファイルを samples/bbs 以外のディレクトリに
置きたい場合は、samples/bbs ディレクトリを適当な位置にコピーします。
ここでは、basedir にコピーしたものとします。
$ cp -r .../samples/bbs basedir
- basedir/Makefile を編集します。
最低限、以下の項目の変更を行う必要があります
(環境によっては他に変更が必要な項目があります):
- 構成定義ファイル basedir/base.conf を編集します。
最低限、以下の項目の変更を行う必要があります
(環境によっては他に変更が必要な項目があります):
- $base->{conffile}
- $base->{nph}
- $base->{suexec}
- $base->{group}{staff}{template_cgitodir}
- データ定義ファイル basedir/data.conf を編集します。
最低限、以下の項目の変更を行う必要があります
(環境によっては他に変更が必要な項目があります):
- $self->{global}{basedir}
- $base->{global}{baseuri}
- $base->{global}{mailfrom}
- $base->{global}{mailto}
- 設定が終わったら、basedir で 'make', 'make install' を実行します。
問い合わせには、全て 'yes' と答えます。
この作業は、必要なディレクトリを作成するために、
最初に行わなければいけません。
$ make
$ make install
エラーが出れば、該当するファイルを修正してください。
- basedir で 'make test' を実行し、エラーがないことを確かめます。
$ make test
エラーがあれば、ファイルを修正して、
再び 'make install', 'make test' を実行してください。
この作業を、エラーが出なくなるまで繰り返します。
- 次のように、PostgreSQL ユーザ dbipg とデータベース dbipg_bbs を作成します
(PostgreSQL がインストールされていなければ、
インストールをしてください)。
$ createuser dbipg
$ createdb dbipg_bbs -E EUC_JP
$ psql -U dbipg dbipg_bbs
=> alter user dbipg password 'dbipg_passwd';
PosgreSQLユーザとデータベースの作成方法は、
PostgreSQL のマニュアルをご覧ください。
PostgreSQL ユーザやパスワードは、
データ定義ファイルの $self->{global}{db} で変更できます。
また、データベース名は複数箇所で設定されていますので、
変更する場合は、grep などを利用して対応する箇所を変更してください。
- 'make sql' を実行して、必要なテーブルを作成するための SQL文を用意します。
また、その際に出力されるメッセージに従ってテーブルを作成します。
$ make sql
$ psql -f create.sql -U dbipg dbipg_bbs
- ブラウザからCGIを呼び出し、正常に動作することを確認します。
簡易版BBSの特徴
- データの所有者をパスワードによって管理します。
データの挿入時にパスワードの入力を促し、
データの修正や削除を行う場合にパスワードの照合をします。
- ある程度実用的に作られていますので、
そのまま簡易版BBSとして利用することもできます。
- タグを利用して、タイトルやメッセージ等を装飾することはできません。
(しかし、定義ファイル・テンプレートファイルを改変すれば、
タグを利用することが可能です。)
補足
- このサンプルを雛形にして、
パスワードによる管理を行わないアプリケーションを作る場合は、
$self->{__search_detail}{hook_revise}, $self->{__remove_data}{hook},
$self->{deny}{data_verify_check}, $self->{deny}{data_insert} を
undef にしてください。
- CSV/タブ区切りファイルへ出力するときにパスワードが漏れないように、
パスワードのMD5メッセージ・ダイジェストを計算して、格納します。
- 事務局用と一般用でインターフェイスを分けたい場合や、
データベースを利用してユーザを管理したい場合は、
履歴書 のサンプルをご覧ください。