~/public_htmlの下に、CGI用のcgi-binというディレクトリを作成します。
% cd ~/public_html % mkdir cgi-bin
上記で作成したCGI用のcgi-binというディレクトリ内に、CGIスクリプトを 作成します。cgi-binディレクトリに移動した後に、emacsまたはxemacs上で 下記のスクリプトを作成してください。スクリプト名を「test.cgi」とします。
% cd ~/public_html/cgi-bin % emacs test.cgi
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "これが見えたら成功です\n"; print "</body>\n"; print "</html>\n";
現在のところ、public_html以下のファイル・ディレクトリは、wwwのグループ のものとして作成されます。このままではCGIが動作しないようになっておりま す。
% cd % ls -l
上記の「ls -l」コマンドの結果、自分が所属するグループ名を確認します。 その結果の一部が下記のようになったとすると、
drwx------ 10 e02000ab env02 512 7月 31 2001 NTsystem/ drwx------ 2 e02000ab env02 512 4月 26 1999 News/ drwxr-sr-x 14 e02000ab env02 512 6月 6 09:39 WinSystem/
「env02」が自分の所属グループとなります。 上記の続きでカレントディレクトリはホームディレクトリだとして、
% chgrp -R env02 public_html
を実行します。すると、public_html以下全てのファイルやディレクトリが、 env02グループに属するようになります。
今度は、public_html以下のファイル・ディレクトリのパーミッションを以下の ように設定します。この指定に外れたパーミッションを持つファイルやディレク トリが存在すると、CGIが動作しないようになっております。ちなみに、この 本学の現状のシステムで指定されているものであり、外部のプロバイダなどで CGIを設置する場合には、そこで要求されているパーミッションに変更してくださ い。
ファイル、ディレクトリの種別 | パーミッションの表現 | |
---|---|---|
ディレクトリ | drwx-----x | 701 |
CGI関連ファイル(.cgiがつくファイルなど) | -rwx------ | 700 |
それ以外のファイル(.htmlや.txtなど) | -rw----r-- | 604 |
上記の設定を実現するために、下記のように入力してみてください。
% chmod 701 public_html % % cd public_html % ls -F
最初の1行目で、public_htmlディレクトリのパーミッションを変更していま す。そして、public_htmlディレクトリの中に移動し、 上記の「ls -aF」コマンドの結果が下記のようになったとすると、
./ .htaccess cgi-bin/ hobby.html town.html ../ aiueo.txt dream.html index.html work.png
ディレクトリはcgi-binだけで、それ以外にHTML文書とテキスト文書が存在 していることがわかります。これに対して、上記の表で示したパーミッションへ 変更する必要があります。
% chmod 604 * % chmod 604 .htaccess % chmod 701 cgi-bin
上記の1行目では、全てのファイル・ディレクトリに対して604のパーミッショ ンに変更した後に、2行目で.htaccessファイルに対しても604のパーミッション を与えています。.htaccessが存在しない場合には、2行 目は無視してください。 次に、cgi-binだけはディレクトリなので、 3行目で701に変更しています。 もしこの他に「.cgi」がつくファイルが存在したら、700のパーミッショ ンへ変更してください。
これでパーミッションを変更できました。ですが、このcgi-binディレクトリ の中には、先ほどtest.cgiというCGIスクリプトを作成しました。ですので、 このスクリプトに対してもパーミッションを変更する必要があります。 したがって、
% cd cgi-bin % chmod 700 test.cgi
とパーミッションを変更します。これによってtest.cgiは動作可能になります。
今回はpublic_html以下のディレクトリは、単にcgi-binだけという 仮定で話をしま した。しかし、他にもディレクトリを作っている場合には、その中にファイルや ディレクトリが存在する可能性があります。ですから、全てのディレクトリに 対して、上記のようにファイルやディレクトリのパーミッションを変更していきます。
この作業をpublic_htmlディレクトリ以下のすべてのディレクトリに対して行い ます。そうすると、CGIが正常に動作するはずです。
最後に先ほど作成した test.cgiが正常に動作しているか確認してみましょう。上記の作業では、 ~/public_html/cgi-bin/ というディレクトリの中に、test.cgiを置きました。したがって、 Webブラウザ上で、下記のようなURLを指定します。
http://www.edu.tuis.ac.jp/~e02000ab/cgi-bin/test.cgi
これまでの作業が正常に行われていたら、「これが見えたら、CGI導入の準備は 成功です」という一文だけ表示されます。もし表示されなければ、これまでの 作業で何か抜けていないか、丹念に確認してみてください。
ここからは、一般的なエラーの確認方法を述べています。まず一つがスクリプト そのものにバグがあるかどうかを確認します。perlで書かかれているCGIスクリ プトであれば、スクリプトがあるディレクトリにて、
% perl -cw test.cgi
のように実行します。test.cgiは適当に自分のスクリプト名に置き換えて下さい。 バグがあれば該当する行を表示してくれますので、emacsなどで修正 して下さい。
上記のように、スクリプトのバグも確認し問題なかった場合には、 Webサーバではき出しているエラーログをチェックするようお勧めします。 下記に本学でのエラーログのチェック方法を示します。
本学では、Webサーバソフトウェアとしてapacheを使用しています。apacheは、 UNIX、 Linuxだけでなく、Windows上でも動作するものも配布されていて、 広く普及しているフリーソフトウェアです。そのapacheがインストール されているマシンがftp.edu.tuis.ac.jpであり、それにsshで接続しようという訳です。
ちなみに、ftp.edu.tuis.ac.jpの別名としてwww.edu.tuis.ac.jpが設定されてい ますので、下記のftp.edu.tuis.ac.jpをwww.edu.tuis.ac.jpと置き換えても接続 できます。
% ssh ftp.edu.tuis.ac.jp
/usr/local/apache/logsへカレントディレクトリを変更し、error_logという ファイルから自分のユーザ名が含まれる行を抽出して表示させる。
% cd /usr/local/apache/logs % cat error_log | grep e02000ab | less