06-6777-3688
BLOG

CGIって何?

2013年1月1日

CGIという言葉を聞いたことがあるでしょうか?

ホームページを閲覧していると「掲示板」だったり「チャット」だったり「メールフォーム」だったり「ネットショップ」だったりいろいろとWEB上のシステムがあります。その昔1990年代後半から流行したWEBアプリを実行するためのインターフェイスです。

今は主にphpという言語でかかれたWEBアプリが主流ですがインターネット黎明期で

はCGIがほとんどそれをしめていました。

今回はそんなCGIのことについてのお話です。

cgiって何?

CGIとは

CGI とは Common Gateway Interface の略で、普通のhtmlで作成するページでは、静的なページですが、CGI を用いることにより動的なページを作成することができます。
例えば、掲示板・チャット・カウンタ・検索エンジン・ショッピングカートなどなど。
動的とは見ているユーザーがなにかCGIを実行することでページの内容を変更することできたりデーターベースからデーターを抽出したりできるものをいいます。

通常CGIとは「Perl」(パール)というプログラム言語で書きます。

CGIを実行するにはホームページを設置しているサーバーに「perl(パール)」というソフトが実装・設定されている必要があります。
一般の有料レンタルサーバーにはperlはほとんど実装されていますが、プロバイダのサービスによくついている「5Mホームページ容量無料」というものにはPerlは使えない場合がよくあります。

CGIの動作について

CGIをHTMLから実行するためには以下のような実行タグを書く必要があります。
例えば、
<form action=”****.cgi”>
<a href=”****.cgi”>
<img src=”*****.cgi”>
のような形でCGIを実行させることができます。

このような実行タグによりサーバーにあるPerlというソフトが動作しブラウザに結果を返します。

CGIで何ができるのか

では具体的にCGIによって何ができるのか。
ファイルを操作できる。(ファイルを呼び込んだり、書き込んだり、削除したり、修正したり)
メールを送信できる。
データベースにアクセスし膨大なデータを検索したり、削除したり、追加することができる。

ファイル操作とは
たとえば、掲示板を例に挙げます。
書き込むという操作はファイルに保存するということです。
掲示板の内容をみるということはファイルを呼び込むということです。ファイル操作ができるからこそ掲示板やチャットができるのです。
通常のhtmlではそれができません。

CGIを設置する前に

CGIはフリーのものがたくさん配布されています。そのようなサイトでダウンロードしてください。

CGIを設置するのはHTMLファイルを設置するのとは若干異なります。注意すべき点がいくつかあります。
・perlのパスについて
・パーミッションについて
・ディレクトリ制限について

サーバーにアップロードする方法はHTMLファイルと同様FTPソフトを使います。

perlのパス

フリーのCGIをダウンロードするサイトによくかかれている「Perlのパス」というものがあります。
私がはじめてCGIを設置した時この意味がわかりませんでした。

!#/usr/bin/perl
のような見たことがない書き方??
これをwindows風に書くと
c:\usr\bin\perl.exe
とでもいいましょうか。

!#/usr/bin/perlはUnix系(Linux系)のディレクトリの書き方です。
(UNIX、LinuxはWindowsのようなOSのひとつです。)
usrフォルダの中にあるbinフォルダの中にあるperlというファイルの意味になります。
Unixサーバーには拡張子がないものはたくさんあります。Windowsに慣れしたしんでいる人にはすこしややこしいかもしれませんがperl.exeみたいなことだとおもってください。
CGIのプログラムの1行目にPerlのパスを指定することでCGIを実行さすことがでるようになります。

パーミッション(実行権)とは

これもまたWindowsユーザーには聞きなれない言葉だと思います。
UNIX(Linux)はファイルには必ず実行権(アクセス権)を設定する必要があります。
この実行権を設定することでセキュリティを強固にすることができます。
いままで作成してきたHTMLファイルも実はパーミッションを設定しています。
FTPソフトが自動的に判別しているので気にせずアップロードできています。

FTPソフトを見てもらえばわかりますが、確認の方法はアップロードしているファイルを右クリックしてパーミッションもしくは実行権というところで確認できると思います。
そのパーミッションを正確に設定していないとCGIは全く動きません。
一般的に
CGI実行ファイルは755
書込み用ファイルは666
一般フォルダは755
書込みファイルがあるフォルダは777
それ以外のファイルは644
というのが多いです。

ディレクトリ制限

レンタルサーバーからWEBの領域を借りた際にディレクトリ(フォルダ)を制限しているサーバー会社があります。

制限とはなんなのかといえば決められたディレクリ(フォルダ)でのみCGIが実行できるということ。いわゆる固定のディレクトリでした動作しないということです。

よくあるディレクトリは「cgi-bin」というディレクトリ名です。

有料のレンタルサーバー会社のほとんどではどのディレクトリにおいてもCGIは動作するようになっています。しかし一部の安価なサーバー会社やあまりサーバーに力をいれていない会社ですとその傾向があるように思えます。
(最近では少なくなってきましたが・・・)

なぜcgi-binに限定されているのかといえば、Linuxサーバー特有の構造でもあるのですが、CGIというプログラムを実行する上で固定化することでセキュリティを強化したいというのが主な理由です。

まとめ

最近ではCGIを使ったWEBアプリは非常に少なくなってきました。
今やほとんどがPHPという言語で書かれています。

その理由としては
CGI(perl)はPHPに比べて重い。
PHPのほうが設置が簡単。

CGIをつかった有名なWEBアプリはMovableTypeです。
PHPを使っている有名なWEBアプリはWordPressです。

WordPressが後発にもかかわらずメジャーになったのはPHPで開発されているということが大きな要因かと私は思います。

しかしながら、私はPerlが好きです。それは単に愛着なんですけどね。

ではこのへんで。

お気軽にご相談ください

成果の出るホームページのご提案をさせていただきます。
集客や売り上げに直結するノウハウなどもございます。まずは一度お問い合わせください。

最新の制作実績

弊社サービス