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ですね。 |