こんにちは!「温故知新」がマイブームになっている、河野です。
早速、今回はCGIプログラムをシェルスクリプト(bash)で作ってみたいと思います。
なぜperlじゃなくてbashなのかというと、私がperlを良く知らないからです(^^;
でも、日常的に使っているコマンドで組み立てますので、簡単だと思います!たぶん!
CGIについておさらい
CGIという単語を数年ぶりに使いましたので、念のために調べてみました。
CGI とは、HTTPサーバと外部プログラムとのインターフェースのことです。Common Gateway Interfaceの略です。CGIに則ったプログラムのことをCGIプログラムと言いますが、それも含めてCGIと言うことが多かったと思います。
ざっくり言うと以下のような決まりになっています。
- HTTPサーバーは、リクエストの内容に応じて、コマンドライン引数・環境変数・標準入力を設定し、外部プログラムを起動する
- 外部プログラムは受け取った情報をもとに処理を行い、結果を標準出力する
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の仕組みについて理解を深めていこうと思います。