Web-project ホーム 掲示板 メールマガジン ヘルプ

CGIの基礎知識

 
CGIとは、Common Gateway Interfaceの略です。

また、現在CGIプログラムの言語として現在一番普及しているのは[Perl]だと思われます。
ホームページで使用されるHTML形式のファイルでは、アクセスした人は[見る]ことがメインとなりますが、CGIでは、[プログラム] [サーバー] [アクセスした人] と相互にやりとりをすることが出来るため、HTML形式のファイルだけでは出来ないページにアクセスした人との相互コミュニケーションが実現出来るのです。
例えば、[アクセスカウンター] [BBS(掲示板)] [CHAT(チャット)] など、非常に多彩なことが実現可能なのです。
しかし、いざ自分のページでCGIを使おうとすると、まずそれぞれのCGIスクリプト(プログラム)を[設置]する作業をしなければならず、CGIにはHTMLとは少し違う作業が含まれるため、初心者には敷居が高かったり途中で設置をあきらめてしまったりということがあるようです。

 

運用時の注意

CGIは非常に便利で多様な可能性がある反面、HTMLファイルには無い危険性も持っています。

◆自分で改造したテスト済でないCGIスクリプトをサーバーにアップする

初期設定以外の部分のカスタマイズは、ご自分のPCなどで十分にテストを行ってからサーバーにアップして下さい。
[初期設定部分]は、CGIスクリプト自体にわかりやすいように表示されています。
[改造]とは、[初期設定部分][ユーザー変更可能部分]というような解説で示されている以外の、プログラムや動作に直接関わるような部分を変更することを言います。

◆改造が何故危険なのか?

CGIはHTMLファイルと違い、間違っていた場合、[表示されない]または[表示が自分の思い描いていたものと違う]という結果だけではありません。
CGIはプログラムなので、正しいプログラムでないとサーバー内で無限ループ等を起こし、サーバー自体をダウンさせてしまうことにもなりかねません。 サーバーダウンした場合、あなたのホームページの表示やホームページのスペースへの影響だけではなく、サーバー/プロバイダに入っている他の方々や、サーバーを管理している方にも迷惑がかかってしまいます。 CGI初心者の方は、無理な改造はなさらないほうが安全と思われます。 改造したいと思ったら、CGI(Perl)に関する技術的な知識を勉強し、ご自分のローカルな(ネットワークにつながっていない)マシン環境でじゅうぶんなテストを行って安全性を確認してからはじめてホームページスペースのあるサーバーに設置するというような方法をとることをおすすめします。

◆データファイルの大きさは、巨大なものにならないように設定する

CGIのデータファイル(ログファイル)は、巨大なものにならないように初期設定を注意して下さい。
制限なく書き込んでいってしまう仕様のものは、常にファイルの大きさをチェックして、定期的にバックアップしながら一定の容量になるように過去のデータを削除していくなどの方法をとるようにするのが安全です。
また、データファイル(ログファイル)を大きな容量に設定してしまうとCGIを呼び出して動作させた場合に読み込みに時間がかかり、結果として表示が遅くなるなどの弊害もあります。

◆データの扱いに注意する

設置したいCGIに、アクセスする人のパスワードやその他情報を保存しておくような仕様があった場合、データファイルをCGIの管理者であるあなた以外の人に簡単に見られることのないように注意してください。
CGIをブラウザから動作/表示した場合に、パスワードなどの情報が表示されていないからといって安心するのは禁物です。直接データファイルにアクセスして中身を見ることができるという危険性があるからです。 CGIによっては、重要なデータファイルは簡単に中身を表示することができないようにプログラムされているものもありますが、[CGIのディレクトリにindex.htmlファイルを入れて、ディレクトリの中が見えないようにする] [.htaccessファイルを設定して、ディレクトリの中が見えないようにする] などの処理をすることも大切です。

 

ファイルの転送

◆ダウンロード

CGIは、HTMLファイルなどと同様に、あなたのページのプロバイダ/サーバースペースに転送(FTP)しなくてはなりません。 転送は[アップロード]ともいいます。
転送(FTP)には、転送用ソフトを使うと便利でしょう。
Windows対応として、
○ FFFTP(フリー) http://www2.biglobe.ne.jp/~sota/
○ NextFTP(シェアウエア) http://www.toxsoft.com/
など、
Mac対応として、
○ Fetch(シェアウエア) http://www.hart.co.jp/fetch/
などのソフトがありますのでご紹介しておきます。
また、ホームページ作成ソフトでも転送できるものもあると思いますが、あまりおすすめしません。

◆転送のポイント

