・夢眠's実験室
(個人的な遊び場です^^;)

 

・世界で一番簡単なHTMLの書

・世界で一番簡単なCGIの書



世界で一番簡単なのCGIの書


  普通やるCGIって、どこかから掲示板とかのフリーのCGIスクリプト持ってきて、自分用にタイトルとかメールアドレスを変更して、自分のサーバースペースに設置するだけですよね。
 それをしたいだけなのに、世の中のCGIの解説って、UNIXとかperlとか難しい.....。そう、感じたあなたのために、このページを作りました。
 基本的には、Macintoshで、エディタとしてJeditを使い、FTPソフトとしてFetchを使い、Perlで記述されたCGIスクリプトを、CGIの使用を許可しているプロバイダーのUNIXサーバーに置くこと想定して説明してありますが、Windowsでも参考にして戴けるtipsだと思います。


謝辞:本書を世の中に出すに当たって、CGIの使えるサーバースペースを無償で貸して戴いてるWISE-NETの野田社長様、目からうろこの助言を戴き、また監修して戴いたUNIXの大家はる先生、貴重なご助言を戴いたふみ@鈴木さんに深く感謝申し上げます。

Fetchの設定
perlのパスを探せ
CGIスクリプトを開こう
ftpしよう
パーミッションを変更しよう
ブラウザで確認してみよう


【Fetchの設定】
・Fetchを起動させて、「Preferance」→「Misc」を開いて、「Transelate ISO Charactors」を見て下さい。これがチェックされていたら、チェックを外して下さい。(外さないでスクリプトを転送すると文字化けが起きます)。

【perlのパスを探せ】
・Fetchで、Host、UserID、Password、Directoryを入力し、サーバーに繋いで下さい。
 繋がったら、ディレクトリーが表示されているところをプレスして下さい。
 最初に、/のところへ行き、usr(又はuser)というディレクトリーを探してみて下さい。あったらそのディレクトリーに移動し、local又はbinというディレクトリーに移動してみて下さい。localに移動したらその下にbinディレクトリーを探し、binのディレクトリーの中から「perl」という文字を探して下さい。
ここまで、あなたがたどって来た道が、CGIスクリプトの最初にあるperlのパスになります
 /user→local→bin→perlだったら
CGIスクリプトの1行目の記述は、
#!/user/local/bin/perlになります。CGIスクリプトは、この#!/・・・・/perlから始まらないといけません。この前にはスペースも行も置いてはいけません。

もし。telnetが使える環境であれば、telnetで接続後、whereis -b perlというコマンドを打って下さい。こちらの方が確実です。
でも、一番簡単なのは、プロバイダーにメール等で、直接、perlのパスを確認する事です。

 

【CGIスクリプトを開こう】
 CGIスクリプトは、雑誌についていたり、解説本についていたり、インターネットで公開されていたりします。適宜、気に入ったものを入手して下さい。

