CGIスクリプト設置の手順
CGIの設置は以下の順序で行います。
より詳細な説明はキーワードをクリックすると読む事が出来ます。
必要なソフト(テキストエディタ、FTPクライアント等)は揃ってますか?
それでは、設置をしていきましょう。・必要なソフトがない場合は「Vector(http://www.vector.co.jp/)」等で入手して下さい。
- まず、使いたいスクリプトを「ダウンロード」します。
↓- CGIファイルを開いて、「初期設定」を変更します。
↓- サイトのデザインに合わせて「BODYタグ」や「スタイルシート」を変更します。
↓- FTPクライアントで「アップロード」します。
↓- 「パーミッション」の変更を行います。
↓- CGIファイルにアクセスします。
↓- 「排他制御(ファイルロック)」のエラーが出た場合、初期設定で正しく設定します。エラーが出なければそのままでOKです。
↓- 念入りに「動作確認」を行います。
↓- 「コンテンツからリンクを張り」、呼び出せるようにします。
↓- 以上で終了です。お疲れ様でした。
・運営をしていて荒しにあった場合は初期設定の「アクセス、ワード制限」を参考にして、対処して下さい。
・スパムに関しては「スパム対策について」をお読み下さい。
・「index.html」というファイルが一緒に入っているスクリプトがあります。その場合は「ダミーファイルの必要性について」をお読み下さい。
・上記以外の注意事項は「その他」に記述しています。
・設置の途中でエラーがでた場合は「エラーについて」を参考にして下さい。
・CGIに関連した専門用語は「CGI関連用語」にまとめてあります。
ダウンロードについて
各ページでZIP形式のスクリプトをダウンロードをする事が出来ます。
「旧バージョンについて」のページでは、OS 9の時に開発したLHA形式のスクリプトがダウンロード出来ます。ただし、ZIP形式とはスクリプトのバージョンが違います。
二種類になってしまったのは、OSを変更したためにLHAが出来なくなってしまったからです。(X用の圧縮ソフトを探したのですが、見つからないのです。知っている方がいらっしゃいましたら是非ご一報下さいませ)ZIP形式のスクリプトのほうがバグなどの修正や機能の追加がされているため、こちらのほうをお薦めしますが、デザインの変更がされているスクリプトもありますので、興味のある方は比べてみて下さい。
クリックすると、「dlcount.cgi」という名称のファイルがダウンロードされます。そのファイルをそのまま解凍用のソフトで解凍して下さい。自動で解凍されませんので御注意下さい。
Windowsでは「Lhasa」、Macなら「StuffIt Expander」で解凍出来ますが、解凍ソフトは何でも構いません。ファイルの解凍終了後、念のため必要なファイルが揃っているか御確認下さい。
Windowsのメモ帳では文字化けするとの報告を受けております。管理人はMacしか持っていませんので確認は出来ていませんが。その他細かな事は「エラーについて」に記載しています。
初期設定について
1行目のPerlのパス「#!/usr/local/bin/perl」はプロバイダによって異なります。指定のものに変更して下さい。
だいたい上記のものか、「#!/usr/bin/perl」が多いようですが、必ず確認をして下さい。一番上に表示されます。必ず変更して下さい。
# タイトル
$title = "タイトル";本体ファイルの名称です。変えても変えなくても大丈夫です。
# CGIファイル
$cgifile = './xxx.cgi';入力されたデータを保存するためのものです。第三者の閲覧を防ぐために拡張子を「.cgi」にしています。もしエラーが出た場合は、拡張子を「.dat」「.txt」等に変更をして下さい。
# 記録ファイル
$logfile = './xxx2.cgi';詳しい説明は下の方を見て下さい。
# bodyタグ
$body = '<body bgcolor=#ffffff text=#696969>';相対パスで記述する場合は「位置」に注意して下さい。判らない人は絶対パス(http://〜)で記述して下さい。
# 戻り先のURL
$home='./index.html';あまりに沢山のデータを保存しないようにして下さい。
# 最大記事保存数
$max = 100;1ページに表示される記事の数です。
# 最大記事表示数
$pagemax = 10;記事を削除したり書き込んだりする管理モードへ入室する為に必要なので、必ず設定して下さい。
# 管理用パス
$pass = '0123';
BODYタグについて
デフォルトでは背景色だけ設定がされてますが、背景画像を使用することも出来ます。
もし背景画像を使いたい場合は「bgcolor」を「background」に変更します。具体的に記述しますと、<body background="背景画像のURL" text="#696969">
このようになります。
使用出来る画像ファイルの種類は、拡張子が「.jpg」「.gif」等です。BMPはWindows特有のものですから出来れば使わない方が良いでしょう。
この他にもスタイルシートを使った技で、<body style="background:white url(背景画像のURL) repeat-y">
という書き方もあります。こうすると背景画像はタイルのように敷き詰めるのではなく、縦一列に背景画像が表示されます。 「white」が背景色、「repeat-y」を「repeat-x」に変えると上部横一列に背景画像が表示されます。
他にもリンクの色を指定できます。link="初期の色"、alink="カーソルがかかった時の色"、 vlink="一度以上クリックした時の色"です。text="文字色"の後に追加して下さい。
ちなみにスタイルシートでも指定出来ます。判る方はそちらで指定されても結構です。
スタイルシートについて
当サイトのスクリプトは、スタイルシートを多様しています。逆に言い換えれば、スタイルシートさえ判れば、簡単にデザインが変えられるということなのです。
「改造について」で少し説明をしていますが、基本的な事や細かな部分について触れていません。
ですので、詳しく知りたいという方は、「とほほのWWW入門」等、詳しく説明されているサイトさんがありますので、そちらの方で調べて下さい。
アップロードについて
初期設定で必要な部分を設定した後、FTPクライアント(ファイルをサーバにアップするためのソフト)でサーバにアップします。
FTPクライアントの使い方に関しては、このサイトでは一切紹介していません。ですが、初心者の方にも分かりやすく説明をしてくれているサイトは沢山あります。判らない方や自信のない方は、検索などで調べて下さい。CGIファイルは通常のファイルと設置する場所が違う場合が多いようです。例えば、「cgi-bin」という名称のフォルダを作ってそこに設置する、通常のHTMLファイルをアップするサーバとは別のCGI専用サーバへアップする等、方法はサーバによって違います。
必ずサーバの説明を読み、判らない事があれば担当者の方にメールで問合せて下さい。ただし、その前に「よくある質問」などで先に説明をされている場合もありますので、質問のメールを送る前に、必ず目を通すようにしましょう。アップする時のモードは必ずアスキーモード(テキストモード)でアップして下さい。これ以外のモードでアップするとエラーが出ます。
サーバによっては、管理画面よりファイルアップロードが出来るようですが、自動的にバイナリデータとしてアップされてしまう場合があるようです。
先に述べたように、テキストデータとしてアップしなければ、改行コードエラーが発生しますので、CGIファイルをアップロードする時は、なるべく専用ソフトをご利用下さい。
パーミッションについて
サーバによって指定されている場合があります。そちらに従って下さい。とくに指定がなければ、こちらの指定したパーミッションでお願いします。もし上手くいかなかったら、適当に調節してみて下さい。
パーミッションの数値は、縦と横の違いはありますが、簡単に言うと足し算になっています。
ソフトにより、縦に計算する場合と横に計算する場合があります。以下の表を参照にして下さい。
例えばパーミッション値を「755」に設定する場合、以下のように計算します。
Fetchの場合(横で計算する) 読み込み 書き込み 実 行 パーミッション値 オーナー 4 2 1 →7 グループ 4 2 1 →5 その他 4 2 1 →5
FFFTPの場合(縦で計算する) オーナー グループ その他 呼び出し 4 4 4 書き込み 2 2 2 実行 1 1 1 パーミッション値 ↓
7↓
5↓
5
CGIの呼び出し方について
例えば「cgi-bin」という名称のフォルダを作って、そこにファイル(bbs.cgi)を置いた場合でのCGIを呼び出し方は、
<a href="cgi-bin/bbs.cgi">掲示板</a>
こんな感じになります。これは一番上の階層から呼び出した場合です。基本的にHTMLの相対パスと同じです。
どうしても相対パスの仕組みが判らない方は、絶対パス(http://〜)で指定しましょう。そうすれば確実です。サイズを指定して別窓の出し方のサンプルソースは「こちら」にあります。必要な方は、このソースをコピーして下さい。
排他制御(ファイルロック)について
極めて稀なことですが「記録ファイルに同時にアクセスすると、記録ファイルの全データが消えてしまう」ことがあります。排他制御はこれを防止するためのものなので、出来るだけ設定して下さい。
デフォルトでは「flock関数」に設定されています。これは排他制御用の関数で一番強力なのですが、サポートしていないサーバもあります。その場合はエラーが出ますので、その時は「mkdir関数」の方に変更して下さい。mkdir関数を使用する場合は、「lock」という名称のフォルダが必要になります。まず新規フォルダを作成し、その名称をlock(パーミッションは777)に設定してから、本体ファイルと一緒にアップして下さい。ファイルロックについては、「とほほのWWW入門」さんを参照させて頂きました。それによると、ファイルロックつけてても、壊れてる時は壊れるとの事です。つまり、100%防ぐ事は出来ないらしいのです。
プロセスの異常終了など考えられる要因は多数ありますが、その全てに対応は出来ません。また、記録ファイルだけではなく、本体ファイルが破壊される事もあります。
ですので、バックアップを取ることを習慣付けて下さい。排他制御のソースについてはこちらの「とむねこのページ」さんのWeb&Mail&Mac講座に詳しく載っています。排他制御のソースについてもっと知りたい方にお薦めです。
動作確認について
設置が出来たら、次は動作確認をしましょう。
当サイトのスクリプトは全てのサーバに対応しているわけではありません。設置出来たとしても、実際動かしてみるとバグやエラーが発生することもありますので、記事の投稿、修正、削除等、一通り試してみて下さい。Windowsサーバでは、当サイトのスクリプトは上手く動かないようです。あと、そのサーバ特有の規制などもありますので、御利用になるサーバの仕様をよくお読み下さい。
なお、サーバによるバグやエラーに対しては完全に対処する事は出来ません。Perl5だとだいたい上手く動くと思いますが、これは絶対ではありません。ご了承下さい。
アクセス、ワード制限について
掲示板に相応しくない書き込みや、不快な語句を制限するためにある機能です。「荒らし」対策としてつけています。
「荒らし」にあった場合は一切相手をせず、ログを証拠として残しておいてから書込みを削除します。他の方にも、いちいち相手をしないようにそれとなくお願いをしておきましょう。荒らしがよく使う語句を、禁止の語句として設定しておくのも良いでしょう。それでもまだ書込みがある場合は、きちんとログを残しておいてアクセスを制限します。ここで相手が引き下がってくれれば良いのですが、逆にエスカレートする場合もあります。何度も嫌がらせのメールを送ってきたり、最悪の場合、アタックをかけてきたりします。
その場合は、相手のプロバイダーを調べて(サーバによっては、負荷を軽減するため、ホスト名が取得出来ない場合があります。その時は、IPからホスト名を調べるソフトを使って下さい。アクセス解析を設置して、照らし合わせるのも良いでしょう)、証拠のログを添えて、相手のプロバイダーに通報しましょう。
index.html(ダミーファイル)の必要性について
仮に、CGI関連のファイルを「cgi-bin」にまとめてあるとします。で、「http://www〜/cgi-bin/」にアクセスすると、そのディレクトリにあるファイルのリストが表示されてる場合があるようです。これはあまり良い事ではありません。何故なら、記録ファイルを閲覧、ダウンロード出来るからです。
もしリストが表示されてしまう場合は、「index.html」という名称のファイルを作成し(中身は適当なもので構いません。アクセス出来ませんと書いておいてもいいかもしれませんね)、アップして下さい。それでこの問題は回避出来ます。一度確かめてみて下さい。
スパム対策について
スパムに対してホスト制限はかけてもあまり意味はありません。ホストを変えて書き込みをしてくるからです。ちなみにワード制限も効果は薄いでしょう。
infoseek等の外部からCGIを呼び出せないサーバなら自動書き込みのスパムを制限出来ますが、そうでないサーバの場合、下のサンプルソースを初期設定終了の直ぐ下の辺りに書足して下さい。 ($stop2 = '貴方のサイトのURL';です。このサンプルソースは当サイトを例にして書いています)$stop2 = 'http://garden.s60.xrea.com/';
$referer = $ENV{'HTTP_REFERER'};
if ($referer !~ /$stop2/) { &error("アクセスが制限されています");}簡単に説明しますと「$stop2」でCGIを設置しているサイトのドメインを設定して、それが含まれていないURLからアクセスされた場合は弾くようになっています。
「http」が3回以上書き込まれたらエラーが発生する、という方法なども有効です。上記の方法が駄目だった場合や、併用でお使いになられると良いでしょう。以下がサンプルソースです。
$stop3 = ($in{'comment'} =~ s/http/http/ig);
if ($stop3 >= 3) { &error("URLの多数書き込みは禁止です"); }これ以外にもスパム対策はあります。検索エンジンなどで調べてみて下さい。
その他
初めてCGIを設置される方は、一行目のPerlのパス以外は変更せずにそのままアップしてみて下さい。
それで上手く設置出来れば、一つずつ、変更していきましょう。上手く変更出来たら、保存して、次の行程に進む・・・という方法で調整していくと、どこが間違っているのかすぐに判ります。初心者向けに設置を詳しく図入りで説明して下さっているサイトさんもたくさんあります。全く自信のない方は、検索等でそのようなサイトさんを見つけ、一通り読んで勉強してみるというのも、上達への一歩ではないかと思います。
また、どうしても判らない場合は、サポート掲示板を御利用下さい。ただし、質問をする場合は「何が判らないのか」または、「何をしたらエラーになったのか」をきちんと書いて下さらないと、答えようがありません。
これは当サイトだけに限ったことではありません。どこのサイトさんも同じです。「判りません」「助けて下さい」「出来ないです」といった、返答の困るような質問の仕方は止めましょう。