めざせ、HTMLの鉄人!

「HTML教室」(CGI篇・その3)

前のページ

cgi はウェブサーバに置いて使うプログラムなので、サーバーにアップロードして使うのですが、もし、自分のコンピュータにウェブホストがあれば、それを利用して、実際のサーバーにアップロードしなくても自分のコンピュータで試運転できます。Linux なら実際に多くのサーバーで使われている Apache を使うことができます。Apache を組み込んでおくと、いろんな点で有利ですので、Linux をサーバに使うことがなくても、Linux でインターネットを使うなら Apache を使えるようにしておくよう、お勧めします。


7 Apache のインストール

Apache はもともと Vine Linux にも入っているのですが、新しいバージョンを入れるため、まずは、古いバージョンを取り除く作業からはじめます。

rpm -qa | grep apache
でインストールされている apache のバージョンを見つけ、
rpm -e apache-xx-xx
で apache を削除します。後は解凍、設定、コンパイル、インストールとお決まりの手順を踏みます。
# tar zxvf apache_x.x.xx.tar.gz
# cd apache_x.x.xx
# ./configure --enable-module=so
# make
# make install
configure のあとの --enable-module=so というのは、シェアド・オブジェクトを使うためのもので、私は、PHP もインストールつもりなので、こうしておきました。


8 インストール後の設定

Apache は /usr/local/apache にインストールされます。apache を動かすにはこのディレクトリにある /bin/apachectl に start という引数を与えてやります。終了は stop 再起動は restart です。いちいち /usr/local/apache/bin/apachectl start とするのも面倒ですので、私は /etc/rc.d/rc.local に

# http server startup
/usr/local/apache/bin/apachectl start
と記述して自動的に Apache が立ち上がるようにしました。あと、設定したのは、/usr/local/apache/conf/httpd.conf の ServerName を localhost に、ServerAdmin を penguin@localhost にしただけです。

自分のホームディレクトリに public_html というディレクトリを作り、そこに html コンテンツを置きます。私の場合は、/home/penguin/public_html に Penguin Club のコンテンツがみな入っていますが、http://localhost/~penguin/index.html とすれば、このホームページの表紙が現れるしかけになっています。(penguin の前に ~ をつけるのを忘れないように!)もちろん、こんな面倒なことをしなくても file:///home/penguin/public_html/index.html でコンテンツは表示できるのですが、これではローカルファイルを表示するだけで、CGI など使えないのです。

/home/penguin/public_html で CGI を使うため、/usr/local/apache/conf/httpd.conf の中に、次のように項目を加えました。

#
# CGI Setting
#
<Directory "/home/penguin/public_html">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
次に CGI を表す拡張子を .cgi にするために、以下の行をアンコメントしました。
    AddHandler cgi-script .cgi

httpd.conf の設定を終えてから、ゲストブック guest.html、ゲストブックの CGI、guestadd.cgi と 補助プログラムの jcode.pl、それに guestsee.cgi を /home/penguin/public_html に置きました。


9 CGI の試運転

ブラウザに http://localhost/~penguin/ と入力して index.html を表示させ、guest.html へのリンクをクリックしました。さっそくゲストブックへの記入、書き込みをためしましたが「データファイルが見つかりません」とのエラーになりました。この CGI ではデータファイルがない場合、エラーを返すだけで、データファイルを新規作成はしてくれないのです。それで /home/penguin/public_html で xz guest.txt & として guest.txt をつくり、0 バイトのまま保存しました。

もういちど、ゲストブックの記入をこころみましたが、guest.txt があるのに同じエラーが出ます。ls -l guest.txt としてファイルの属性を調べたら、-rw-r--r-- となっており、一般ユーザからの書き込みができないようになっています。このファイルは一般ユーザからの書き込みができるようにしなければなりませんので、chmod o+w guest.txt としました。そしてもう一度やりなおしたら今度は「書き込みありがとうございました」と出ましたので、「ゲストブックを見る」をクリックして、書き込まれていることを確かめました。

ローカルファイルに直接アクセスしただけなら、cgi の内容がテキストファイルでズラズラと表示されるだけで、決して cgi は動きません。しかし、ローカルホストからゲストブックにアクセスすれば、実際に書き込みや読みだしができます。apache を経由すれば、インターネットに接続したのと同じ状態をつくり出し、cgi を試せるのです。


10 CGI のアップロード

ローカルホストで十分に試したあと、リモートサーバにアップロードします。アップロード後、ファイルの属性を確認しておきましょう。アップロードしたファイルは次のとおりです。

guest.html
guest.txt
guestadd.cgi
guestsee.cgi
jcode.pl
いずれも、public_html ディレクトリーにアップロードしましたが、ISP によっては、CGI やデータファイルを特別なディレクトリーに置くように指示している場合があります。その時はその指示に従います。そして、その場合、CGI スクリプトでの guest.html や index.html 、それに画像ファイルの指定を相対指定から絶対指定 ("http://sd.znet.com/~penguin/guest.html" や "http://~sd.znet.com/penguin/images/penguin_club.gif" など) に変えておかなければなりません。

もう一つ注意しなければならないのは、ISP のホストサーバーでの perl の場所です。私の ISP は /usr/bin/perl で大丈夫だったのですが、他の ISP では /usr/local/bin/perl でした。ISP に問い合わせて perl の場所を確認するか perl スクリプトの最初の行 #!/usr/bin/perl を適宜書き換えて試してみると良いでしょう。

前のページ



[INDEX]