インストールが済んだ「うぇぶ会議室」は環境に合わせたセットアップが必要です。
セットアップは大きく、環境設定ファイル site.pl
の編集と
それ以外のファイル修正に分けられます。
site.pl
の設定 (必要)以上の項目について説明します。
site.pl
の設定(この項は Ver.1.5a 時点での解説です。 Ver.1.6 以降、site.pl の設定は大幅に変更されていますが、 まだ、マニュアルは改訂されていません。詳細は 「うぇぶ会議室の部屋」を 参照のこと)
site.pl
では、ペーヂ固有の情報を設定します。
カスタマイズできるのは以下の項目です。
$forumtitle
$forumroot
$forumpath
$cgiroot
$owner
$indent
$suppress
$expires
$new
$articles
$overlap
$htoz
$copy
$body
$foot
@emphasis
@title
%help
$forumtitle
の設定$forumtitle
には会議室の名称を書きます。
会議室の名称は「うぇぶ会議室」が生成する各ペーヂの Title に利用されます。
例えば、
$forumtitle = 'うぇぶ会議室';
の様に設定して下さい。
未定義の場合は 'WebForum'
が使われます。
$forumroot
の設定$forumroot には「うぇぶ会議室」のディレクトリのURLを書きます。 ここなら、
$forumroot = '/%7Enir/Forum';
です。 この変数は必ず設定する必要があります。
$cgiroot
の設定サーヴァによってはHTMLとCGIとを同じディレクトリに置けない場合があります。
(例えば、CERNサーヴァなど)
その場合、$cgiroot
には、
CGIスクリプトを置いたディレクトリのURLを書きます。
CGIディレクトリには、
全部のスクリプト(.cgi
、.pl
で終わるもの) を置きます。
CGIが本体と同じディレクトリにある場合、
設定する必要は無いです。
$forumpath
の設定$forumpath
には、
CGI実行時のカレントワーキングディレクトリ
(NCSA型のサーヴァの場合、CGIスクリプトが置いてあるディレクトリが
カレントワーキングディレクトリになります。
CERN型のサーヴァは違います)と
「うぇぶ会議室」本体とが違うディレクトリにある場合、
本体のディレクトリのパスを指定します。
パスは、カレントワーキングディレクトリからの
相対パスで指定することも出来ますが、
なるべくなら絶対パスで指定して下さい。
カレントワーキングディレクトリが「うぇぶ会議室」本体と同じ所の場合、
設定する必要は無いです。
CGIが本体と違うディレクトリにある場合の$forumroot
と
$cgiroot
、$forumpath
の関係をまとめると、
例えば、
本体 CGIスクリプト PATH /home/user/public_html/forum/ /home/user/public_html/cgi-bin/forum/ URL /%7Euser/forum/ /%7Euser/cgi-bin/forum/
だった場合、
$forumroot
、
$cgiroot
、
$forumpath
はそれぞれ、
$forumroot = '/%7Euser/forum'; $cgiroot = '/%7Euser/cgi-bin/forum'; $forumpath = '/home/user/public_html/forum';
になります。
CGI実行時のカレントワーキングディレクトリが、 CGIスクリプトと違う所にセットされている場合、 CGIスクリプトのディレクトリも設定する必要があります。 CGIディレクトリの位置設定の項を参照して下さい。
$owner
の設定$owner
には、会議室管理者のメールアドレスを入れます。
例えば、
$owner = 'nir@mxa.meshnet.or.jp';
の様に。
$indent
の設定記事一覧が
スレッドモードになっている場合に、
$indent
でインデント深さ限界を設定します。
最大で 20 まで可能です。
未定義の場合は
$indent = '3';
になります。
$suppress
の設定$suppress
を、
$suppress = 1;
の様に真に設定すると、
キャンセルされた記事が記事一覧に
表示されなくなります。
未定義、ないし、偽に設定されている時には、
キャンセル記事は表題を、
「**** 投稿者によりキャンセル
」や
「**** システム管理者によりキャンセル
」として表示されます。
$expires
の設定$expires
には、
会議室選択や、
記事一覧の情報が無効になるまでの時間を
秒数で指定します。
通常、ブラウザは、 キャッシュに残っているペーヂはなるべく再ロードしない様にして、 トラフィックの軽減を計っているのですが、 「うぇぶ会議室」の様に、リアルタイムで内容が変わる可能性のあるペーヂは、 キャッシュのデータがいつまでも有効だと、新しい記事を得られないので、 適当な時間が経ったらキャッシュの内容を無効にして、 再びペーヂを読み込むようにさせます。 通常は 10分、
$expires = 10 * 60;
ぐらいでしょう。 未定義ですと 0秒を設定したのと同じで、 キャッシュが使われず毎回読み込まれることになりますので、 投稿頻度と相談して適当な時間を設定して下さい。
$new
の設定記事一覧で、新着記事は、
記事の前に付いているアイコンが、
通常の記事アイコン
()の
代わりに、新着アイコン
()に
なっていますが、
$new
には、この、記事が新着でいる時間を秒数で指定します。
例えば、
$new = 3 * 24 * 60 * 60;
とすれば、3日間は新着アイコンでいます。 記事の投稿頻度に合わせて設定して下さい。 未定義の場合には、新着アイコンにはなりません。
$articles
の設定$articles
には、
記事一覧で、
1ペーヂに表示される記事の数を指定します。
ただし、キャンセルされた記事も数の中に入りますから、
$suppress
を真にして
キャンセル記事を非表示にしていた場合、
実際に表示される記事数は $articles
に指定した数よりも少なくなります。
通常は、
$articles = 30;
ぐらいが適当でしょう。 未定義時や 0 に設定された時は、 複数のペーヂに分けずに常に全ての記事を表示します。
$overlap
の設定$overlap
は、
$articles
を設定して
複数ペーヂ表示を有効にしている時、
前後の一覧ペーヂに重複して入る記事数を指定します。
記事一覧が スレッドモードになっている時には、 多少重複して一覧が表示される方がスレッドを追いやすいです。 ただし、重複記事数は全体の記事数の半分は超えません。 例えば、
$overlap = 5;
として、5つぐらいの記事を重複させると良いでしょう。 未定義の場合は記事の重複はありません。
$htoz
の設定$htoz
を、
$htoz = 1;
と真に設定すると、
いわゆる「半角カナ」文字を「全角カナ」文字に変換します。
ブラウザによっては「半角カナ」は扱わない様になっているものも多いので、
記事中に「半角カナ」を使う事は望ましくありません。
もし、「半角カナ」が入力されても、
$htoz
がセットされていれば変換してくれるので安心です。
未定義、または、0にセットされた時は変換は行ないません。
$copy
の設定サーヴァの種類によってはファイルのリンク処理が出来ないものもあります。 例えば、Windows-NT上のサーヴァでは通常出来ません。 その場合には、
$copy = 1;
として、リンク処理の代わりに、ファイルのコピーを使う様にして下さい。 未定義、あるいは、0にセットされた時はリンク処理を行ないます。
$body
の設定$body
には、
省略時に使われる <BODY> タグを設定します。
記事の背景パターンや背景色、文字色などを設定するのに使って下さい。
例えばここの会議室では、
$body = '<BODY BACKGROUND="/%7Enir/icons/back/bg1.gif" BGCOLOR="#FFFFF8">';
としています。 未定義の場合は、
$body = '<BODY>';
が設定されたとして扱います。
$foot
の設定$foot
には、
ペーヂの最後に加えるものを設定します。
$foot
に設定する内容が長い場合には、
perlの "here document" の機能を使うと書きやすいでしょう。
例えばここの会議室では、
$foot = <<'EOL'; <HR> <A HREF="/%7Enir/" TARGET="_top"><IMG SRC="/%7Enir/icons/arrow/m_top.gif" ALT="・" ALIGN="top" BORDER="0" WIDTH="20" HEIGHT="20"> ホームペーヂに戻る</A> EOL
として、
ホームペーヂに戻るボタンを置いています。
リンクを張る時には、この例の様に、
TARGET="_top"
として、フレーム解除するのを忘れないで下さい。
TARGET
を忘れると
同じフレームの中にリンク先のペーヂが表示されることになります。
未定義の場合には何も加えられません。
$foot
の設定の如何にかかわらず、
システム管理者のメールアドレスと最終修正日時は表示されます。
@emphasis
の設定@emphasis
は、
会議室選択ペーヂで新着記事がある時の日付表示を
強調するのに使われます。
@emphasis = ('強調始め', '強調終わり');
と指定すると、
日付欄が、'強調始め'
と'強調終わり'
とで囲んで表示されます。
例えば、
@emphasis = ('<FONT COLOR="#DD0000">', '</FONT>');
と指定すると、 新着がある部屋の日付は 紅く 表示されることになります。 未定義時は、
@emphasis = ('<EM>', '</EM>');
と指定されたものとして扱います。
@title
の設定@title
には、
会議室のディレクトリ名とタイトルを書きます。
例えば、ここの会議室は、
@title = ( 'mesh.npc', 'npc.cgiの部屋', 'mesh.forum', 'うぇぶ会議室の部屋', 'mesh.program', 'プログラム質問箱', 'mesh.open', '何でも掲示板', 'mesh.test', 'Testの部屋', );
と言う5つの部屋を設けています。 「うぇぶ会議室」に入ったときには、 最初に書いてある部屋が選択された状態になります。
%help
の設定%help
には、
会議室のあちこちで参照されるヘルプペーヂを指定します。
指定方法は、
%help = ( 'cookies', 'http://www2.meshnet.or.jp/%%7Enir/forum/faq.html#%s', 'escape', 'http://www2.meshnet.or.jp/%%7Enir/forum/faq.html#%s', '', 'http://www2.meshnet.or.jp/%%7Enir/forum/usage.html#%s', );
の様に、
キーワードとそのキーワードのためのヘルプペーヂURLとの組で指定します。
ヘルプペーヂURLの中では
"%s
" でキーワードを参照することが出来ます。
キーワードの部分が空白のヘルプペーヂは
キーワードが指定されたものにマッチしない時の省略時のペーヂとして使われます。
マッチするキーワードが無く、かつ、空白キーワードも指定されていない時は、
ヘルプアイコンは設定されません。
キーワードには、
menu
、
contents
、
article
、
post
、
cancel
、
cookies
、
escape
、
error
がありますが、
将来増えるかも知れないため、ご自分でヘルプペーヂを用意する場合でも、
省略時ペーヂは、ここのオンラインマニュアルのままにして置いた方が
良いかも知れません。
perl
コマンドの位置設定名前が.cgi
で終わるスクリプトの1行目には、
#!/usr/local/bin/perl
と、perlコマンドの位置が指定してあります。 サーヴァによっては、 上記の位置とは違う所に perl がインストールされている事もありますので、 正しく perl コマンドの位置を指定するように修正して下さい。 perl コマンドの位置はお使いのサーヴァ管理者にお問い合わせ下さい。 「うぇぶ会議室」のスクリプトは、 perl5 (Ver.5.x の perl) でも perl4 (Ver.4.x の perl) でも 動作するようになっていますから、 サーヴァで提供している perl に合わせて適切な名前を設定して下さい。
CGI
ディレクトリの位置設定サーヴァによっては、CGI実行時のカレントワーキングディレクトリが、 CGIスクリプトがあるディレクトリと別の所になっている場合があります。 例えば、代表的なサーヴァでは、CERN HTTPd がそうです。 そのようなサーヴァでは別ファイルにある共用関数群に正しくアクセスするために、 スクリプト中にCGIディレクトリの位置を設定する必要があります。
.cgi
で終わるスクリプトの最初には、
$CGIPATH = '.';
と、CGIディレクトリを設定している箇所がありますから、 これを、フルパスで、
$CGIPATH = '/home/user/public_html/cgi-bin/forum';
の様に指定し直して下さい。
Preface.html
とindex.cgi
のメッセーヂ修正Preface.html
はうぇぶ会議室に入った時に、
記事本文フレームに表示されるメッセーヂです。
会議室の紹介等を書いておくと良いでしょう。
また、<FRAME>
が扱えないブラウザの場合は、
index.cgi
の中に会議室の紹介を記述することになります。
双方に同様のメッセーヂを入れることもできますし、
<FRAME>
を扱える場合とそうでない場合とで、
メッセーヂを分ける事も出来るでしょう。
index.html
メッセーヂ修正各会議室の中にあるindex.html
は
それぞれの会議室を選択した時に最初に表示されます。
会議室の用途などを書いておくと良いでしょう。
<BODY>
タグ変更Preface.html
、各会議室の中にあるindex.html
、
CancelPoster.html
、CancelSystem.html
等の
文書の<BODY>タグを、
site.pl
の$body
設定で用いたものと一致させておくと、
見かけの統一がとれて良いと思います。
それぞれの会議室ディレクトリの中には、
投稿された記事の属性を記憶しているcontents
と言うファイルがあります。
このファイルの 1 行目には、
最初の記事番号と次に生成される記事番号、
システム管理者のキャンセルコードを暗号化したものが記憶されています。
配布ファイルの中では、
これから設定するシステム管理者のキャンセルコードは分からないので、
暗号化列の所は、'*'
の並びで潰してあります。
システム管理者は、
この「システム管理者キャンセルコード」を設定しなければならないのですが、
UNIX が使えない環境では暗号化(crypt)の処理は簡単には出来ないでしょうから、
「うぇぶ会議室」自身の暗号化ルーティンを利用して行ないます。
ここまでのセットアップの作業で、 既に投稿可能になっていると思いますので、 まず、「testの部屋」等で試験投稿します。 そして、投稿後に与えられたキャンセルコードを変更するか?と聞かれた時に、 「システム管理者キャンセルコード」として設定したいコードを入力します。 すると、今入力された「システム管理者キャンセルコード」を暗号化したものが、 最初の記事の行に設定されますから、 その暗号化文字列を最初の行に設定し直せば完了です。
例えば、
「投稿試験です」と言う記事を投稿した後のcontents
ファイルは、
00001 00002 ************* 00001 00000 E1pld5iSF65rs 1996/05/15 08:57:18 <にあ> 投稿試験です
の様になっていると思いますので、
この「E1pld5iSF65rs
」の部分を、
最初の行の'*'
で潰してある部分に上書きすれば良いです。
配布ファイルの暗号化列はDES暗号化で使われる13文字になっていますが、
システムによってはMD5等を使っていて暗号化列の長さが違うものもありますが、
試験記事の暗号化列に従って、
1行目の「システム管理者キャンセルコード」暗号化列の長さも変更して下さい。