CGI(Common Gateway Interface)

Apacheサーバー構築法 - 第11回 動的コンテンツを作る「CGI」の基本:ITproを見ながら遊んでみる。

前処理(mod_cgiモジュールの導入)

mod_cgiモジュールがデフォルトで有効であることを確認

# /usr/sbin/apache2ctl -M
Loaded Modules:
(snip)
 cgi_module (shared)
(snip)
Syntax OK

CGIを実行するディレクトリの設定

こちらもデフォルトで設定済み

# vi /etc/apache2/site-available/default
(snip)
     33         ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
     34         <Directory "/usr/lib/cgi-bin">
     35                 AllowOverride None
     36                 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
     37                 Order allow,deny
     38                 Allow from all
     39         </Directory>
(snip)

簡単なスクリプトを作成する

別途、勉強しよう。

#!/usr/bin/perl
# 上の1行の前には空行も空白文字もはいらないようにしてください。
# perlのパス名はプロバイダや環境に合わせて変更してください。

#
# CGIのヘッダを書き出します。通常は text/html を指定します。
#
print "Content-type: text/html\n";
print "\n";

#
# HTMLを書き出します。
# "〜\n" の 〜 の部分に HTML を記述しますが、ダブルクォーテーション( " )
# を用いる際は " の代わりに ' を用いるか、\" のように、バックスラッシュ( \ )
# を前に置いてください。
#
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n";
print "    \"http://www.w3.org/TR/html4/loose.dtd\">\n";
print "<html lang=\"ja\">\n";
print "<head>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
print "<title>cgi.cgi</title>\n";
print "<link rel=\"shortcut icon\" href=\"favicon.ico\">\n";
print "</head>\n";
print "<body>\n";
print "<h1>CGIのテスト</h1>\n";

#
# HTMLの終わりの部分を書き出します。
#
print "</body>\n";
print "</html>\n";
print "\n";

スクリプトをアップロード

# pwd;ls -l cgi.cgi
/usr/lib/cgi-bin
-rwxr-xr-x 1 ee83126 ee83126 1021 2009-05-18 01:54 cgi.cgi

ターミナル上で実行してスクリプトの動作を確認

# ./cgi.cgi 
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>cgi.cgi</title>
<link rel="shortcut icon" href="favicon.ico">
</head>
<body>
<h1>CGIのテスト</h1>
</body>
</html>

ブラウザで確認

FirefoxSafariIEの全てにおいて、ファビコンが出ない。別途、調べよう。