拡張子に.tar.gz、.tar.Z、.TAZ等が付いているものは、UNIX用に圧縮されたものです。サーバーに転送後、telnetソフトUNIXにログインしてUNIXのコマンド(tar等)を用いて解凍します(アーカイバーがあれば、Macでも開けます。)。ここでは、普通に、.cgiになっているスクリプトを探しましょう。

 CGIスクリプトを入手できたら、JeditにDrag&Dropして開いて下さい。
 この時、スクリプトの漢字コードと改行コードが出ます。漢字コードを覚えておいて下さい

 開いたスクリプトの1行目を先ほど確認したperlのパスに訂正して下さい。(くれぐれも空行、スペース等を入れないようにして下さい。
 スクリプトに必要なデータを入れて下さい。原文にあった'、"、\、;を削除しないで下さい。

 require ./jcode.plという文字列があるどうか確認して下さい。(あったら、CGIスクリプトを置くディレクトリーにjcode.plも一緒に置く必要があります。
(jcode.plは、テキストで記述されたperlプログラムで、日本語の漢字コードを揃える作業を行います。jcode.plはftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/からダウンロードできます。)。

 スクリプトを保存します。この時に、漢字コードは、最初に開いた時に出てきた漢字コードにしておいて下さい。改行コードは、LF(UNIX用)で結構です。
(ここで、漢字コードを変えると文字化けする恐れがあります。最悪の場合にはInternal Server Errorが出てCGIが実行できなくなります。ご注意下さい。)

【ftpしよう】
 Fetchを起動させて、スクリプトを置くディレクトリーに移動します。
(必要だったら、「Directries」→「Create New Direcry」で新しいディレクトリーを作って下さい。)

 最初に行ったPreferenceでの「Translate ISO Charactors」のチェックが外れているかどうか確認して下さい(外れていなかったら外して下さい。)。

 転送モードに「テキスト」を選んで、CGIスクリプト、jcode.plをアップロードして下さい。(バイナリのデータがあれば、転送モードを「バイナリー」して転送しますが、通常は無いと思います)

【パーミッションを変更しよう】
 UNIXでは、ファイル毎に、ユーザ(u)(FetchではOwnerと表記されます。あなたの事です)、グループ(g)(FetchでもGroupと表記されます。あなたと同じプロバイダーの人です。)、その他(o)(FetchではEveryoneと表記されます。インターネット経由であなたのCGIにアクセスして来るユーザの事です)毎に、「読み込み(Read)」、「書き込み(Write)」、「実行(Search/Execute)」の権限を設定します。

 通常、htmlファイルは、あなたが、「読み書き可」、グループとその他が「読み込みのみ可」になっています(あなたに書き込み権限がないとファイルの削除が出来ません。)。

 拡張子がcgi及びplの実行が必要なファイルには、あなたに「読み書き実行可」の権限を、グループとその他に「読み実行可」の権限を与えます。

 データを書き込み、読み込むファイル(拡張子がdat等のファイル)には、すべての人に「読み書き可」の権限を与えます。

通常のCGIの解説本には、アクセス権限について上のように書いてあります。しかし、グループに書き込み権限を与えるという事は、あなたと同じプロバイダーの人にftpでサーバーにアクセスした時にも書き込み権限を与えているという事になります。セキュリティーを考えるならグループには何の権限も与えない方がいいです。

 パーミッションの設定は、Fetchでファイルを選択してから、「Set Permissions...」を選びます。
Owner、Group、Everyone毎にRead、Write、Search/Executeどの権限を与えるかが出てきますので、与える権限のところをチェックして、OKボタンを押して下さい。

 

【ブラウザで確認してみよう】
 ブラウザで、cgiファイルを表示させてみて下さい。

 ありゃ〜っ!。CGIスクリプトがそのまま、表示されてしまいました....。

その場合は、「.htaccess」ファイルを確認する必要があります。.htaccessファイルは、アクセスに関する設定を行うファイルです。(必要でないプロバイダーもあります)
.htaccessファイルは、上部のディレクトリーに置いてあれば、その下のファイル全てに有効です。
.htaccessファイルはこの名前で保存されている必要があります。(Windows等で.htaccessというファイル名で保存できない場合は、_htaccess等のというファイルで保存、転送してから、ファイル名の変更を行って下さい。)

.htaccessファイルの内容は、CGIを実行させるだけであれば
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl
だけで結構です。

上の2行の入ったファイルを.htaccessというファイル名でサーバーのCGIスクリプトを置いたディレクトリーより上のディレクトリーに置いて下さい。

 これで、CGIスクリプトが実行されるはずです。


これまで、ご説明したことを再確認します。

  • Perlのパスを確認し、CGIスクリプトの一番最初にパスを記入する。
  • Fetchの「Preference」で、「Translate ISO Charactors」にチェックが入っていたら外す。
  • CGIスクリプトは、開いたときと同じ漢字コードで保存する。
  • 転送は「テキスト」で行う。
  • Permissionの設定を行う。
  • スクリプトが実行されなかったら、.htaccessファイルを置く

という事をご説明申し上げました。これだけ守って戴ければ、CGIスクリプトは動くはずです。
新たなインターネットの出会いをお楽しみ下さい。

私も、掲示板を通して、得難い多くの友人と出会いました。(インターネットに乾杯!)



これ以上詳しいお話は.....
 ネットサーフレスキュー[Web裏技]におまかせしましょう。

 そして、もし、貴方のプロバイダーがMS-IISだったら、

   tomokiさんのページを訪問して下さい。

まぁ、そんな面倒な事せずに無料掲示板をMuminWebでどうぞ

 


本書に関する励まし、間違いの訂正は、  

(c)suzuki@apple.club.or.jp