CGI導入のための準備

CGIスクリプトの動作確認

cgi-binディレクトリの作成

~/public_htmlの下に、CGI用のcgi-binというディレクトリを作成します。

% cd ~/public_html
% mkdir cgi-bin

テスト用CGIスクリプトの作成

上記で作成したCGI用のcgi-binというディレクトリ内に、CGIスクリプトを 作成します。cgi-binディレクトリに移動した後に、emacsまたはxemacs上で 下記のスクリプトを作成してください。スクリプト名を「test.cgi」とします。

% cd ~/public_html/cgi-bin
% emacs test.cgi
(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ディレクトリ以下のグループの変更

現在のところ、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ディレクトリ以下のパーミッションの変更

今度は、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の動作確認

最後に先ほど作成した test.cgiが正常に動作しているか確認してみましょう。上記の作業では、 ~/public_html/cgi-bin/ というディレクトリの中に、test.cgiを置きました。したがって、 Webブラウザ上で、下記のようなURLを指定します。

http://www.edu.tuis.ac.jp/~e02000ab/cgi-bin/test.cgi

これまでの作業が正常に行われていたら、「これが見えたら、CGI導入の準備は 成功です」という一文だけ表示されます。もし表示されなければ、これまでの 作業で何か抜けていないか、丹念に確認してみてください。

CGIが動作しないとき(スクリプトのバグの確認)

ここからは、一般的なエラーの確認方法を述べています。まず一つがスクリプト そのものにバグがあるかどうかを確認します。perlで書かかれているCGIスクリ プトであれば、スクリプトがあるディレクトリにて、

% perl -cw test.cgi

のように実行します。test.cgiは適当に自分のスクリプト名に置き換えて下さい。 バグがあれば該当する行を表示してくれますので、emacsなどで修正 して下さい。

CGIが動作しないとき(エラーログの確認)

上記のように、スクリプトのバグも確認し問題なかった場合には、 Webサーバではき出しているエラーログをチェックするようお勧めします。 下記に本学でのエラーログのチェック方法を示します。

ftp.edu.tuis.ac.jpへssh接続

本学では、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

error_logから自分に関係のある行を抽出して表示

/usr/local/apache/logsへカレントディレクトリを変更し、error_logという ファイルから自分のユーザ名が含まれる行を抽出して表示させる。

% cd /usr/local/apache/logs
% cat error_log | grep e02000ab | less

[Perl講座] [須崎純一トップページ]
須崎純一 京都大学大学 工学研究科都市環境工学専攻 環境情報学講座