これでプログラムは貴方のPCを離れてサーバーに転送されましたが、まだこのままでは動きません。
ここから先はTelnetソフトを使ってサーバーのプログラムを転送してあるディレクトリに入り各設定を行わなければなりません、以下にその手順を記述します。
まずは、貴方のサーバーにTelnetで接続してください、サーバーに接続されると
login:
と表示され入力待ちになりますので、貴方のログイン名(私の場合は、”pachi”です。 ←半角で入力)を入力して下さい。続いて
Password:
と表示され入力待ちになりますので、貴方のパスワードを入力して下さい。(入力されたパスワードは、画面には表示されません。)
パスワードが正しく入力されればサーバーにログインし、私の所は「ns: {1}」とプロンプトが表示され(プロンプトは「%」や「$」などサーバーの設定によって違いが有りますが、通常は「%」が多いようです)、コマンド入力待ちになります。
ログインした所がホームディレクトリ(この時点でのカレントディレクトリ)になりますので、ファイルを転送してあるディレクトリへ移動します。
FTPでディレクトリが作成出来なかった人のために、ディレクトリを作成するもう一つの方法を記述しておきます、以下の方法で作成して下さい。
コマンドラインから、下記のようにタイプして下さい。
mkdir cgi-bin (必ずしもこの名前のディレクトリ名とは限りません。)
これでディレクトリ「public_html」の下に「cgi-bin」と言う名前のディレクトリが作成されました。
もう一度FTPに戻りこのディレクトリにファィルを転送しておいて下さい。
ファィルを転送してあるディレクトリが、ホームディレクトリのすぐ下、ディレクトリ名「cgi-bin」の場合はコマンドラインから
cd public_html/cgi-bin
とタイプして下さい、カレントディレクトリが「cgi-bin」に移ります。
ディレクトリを移動したら、コマンドラインから「ls」と入力してください、転送されたファィル名が表示されればそこが目的のディレクトリです。
CGIの使用について、接続先のサーバーが自由に許可している所は必要無いと思いますが、「Addtype」を指定しないとCGIが使えないサーバーも有りますので、指定をしなければならないかどうかは、サーバーの管理者に確認して下さい。
「Addtype」の指定が必要な場合は以下のようにして下さい。
メモ帳などのエディタを開き、次の2行を記述して下さい。
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl
記述したらエディタの「名前を付けて保存」を選び次のファィル名で保存して下さい。
.htaccess
エディタによっては、このままでは保存することが出来ず「.htaccess.txt」のように拡張子が付いてしまうかも知れませんが、その場合はそれで良いです。
保存出来たら、「ページブラウザ」等で改行コードをUNIXのコードに変更し、FTPでCGIプログラムが置いてあるディレクトリに転送すればOKです。
ファィルに拡張子が付いているファィルは、転送後Telnetでディレクトリにログインし、次のようにタイプして下さい。
mv .htaccess.txt .htaccess (パーミッションは644 たぶんそのままでOKです。)
これでCGIが使用できるはずです。
また、チャットや伝言板プログラムなどは、発言ログを格納しておくファィルが必要ですが、元々最初は空のファィルなので自分で作らなくてはなりません。
簡単に作るには、「メモ帳」で何も書かれていないまま、「ファィル」の「名前を付けて保存」を実行すれば空のファィルが出来ます、これをFTPでサーバーに転送すればOKです。
また、シェルモードから「ijkl.txt」を作成する場合は、次のようにコマンドラインからタイプします。
touch ijkl.txt
どちらの方法でも、ファィルサイズ「0」のファィルが作成出来ます。
UNIXの動いているサーバーコンピュータは、複数の人が同時に使用することを前提にシステムが設定されているため、自分のファィルを他人に見られたり、書き替えられたりする可能性が有ります。
そのため、UNIXのファィルには保護をかけることが出来るようになっています、これが「パーミッション」です。
コマンドラインから先ほどの「ls」にオプションを付けて、「ls -l」と入力してみてください、下のように表示されたはずです。
% ls -l
total 36
drwxr-xr-x 2 pachi dialer 512 Nov 17 00:03 ./
drwxrwxr-x 9 pachi dialer 512 Nov 12 23:56 ../
-rw-r--r-- 1 pachi dialer 13662 Nov 17 00:03 abcd.cgi ┐
-rw-r--r-- 1 pachi dialer 13662 Nov 17 00:03 efgh.cgi │ ※ ファィル名は仮名です。
-rw-r--r-- 1 pachi dialer 2117 Nov 17 00:03 ijkl.txt │
-rw-r--r-- 1 pachi dialer 2416 Nov 17 00:03 mnop.cgi ┘
%
上の2行は(末尾に「./」「../」が有るやつ)ディレクトリを表していて、3行目からがファィルの詳細な情報です。
左側に表示されている「rw-r--r--」がファィルのパーミッション(一番左端「-」はファィルを意味している)で、最初の半角文字3文字「rw-」が自分に対する許可、次の「r--」がグループ(同じサーバーに所属する人)に対する許可、最後の「r--」が他人に対する許可となっています。
この半角3文字は、「rwx」からなっており、「r」は読み取り可、「w」は書き込み可、「x」は実行可の意味で、その各部分が「-」に成っている所は、それが不可の意味です。
よって、パーミッション「rw-r--r--」は、自分に対して読み書きは可でグループと他人には読む事のみ許可しているファィルの意味です。
パ−ミッションの変更には2種類の方法が有りますが、ここでは数値で指定する方法を説明します。
変更するには、コマンドラインから
chmod 755 abcd.cgi
のように入力します。
最初の「chmod」はUNIXのコマンドで、ファィルの属性を変更するときに使うコマンドです。
その次の「755」がそのファィルへのパーミッションの指定で、2進数を8進数に置き換えて指定します。
2進数と8進数の関係は以下のようになっています。
| パ−ミッション | 644 の場合 | 666 の場合 | 755 の場合 | 777 の場合 |
| モード | rw−r−−r−− | rw−rw−rw− | rwxr−xr−x | rwxrwxrwx |
| 2進数 | 110100100 | 110110110 | 111101101 | 111111111 |
| 8進数 | 6 4 4 | 6 6 6 | 7 5 5 | 7 7 7 |
※ 2進数は「r.w.x」の表示で「可」すなわち「1」 「−」ならば「不可」すなわち「0」です。
CGIプログラムは、自分のHPを訪れた不特定多数の人が実行する可能性が有るので、基本的には全ての人に対して実行パーミッションを立てておかなくてはならないのですが、使用プログラム配布先のHPに、ファィルごとのパーミッションが指定されているはずですので、その指定に従って変更して下さい、普通は「cgi」や「pl」拡張子が付いているファィルは「755」、「dat」や「txt」は「666」が多いようです。
配布先の記述に従って、パーミッションの変更を行ったら、コマンドラインからもう一度「ls -l」とタイプしてみて下さい。
% ls -l
total 36
drwxr-xr-x 2 pachi dialer 512 Nov 17 00:03 ./
drwxrwxr-x 9 pachi dialer 512 Nov 12 23:56 ../
-rwxr-xr-x 1 pachi dialer 13662 Nov 17 00:03 abcd.cgi*
-rwxr-xr-x 1 pachi dialer 13662 Nov 17 00:03 efgh.cgi*
-rw-rw-rw- 1 pachi dialer 2117 Nov 17 00:03 ijkl.txt
-rwxr-xr-x 1 pachi dialer 2416 Nov 17 00:03 mnop.cgi*
%
パーミッションが変更されていることと、ファィルの末尾に「*」の付いているファィルが有ることに気づくと思います。
この「*」は、そのファィルに実行パーミッションが設定されているという意味です。
これで全ての設定は終了です、後は貴方のHPからプログラムにリンクを張り動作確認をするだけなのですが、もしプログラムにエラーが有り、そのエラーがサーバーに決定的なダメージを与えた場合はサーバーがダウンしてしまいます。
ネット上で配布されているプログラムの場合は完成度の高いものばかりですので、配布者の指示どうりに書き替える程度では致命的なエラーを起こすことはまずあり得ないと思いますが、書き替えの時にミスっている可能性は有りますので、念のために文法のチェックくらいはしておきましょう。
コマンドラインから以下のようにタイプしてみて下さい。
perl -wc abcd.cgi (もちろんチェックしたいCGIプログラムのファィル名です。)
最終的に「abcd.cgi syntax OK」とメッセージが表示されればOKです。