CGIテスト環境2003.9.20


 

Webサーバー
 

 BlackJumboDogという社内LAN用のプロキシーサ-バーを利用していた。 Freeソフトなのだが、優れもの。このおかげで、2台のPCから一台のダイアルアップ接続でインターネットを同時利用している。
 この簡易サーバーソフトはWebサーバー機能もあり、SGI/SSIも可能という。  Webページにアプリケーション機能を付けたい。その目的でCGIを始めた。そこで、BlackJumboDogを利用してCGIプログラムのテスト環境を構築してみた。  設定は至極簡単。「Webサーバを使用する」のチェックボックス をONにするだけ。セキュリテーのため、利用者は僕のマシーンのローカルアドレスのみとした。

 「CGI/SSIハンドブック」(宮坂雅輝著、ソフトバンク)を1回 読んでからCGI環境整備を始めた。WebサーバーをCGI処理可能 にセットし、「さー、何かしよう」としたのだが。何もできない。

 CGIは Common Gateway Interfaceの略です。WebサーバをHTMLページの配信機能に限定すれば、HTTPdということ。サーバーの90%が利用しているApacheがそれだ。このHTTPdに外部のプログラムを利用できるインターフェースを付加するものがCGIということでした。これがあるから、Perl、C言語、VisualBasic、何でも利用できることになる。だが、利用できるようになっただけ。具体的な作業手続きを示さないといけない。一つの方法として、Perlでスクリプトを書いておく必要がある。という事でした。

 

Perl
 

 さて、CGIを動かすにはPerlをセットしなければならない。 本番ではプロバイダーやレンタルサーバー側が準備しているので必要はないのだが。
ActivePerl-5.6.1.635-MSWin32-x86.msi をダウンロード。インスト−ラ−InstMsiA.exeも別パッケージでダウンロード。 InstMsiA.exeをダブルクリックで実行しておくと本体がインストール可能 になる。

 Dドライブの\konwebに今までページが保存してある。プロバイダーの public_htmlに対応する。したがって、D:\konweb\binにPerlをインストール した。インストールの時点でPathがセットされる。REGISTOYを確認したがPerlというキーでD:\konweb\bin\perl.exe %1 %2とセットされていた。
 Perlのみのインストールでよかったようだが、フルインストールした。D:\konweb¥Libに多くのファイルが展開 されていた。D:\konweb\htmlには英文マニアルもセットされていた。

 

DOSプロンプト
 

 インタープリター言語のPerlは、テキストのコマンドを翻訳し、それを解読実行してくれる。何をさせるかというと、サーバーのCGIルーチンが要求したHTMLページを作成出力すること。終れば、CGIルーチンがそれをブラウザ側に送り出す。

 Perlは単体でテキスト処理ツールとしても威力を発揮する。プログラム言語習得の始めは、いつもそうなのだが、”Hello”と 表示させる。Windows版のPerlはDOSプロンプトで動く。試して見た。  
D:\konweb\bin > perl -e "print 'Hello';"

Hello
 これで成功。DOS窓から、簡単なプログラム実行ができる。-eは即実行を示すオプション。

メモ帳で print "Hello\n";としてhello.plに保存。
D:\konweb\bin >perl  ..\cgi\hello.pl

Hello
 これで成功。直接キーボード指示は大変。あらかじめファイルに書いておく。拡張子はpl。BASICと同じようなこと。

メモ帳で
#!/bin/perl

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<TITLE>hello</TITLE>\n";
print "<BODY>
print "--------------<B>\n";
print " hello<B>\n";
print "--------------<B>\n";
print "</BODY>\n";
print "</HTML>\n";
としてhello.cgiに保存。

D:\konweb\bin >perl  ..\cgi\hello.cgi


Content-type: text/html
<HTML>
<TITLE>hello</TITLE>
<BODY>
--------------<B>
 hello<B>
--------------<B>
</BODY>
</HTML>
 これで成功。これでCGIで利用するPerlの環境が整った。

ブラウザからhttp://192.168.10.1/CGI/hello.cgiにアクセス

---------------
hello
---------------


これで成功。ローカルのWebサーバーでPerlの実行がされ、結果をブラウザで閲覧できた。

 

