bashでCGI (1) Apacheの設定

こんにちは!「温故知新」がマイブームになっている、河野です。

早速、今回はCGIプログラムをシェルスクリプト(bash)で作ってみたいと思います。

なぜperlじゃなくてbashなのかというと、私がperlを良く知らないからです(^^;
でも、日常的に使っているコマンドで組み立てますので、簡単だと思います!たぶん!

CGIについておさらい

CGIという単語を数年ぶりに使いましたので、念のために調べてみました。

CGI とは、HTTPサーバと外部プログラムとのインターフェースのことです。Common Gateway Interfaceの略です。CGIに則ったプログラムのことをCGIプログラムと言いますが、それも含めてCGIと言うことが多かったと思います。

ざっくり言うと以下のような決まりになっています。

  1. HTTPサーバーは、リクエストの内容に応じて、コマンドライン引数・環境変数・標準入力を設定し、外部プログラムを起動する
  2. 外部プログラムは受け取った情報をもとに処理を行い、結果を標準出力する

CGIについての詳細は、RFC3875で定義されています。
http://tools.ietf.org/html/rfc3875

Apacheの設定

今回はApacheを使用します。Apacheの設定(httpd.confなど)で以下の3点を確認してください。

1.CGIモジュールを有効にする

標準設定のままだと有効になっているようです。

2.CGIのハンドラを設定する

これは標準設定だとコメントアウトされています。
(この設定を数年ぶりに行いました…)

3.CGIの実行を許可する

DirectoryディレクティブなどのOptionsでExecCGIを指定します。

CGI用のディレクトリを準備

作業を進めるために、/var/www/html の下にディレクトリを作って、アクセス権限などを設定しました。
作業も直接このディレクトリでやっていきます。

動作確認

とりあえず動作確認してみます!

※「おまじない」のところと、改行コードについては次回以降に説明をしたいと思います。

cgiプログラムは単体で実行できないといけないので、実行権限を設定します。

単体で実行できるか

curlで確認

ちゃんと動いたようです。

これでCGIが動作する環境ができましたので、次回からRFCを参考にしながら、CGIの仕組みについて理解を深めていこうと思います。

Comments are closed, but you can leave a trackback: Trackback URL.