CGI基礎講座第1回、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が動作するフォルダのパーミッション「755」
フォルダ内のデータに、アクセスしますからね、「755」、まれにエラーになる場合は「705」に変更します。
Sendmail、これ何?
sendmailとは、インターネット上で運用されるメールサーバであり、事実上の標準ソフトウェアになっている。
ユーザが送信したメールを受け取って、他のサーバと連携して配送したり、メールをユーザが受け取るまで保管したりする。
ソースコードの公開されたフリーソフトウェアとして元々UNIX用に開発されたが、現在では様々なプラットフォームに移植されている。
インターネット上で運用されるメールサーバと覚えておけば良いでしょう。メールを扱うCGIの場合、この設定が必要です。
このlolipopの場合は、#!usr/sbin/sendmailですね。
CGI基礎講座第1回、終了です。
|