Unixサブセット
 

 よーし!いけますね。僕は一人でつぶやいた。しかし、ありがたい時代になった。そう思う。
 フリーソフトのBlackJumboDogとPDSのPerlに感謝する。それは当然 のこと。だが、もう一つありがたいという理由がある。

 ごくごく簡単な実験だが、振りかえって見よう。MSwindows98でWebサーバーソフトを準備し、スプリプト言語Perlの実行環境も整えた。PerlはDosプロンプトで動く。キーボードが標準入力、モニターが標準出力という状況だ。
 キーボードからコマンドを打ち込むと、結果は画面に現れる。Dosプロンプトの最後に出力したのはHtmlのタグつきデーター。DOS窓の画面でタグつきソースを眺めれば、スクリプトの点検ができる。「メモ帳」でWebページを書ける人は、 これだけでもCGIスクリプトのテスト環境としては十分だろう。
 ここまでなら、Webサーバーソフトをセットする必要はない。

 最後に、ブラウザからCGIスクリプトを呼び出した。自分のPCのWebサーバーにあるCGIスクリプトを指定したのだから、待ち構えていたWebサーバーが指定されたファイルを探しPerlスクリプトだからPerlに作業を依頼 した。Perlは忠実にHtmlファイルを吐き出した。それをWebサーバーが ブラウザに送り返した。一瞬の作業を分解してみると、こんな連携プレー が想定される。インターネットの世界で、日夜繰り広げられている作業だ。 僕のミニTCP/IPの世界で一瞬にして終わったが、やってることは同じといえる。 ここまで整備できれば、ネットワークエンジニアがしていることを擬似体験できる。小さなトラブルを、ひとつづつ解決してみると、知らぬ間にネットワーク管理者としてのスキルが身につくだろう。

 たったこれだけのことなのだが、全世界規模で繰り広げられているインターネットを、 自分だけの世界で擬似体験できる。いちいち、プロバイダー、レンタルサーバーのお世話にならなくてもいい。試行錯誤のCGI製作を、誰に気兼ねすることなくできる。たったこれだけのことだが、放送局のしている事と同じような、ミニスタジオを準備できたということだろう。マスメデイア社会では、その他大勢の「私見る人」と、ごく少数の「私作る人」の世界であった。でも、インターネットは違う。誰もが「見る人」であり「作る人」でもある。  フリーソフトのBlackJumboDogとPDSのPerlに感謝する。

 将来、LinuxでApache。それは決めている。でも、今はMSwindows98 の環境。LinuxはUnixだ。

 MS-DOSはUnixのサブセット版という イメージで作成された。MSwindows98の中にMS-DOSは生きている。マウスは使えないのでキーボードからコマンドを打ち込む。DosプロンプトあるいはDOS窓というのだが、これはUnixのshellに対応する。
 Dosプロンプトではファイルの位置を示すのに¥を使う。英語版のDosプロンプトでは\を使う。ブラウザの場合は../などと表記した。結局、デイレクトリの表記は/が共通表記。つまりは、Unix表記がインターネット標準ということ。
  ファイルリストコマンドはlsとdirで違うのだか、dir > list.txt というように、標準出力以外に>等でファイルに吐き出せる。さらに、dir || sortのようなパイプも両者共通。MS-DOSの頃、所詮Unixのサブセット 版と揶揄されたが、今はサブセット版で良かったねということになる。もう一度 MS-DOSの時代の知識を総動員してみよう。1980年代のDosのキャリアは2000年代のUnixのキャリアに含まれる。となれば、僕だって半端なキャリアではない。ありがたい時代になったと思う。
 あの時代MSwindowsNTというのがあった。MSDOSのマイクロソフトの製品なのだが、Unixと同レベルで競うにはマイナーすぎる製品だった。マイクロソフトはWindowsという衣装を着けてWindows95ユーザーをWindows2000に誘導する戦略だったが、95と2000は別製品。僕はMSwindows98でバージョンアップは終わりにした。 MSDos、Windows95/98、Linuxというキャリアを僕は武器にしたい。

 トライしながら、身に染みて分るということがある。  「アレー、動かない。動いていたんだけど。サーバーに送ったら動かない」。 こんなことで半日潰したことがある。

 UnixはネットワークOS。自分仲間一般大衆という概念で構築されている。 ファイル自体に読み(R)、書き(W)、実行(X)の許可を、この3レベル で設定する。例えば、僕が作ったページはサーバーに送り込んで、 rwx---r--と設定する。つまり、自分で読み書き実行は出来る、不特定一般の 人には自由に読んで下さい、書き換えは許可しませんということ。こうしてプロバイダーの サーバーで僕のページが見られている。CGIのファイルは、実行されるファイルなのだ。だから、サーバー の中で組みたてられるcgiファイルはrwx---r-xとしなくてはならない。至極当然 の話しなのだが、やって見て始めて分る。そう、CGIのファイルはサーバーの中で組み立て直して要求する人に渡る。見ず知らずの人に対して、それを許可することを前提にしている。「アレー、動かない。」の半日潰したことが、深い理解の積重ねとなる。その先に、 プロフェッショナルの地平線が待っている。そう信じよう。

 個人のパソコンですべて完結するDOSでは、rwしか設定しない。 仲間一般大衆という概念もない。自分に書き込み許可を与えると、Unix の世界では全部の人に書き込み許可を与えた事に成る。これは本質的な OSの前提レベルでの話しだから、いたしかたない。サーバーとお付き合いする時は、公共の街角に出たことを自覚しよう。重要な点である。家庭内LAN、社内LAN。ここで鍛錬しておくのは大切なことだと思う。


2003.9.20
by Kon