HomePage講座     Yukiの休息所
 Yukiの休息所(趣味の部屋)
 ホームページ講座
 CGI基礎講座
次の項目へ>>
<<前の項目へ

 CGIの基礎知識、其の1

 CGIの使用方法に入る前に、CGIの基礎知識を学びましょう。

 CGIとは、何でしょう、いきなり「パーミッション」なる言葉も出てきますが、
 「Perl」の基礎知識と共に、ぜひ覚えてください。

 CGIを使うのではなく、CGIプログラムを利用する為の基礎知識のみ、
 興味のある方は、「CGI」「Perl」「パーミッション」で、検索してみて下さい。
 
 CGI,基礎講座、第1回 CGIの基礎を学びましょう。
   
 CGIとは、いったい何
 CGIとは、Webサーバが、Webブラウザからの要求に応じて、 プログラムを起動するための仕組み。 通常のHTMLでは、Webサーバは蓄積してある文書をただ送出するだけですが、 CGIを使うことにより、プログラムの処理結果に基づいて動的に文書を生成し、送出したり出来ます。
 現在ではほとんどのWebサーバソフトがCGIに対応しています。 CGIはどのような開発言語でも使用出来るんですが、一般的には「Perl」が使われます。
 「Perl」は、(ぱーる)と読み、インタプリタ型の言語です。

 つまり、CGIとは、Webサーバ上の1つの規格であり、それを使う為のプログラムが「Perl」である、 との理解で良いでしょう。
 
 Perlとは、いったい何
   Perlとは、Larry Wall氏が開発したプログラミング言語。
 CGI専用ではなく、テキストの検索や抽出、レポート作成に向いた言語で、 インタプリタ型であるため、コンパイルなどの処理を行なうことなく、 すぐに実行することが出来るのが特徴。
 とにかく機能が豊富なことで知られる。 当初はUNIX上で利用されたが、現在ではWindowsを含む様々なプラットフォームに移植されている。

 つまり、CGIを利用する為の言語と考えて良く、Linaxでも、利用可能です。
 
 Perlを使うには?
   Perl言語が理解できればCGIは作成できる訳ではなく、 Webサーバにある「環境変数」を利用して、CGIを実現します。
 環境変数は、少し難しくなるので、ここでは割愛します。

 Perlでは、Webサーバーの環境変数を使う事で、CGIを構成しているという事です。
 
 Perlの初期設定
   perlスクリプトの最初の行には、
#!usr/local/bin/perl
のようなperlが存在するパスを書く必要があります。 1行目が空白行でも、先頭にスペースがあってもエラーになります。
 UNIXサーバでは、#!usr/local/bin/perl
 Linuxでは、 #!usr/bin/perlに設定されています。
 Windowsのローカルサーバでは必要なく無視される。

  ローカルで問題なく動作しているCGIがサーバにアップするとエラーになる場合のほとんどが、 このperlのパスに原因があります。

 Perlのパスは、CGIが使用可能なサーバーであれば、必ず記載があるはず、
 このlolipopの場合は、#!usr/bin/perl、#!usr/local/bin/perl両方使えるようになりました。
 
 パーミッションとは?
   いきなり、難しい言葉が、出てきました。
 パーミッションは、ファイルやフォルダに与えるアクセス権の設定の事、 読み出し専用・書き込み可能等、一般的にも使われているアクセス権を Web上のファイル&フォルダに設定するのが、パーミッション設定です。
 通常のHTMLは、読み出しだけすが、CGIでは、Webサーバー上のデータを読み出す以外に、 書き込みや実行が必要な為、アクセス権限の設定をしないと使用できない仕組みになってます。
   こちらが、アクセス権の設定値
オーナー グループ それ以外
読み込み 書き込み 実行 読み込み 書き込み 実行 読み込み 書き込み 実行
r w x r w x r w x
4 2 1 4 2 1 4 2 1
この数値を、組み合わせて、アクセス権限を設定します。
 左からオーナー・グループ・それ以外の3つにわけ、 それぞれの設定数値を合計して、3桁で設定します。
 
 代表的なパーミッションの数値は?
   CGIのパーミッション「755」
  拡張子「.cgi」のファイルは、「755」の設定で、良いのですが、 「705」を設定しても動くでしょう。

 CGIが使用するデータファイル「644」
  その他の、各種データは、実行しませんから、「644」、または、「604」になるわけです。

 CGIが動作するフォルダのパーミッション「777」
  フォルダ内のデータに、アクセスしますからね、「777」、 まれにエラーになる場合は「755」に変更します。
 
 Sendmail、これ何?
   sendmailとは、インターネット上で運用されるメールサーバであり、 事実上の標準ソフトウェアになっている。
 ユーザが送信したメールを受け取って、他のサーバと連携して配送したり、 メールをユーザが受け取るまで保管したりする。
 ソースコードの公開されたフリーソフトウェアとして元々UNIX用に開発されたが、 現在では様々なプラットフォームに移植されている。

 インターネット上で運用されるメールサーバと覚えておけば良いでしょう。 メールを扱うCGIの場合、この設定が必要です。
 このlolipopの場合は、#!usr/sbin/sendmailですね。