CGIを設置しようとなさる方は、既にご自分のホームページをお持ち(または契約済)の方だと思いますので、ファイルの転送もご経験済だと思います。 CGI設置の作業の中で、通常のHTMLファイル転送(アップロード)と異なることは、[転送モード]に注意するということです。

◆転送モード

転送モードには、
アスキーモード
バイナリモード

の2種類がありますので、どのファイルがどのモードでの転送かということに注意してください。
転送モードの指定はCGIに説明があると思います。
この転送モードを間違えると正しくCGIが動作しないこともありますのでご注意下さい。

通常は、
拡張子が [ .cgi ][ .pl ][ .log ]などは、アスキーモード
拡張子が [ .jpg ][ .gif ]などは、バイナリモード

で転送するのが一般的ですが、詳しくはCGI記載の指示に従ってください。 転送ソフトによっては、拡張子別に転送モードを設定できるものもあるようです。

画像(gif,jpg)などは、元々バイナリモードで転送する設定になっているものもあるかもしれませんが、拡張子がcgiのものは自分で設定しないといけないものもあるようですのでご注意ください。

 

パーミッションの設定

◆ポイント

転送した[CGIスクリプト][データファイル]などは、 パーミッション(アクセス権) を正しく設定しないとCGIそのものが動作しないなどのエラーにつながります。
CGIではHTMLファイルのように[閲覧するだけ]のものではなく、実際にプログラムを動作させるため、パーミッションの設定が不可欠のものになります。

パーミッションは通常FTPソフトなどでファイルを転送する際に、それぞれのファイルごとに設定します。

手順としては、
-->[FTPソフトでサーバーに接続]
-->[必要なファイルをアップロード(転送)]
-->[それぞれのファイルのパーミッションを設定]
-->[FTPソフトでのサーバー接続を解除(切断)]
-->[ブラウザで転送したCGIのURLにアクセスして表示や動作を確認]
という感じでしょうか。
パーミッションの変更は、ソフトによっては[属性変更]という言葉で機能があるようです。

◆パーミッションの設定の意味

パーミッションは、rwxr-xr-xなどの文字列や、755などの数字のどちらかで設定します。
上に例として挙げたrwxr-xr-xと755は同じ意味です。表記のしかたが違うだけです。

HTMLファイルなどは、閲覧できればOKなので、わざわざパーミッションの設定を行うことはないと思いますが、CGIは閲覧するだけではなくスクリプト(プログラム)を動作させなければならず、そのためにそれぞれのファイルに正しいパーミッションの設定をする必要があります。このパーミッションの設定の作業を省いたり間違えたりすると、CGIを動作させようとしても、表示されなかったり正しく動作しなかったりします。

パーミッションは、3つに分かれた分類にそれぞれ権利を与えます。
わかりやすく言うと、
 [ 自分 ]
 [ 同じサーバーを使用している人 ]
 [ その他 ]

の3つの分類があります。

この場合の
[その他]には、インターネットに接続してブラウザから見る「あなた」も含まれています。WWWからアクセスする人が誰でも(たとえあなたでも)[その他]として扱われることを理解してください。
またCGIのスクリプトも
[その他]として扱われます。

この3つの分類には、3つの権限区分があります。
 [ 読む(閲覧/呼出) ]
 [ 書込 ]
 [ 実行 ]


例えば、HTMLファイルですと
[その他][読む]権限を与えておかないと、ブラウザでアクセスしたときにページが表示されないということになります。

CGIについては、データ(ログ)ファイルに
[書込]したり、スクリプト(プログラム)が[実行]したりしますので、それぞれのファイルに合った権限を与えなくてはなりません。(CGIは自分ではなく[その他]扱いになるのを注意)

一般的には、
CGIスクリプトは755、データ(ログ)ファイルは666、jcode.plなどのファイルは644などの設定がありますが、設置するCGI記載の指示に従ってください。(ただし、プロバイダ/サーバーによっては、755に設定するよう指示が出ている場合でも705にしないと動作しないというような場合もありますので、ご注意ください。)

またセキュリティ面を考えて、755ではなく705などで設定する場合も考えられますが、プロバイダ/サーバーによって設定が異なりますので、あなたがCGIを設置しようとしているプロバイダ/サーバーの説明も詳細にご覧ください。

また、CGIを設置する際にファイルではなくディレクトリにもパーミッションの設定を正しく行わないと動作しないものがありますので、各CGI記載の指示をよくご覧ください。

◆代表的なパーミッションの例

777 rwxrwxrwx
755 rwxr-xr-x
666 rw-rw-rw-
644 rw-r--r--

BACK

Copyright (C) 2001 Web-project.net All Rights Reserved.