CGIをC言語で書く

記事
IT・テクノロジー
1人が購入しています
user
テルモピレー株式会社
1人が購入しています
CGIとはなにか
さて、昨今のWEB制作ではCGIという言葉もあまり使われなくなってきていますが、基本的にWEB制作で一番重要なのは、CGIです。なぜなら、WEBサーバが、ブラウザからアクセスされたときに、そのリクエストを処理して、ブラウザに表示させるページを生成するのがCGIプログラムだからです。

固定的なhtmlファイルだけのWEBページなら、htmlファイルと、そこから表示する画像、動画などのファイルを、サーバの所定のディレクトリ(apacheのhttpdなら、/var/www/html)に入れておけば良いのですが、これだと、ページのアクセスカウンタすら設置できません。そのあたりの話は、下に示す前回のブログで書いた通りです。
それでは、具体的にCGIは何をしているのでしょうか?インターネット上のWEBページにはURLがあり、そのURLには、どのWEBサーバの、どのWEBページにアクセスするか、が書かれています。そこで、ブラウザが、特定のWEBページをアクセスするときは、そのWEBページのURLにあるWEBサーバに対して、URL内にある特定のWEBページを指定します。たとえば、URLが "https://coconala.com/blogs/3431352/222524" の場合、サーバ名は、"https://coconala.com" で、その中の "/blogs/3431352/222524" というWEBページをあらわしています。この"/blogs/3431352/222524" というのが通常のHTMLで書かれたファイルであれば、そのファイルの内容が直接WEBサーバから、アクセスしてきたブラウザに送り返されて表示されますが、実際は、ここでCGIが絡んでいます。実は、URLには書かれていないCGIが暗黙で指定されています、たとえば、下のように、"/cgi-bin/X.cgi" というのが隠れています。
"https://coconala.com/cgi-bin/X.cgi/blogs/3431352/222524"
まあ、X.cgiというのかそれとも、Y.cgiなのか、全く不明ですが、仮に、X.cgiとしておきますが、これがCGIプログラムです。そこで、apache なら、/var/www/cgi-binというディレクトリにあるX.cgiというCGIプログラムが起動され、"/blogs/3431352/222524" というWEBページを表すID(名前)が渡されて、 CGIプログラムは、"/blogs/3431352/222524" と呼ばれるページを作って、ブラウザに送り返します。
そして、ページを作る時に、ページを構成する文書の元にあたるものは、通常CMSとよばれるデータベース(SQLなど)で管理されています。
したがって、CGIプログラムは、WEBページのアクセス要求を解析して、データベースをアクセスし、返すべきページのもととなるデータ(文章など)を得て(getして)、ページを作り、ブラウザに送り返すわけです。
PHPというスクリプト言語は、ページ全体を表す大枠の部分がHTMLファイルの中に埋め込まれ、PHPの処理系(実行系)は、データベースにある情報をもとに、書き換える部分を書き換えてページ全体を作り、ブラウザに送り返します。したがって、PHPのスクリプトが、X.cgiとして、cgi-bin のディレクトリにあるわけです。

 CGIはC言語でも書ける
CGIプログラムを置いておく場所は、cgi-binです。bin が付いているというのは、バイナリファイルを置いておくのが本来のスジですから、本来バイナリの実行ファイルにして実行するC言語などの実行ファイルを置いておくのがスジです。現在は、99.9%くらいは、PHP、ruby‘、perlなどのスクリプト言語でかかれたテキストファイルがcgi-binの下に置かれていたりしますが、本当は、C とかC++とかのプログラミング言語で書いたCGIプログラムをコンパイルして、その実行ファイルを、cgi-binに置くのが正しいと言えます。
ということで、弊社のHOTPortシステムでは、CGIをC99言語で書いています。それで怒られることはありません。
また、CGIプログラムはできるだけ小くて、実行に負担がかからないほうがよいのです。その意味では、スクリプト言語はその処理系がかなり大きいので、処理系を起動するのに時間がかかり、パフォーマンスが落ちます。やっぱり、CGIプログラムはCで書くべきです。
その代わり、CGIは、ほとんどなにもしないようにしています。
なにもしないというのは、CGIは、ブラウザから送られてきたメッセージやその他を、全部、データベースに丸投げする、という仕組みで、丸投げしたあと、データベースが送り返してきたページのデータを、これまた、そのままブラウザに送り返す、というずぼらなCGIプログラムです。これは、軽いCGIになります。実際に実行ファイルの大きさは、80kB程度です。
ということで、有料ページには、CGIが実際になにをするか、というのをサンプルプログラムを提示しながら、書いてまいります。
この続きは購入すると読めるようになります。
残り:13,058文字
CGIをC言語で書く 記事
IT・テクノロジー
500円 1人が購入しています
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す