ホームページをもつと、いろんな仕掛けをしてみたくなりますよね? アクセスカウンターなどは、最初につけてみたくなる仕掛けです。 CGI というのは、そんな、ホームページの仕掛けの実現方法です。
CGI の使い方は、プロバイダーの考え方とサーバーによって違います。 ここでは BIGLOBE での使い方に限定して説明いたします。
いままでに、5つのプロバイダーで提供されているサーバー上でホームページを公開する経験してきました。 インターネット上や本や雑誌での解説を参考にしながらも、 それぞれサーバーの違いを理解するの時間をかけたあげく・・・ プロバイダーの方に電話やメールで質問してご面倒をかけながらも・・・ ユーザーが作った CGI を実行する方法がないことがわかったりするという経験もしました。 BIGLOBE はユーザーの作った CGI を実行できる環境を提供してくれています。
筆者も、BIGLOBE での CGI は使いはじめたばかりです。ぼちぼちといろんな事をやってみたいと思います。
すでに、BIGLOBE で、ホームページを作成・公開されている方を対象に説明します。 といったものの、ほとんど覚え書きにすぎない記述かもしれません(^^;;;
まだ、ホームページをお持ちでない方は、 ここらのあたりとか ここらあたり に開設について BIGLOBE から説明がありますので、そちらをどうぞ!
BIGLOBE からアクセスカウンタが無償で提供されています。 簡単に下のようなカウンタが設置できます。
ここでは、<IMG SRC="/vpack/Count.cgi?ft=0|dd=C|df=www2d-gama">と指定しています。
設置方法はこちらをご覧ください。
また、アクセス制御、掲示板、メール送信も、 月額300円のホームページ便利パック として、BIGLOBE から提供されています。
さて、コンピュータプログラマー歴20年の筆者でありますが・・・ プロでなくなって、10余年・・・ いまや、知識が化石化していたりするところもあります。 最近の話は、WWW もふくめて、よく解っていなかったりしますし、 思い違いをしている事もよくあります。 間違っているところを見つけた方は、是非メールでおしえてくださいね。
使用している環境は、Windows95, FFFTP, Netscape & MSIE です。
FFFTP は、Sota さんによるフリー・ソフトウェアです。 Sota さんのページからダウンロードできます。
インターネット上や本や雑誌の記述に惑わされないことが結構重要です。
BIGLOBE のパーソナル用の WWW サーバーは Apache (1.3.6) です。 いちばんポピュラーなサーバーですが、いろいろと制限されて設定されています。 したがって、関係ない事を読んでしまうと混乱しますので、要注意です。 ついでに書いておくと、http サーバーというのは、WWW サーバーと同じ事です。
WWW サーバーが CGI として認識してくれるのは拡張子が .cgi のファイルです。 public_html ディレクトリの下なら、どこのディレクトリに置いてもよいようです。 perl, sh, csh などをつかって CGI を書くことになります。 telnet から shell が使えませんので、パーミッションも FTP で指定します。
自慢ですが(^^;;; 筆者は、プログラムを初めて書いてから 20年で、両手両足の指では、 数え切れないほどのコンピュータ言語の経験がありますが、perl は、ほとんど初めてです。 いまから、遊んでみたいと思います。
プログラムなど所在
NEC から主要なコマンドとして アナウンス があるもの
/usr/lib/sendmail /bin/cat /usr/local/bin/perl (Ver4.036) /usr/local/bin/perl5 (Ver5.005) /usr/bin/sh /usr/bin/csh /usr/bin/tcsh (tcsh 6.04.00) /usr/local/bin/nkf (Version 1.5) /usr/bin/awk /usr/bin/sed /usr/local/www/httpd/cgiparse独自調査による、主なコマンドの所在
NEC からはアナウンスがないコマンドもありますので、ご注意ください。動けば動くということで(^^;;;
/bin は /usr/bin へ link されていますので、どちらのディレクトリでも使用できるようです。
/usr/bin/awk /usr/bin/bc /usr/bin/cat /usr/bin/cc /usr/bin/csh /usr/bin/cp /usr/bin/date /usr/bin/echo /usr/bin/find /usr/bin/grep /usr/bin/ls /usr/bin/make /usr/bin/mv /usr/bin/sh /usr/bin/sort /usr/bin/tar /usr/lib/sendmail /usr/local/bin/gcc (version 2.6.1) /usr/local/bin/gunzip /usr/local/bin/gzip /usr/local/bin/make (GNU Make version 3.74) /usr/local/bin/perl (Ver4.036) /usr/local/bin/perl5 (Ver5.005) /usr/ucb/tail /usr/ucb/uncompress /usr/ucb/wc /usr/ucb/which
コマンドの所在をしらべる which.cgi を作りました。ふろくからどうぞ!
www2*.biglobe.ne.jp と www5*.biglobe.ne.jp
BIGLOBE の個人用の Web サーバーはいろいろあります。
以下のサーバーは Apache/1.3.6 (Unix) でした。(99/12/21 調べ)www2.biglobe.ne.jp www2a.biglobe.ne.jp www2b.biglobe.ne.jp www2c.biglobe.ne.jp www2d.biglobe.ne.jp www2e.biglobe.ne.jp www2f.biglobe.ne.jp www2g.biglobe.ne.jp www2h.biglobe.ne.jp www2j.biglobe.ne.jp www2k.biglobe.ne.jp www2m.biglobe.ne.jp www2n.biglobe.ne.jp www2p.biglobe.ne.jp www2q.biglobe.ne.jp www2r.biglobe.ne.jp www2t.biglobe.ne.jp以下の3つのサーバーは、Web サーバーが違います。
特に www5a は cgi の設置方法が相当違うようです。NEC による サーバーの仕様一覧 をご覧になることをお勧めします。
www2s.biglobe.ne.jp Netscape-Enterprise/2.01b www2u.biglobe.ne.jp Netscape-Enterprise/2.01b www5a.biglobe.ne.jp Zeus/3.399/12/21 現在 NEC からのおしらせ では、www2s.www2u.www5a はモードチェック未対応、セキュリティーチェックは空欄になっています。 これから変わるかな?
%uname -snrvma の出力 (www2d.biglobe.ne.jp)SunOS meshsv103 4.1.3_U1 6 sun4mCGI 関係でよく出てくるけど、BIGLOBE では関係ない用語
- CERN サーバー : BIGLOBE のサーバーは、Apache です。CERN の話は無視しましょう。
- NCSA サーバー : Apache の親? まあ、とにかく、他のサーバーの話は関係ないです。
- NETSCAPE サーバー : Apache の兄弟? 99/11/15 以前は、NETSCAPE でした。
- IIS : Windows-NT 用の サーバー、ほとんど関係ないので、すぐさま無視します。
- SSI : サーバーサイドインクルードといって、とても便利な機能ですが使用できません。(ので SSI もどきを作ってみました。)
- telnet : ほぼ、つかえません。(パスワードの変更と、ディスク容量の確認だけできます。)
- cgi-bin : ディレクトリ名ですが、特に意味をもちません。
- .htaccess : ファイル名ですが、使用できません。
BIGLOBE では関係ないかとおもっていたら、関係があった用語
- C : ちょっと特殊な方法で cc, gcc も使えました。
- make : ちょっと特殊な方法で使えました。
パーミッションについて
作成した CGI を実際に動かすにはパーミッションの変更が必要です。 最初に結論を書いてしまいますと、パーミッションは、 ふつうは 644 ディレクトリは 755 .cgi は 700 にしておけば、ほとんど問題はおきないと思いますし、 これ以外のパーミッションの設定が必要になることはないと思います。
作成した時には、ディレクトリは 755 ファイルは 644 になっています。 普段はパーミッションは気にしなくても大丈夫です。
パーミッションって、わかりにくいですね。BIGLOBE からの説明が このあたり にあります。いかがでしょうか?
再度説明しても、混乱が増すだけかもしれませんが(^^;;; あえて解説してみます。
パーミッションについての解説
errors.txt
CGI のエラーが、public_html/errors.txt に記録されています。 動かない時に中身を見てみると参考になるかもしれません。
改行コードの取り扱い
Windows95,Win3.1,MS-DOS 等の改行は CR+LF です。 ところが、WWW サーバーでの .cgi のファイルの改行は LF です。 CR+LF を LF に変換する必要があります。 これは、FTP が、やってくれます。 あなたのパソコンからサーバーに FTP で転送する際に ASCII モード にしてください。 Binary モードで転送すると、この改行の変換が行われません。 変換が行われた場合は、パソコン側のファイルより小さくなります。 変換が行われていない場合は、大きさが同じになります。
ファイル名は、英小文字と数字で!
ファイル名の半角英字は、サーバー上では、大文字(ABC)と小文字(abc)が違う と、まったく違う名前になります。小文字に統一することをおすすめします。 拡張子も小文字で書きましょう。 漢字は使わないようにしましょう。