Webサーバーを構築2
注意
ここの内容は久しく更新されておらず、現在では不適切になっているものが多く含まれます。参考のために残しておきますが、内容にはご注意ください。警告
ここで立ち上げるサーバーはあくまでもローカル環境におけるCGIテストなどを目的にしており一般に公開することは目的としておりません。そのため一般に公開できるほどのセキュリティ設定を施しませんので必ずルータなどによるファイアーウォールを設定してください。もし、ここの内容が分からないようならばこの先に進まないことを強くお勧めします。また、必要ないときはWebサーバーを停止させ、ファイアーウォールを有効にしておくことを強くお勧めします。以下に解説するhttpd.confの設定を誤るとApacheが正常に起動しなくなったり見せたくないフォルダが公開されてしまったりしますのでよく理解してから編集してください。また、ここではMac OS X Tiger(10.4)を利用していることを前提に書いてあります。
まずは設定を変更しよう

ほかのホームページでは「ターミナル」を使って取り出す方法がよく記載されていますが、ここでは「Finder」のみを使って取り出す方法を紹介します。
まず、「Finder」を開き、「移動」メニューから「フォルダへ移動...」を選択してください。ここで「/etc/httpd/」と入力します。「httpd.conf」や「magic」といったファイルが並んでいると思います。この中から「httpd.conf」をデスクトップにコピーします。
まずはこの「httpd.conf」のバックアップを作成してください。次にこれをお好きなテキストエディターで開いてください。「Word」のようなワープロではいけませんよ。まず
... ... LoadModule setenvif_module libexec/httpd/mod_setenvif.so #LoadModule dav_module libexec/httpd/libdav.so #LoadModule ssl_module libexec/httpd/libssl.so #LoadModule perl_module libexec/httpd/libperl.so #LoadModule php4_module libexec/httpd/libphp4.so LoadModule hfs_apple_module libexec/httpd/mod_hfs_apple.so LoadModule bonjour_module libexec/httpd/mod_bonjour.soと続いている場所を探します。そして、
#LoadModule perl_module libexec/httpd/libperl.soを
LoadModule perl_module libexec/httpd/libperl.soというように#を削除します。同じように
#AddModule mod_perl.cという行を探し、#を削除します。また、
#AddHandler cgi-script .cgiという行の#も削除します。


<Directory "/Users/<自分のユーザー名>/Sites/cgi-bin/">
Options +ExecCGI -Indexes -MultiViews
</Directory>
を追加します。そしてこれも「httpd.conf」と同様にもとの場所にコピーし、所有権とアクセス権を設定します。Options +ExecCGI -Indexes -MultiViews
</Directory>
これでCGI実行の用意が整いました。早速、環境設定からサーバーを再起動しましょう。
サーバーが起動しない
起動中のまま反応がないときはおそらくファイルの編集に失敗しています。「アプリケーション」の「ユーティリティ」にある「コンソール」を開いてみましょう。そこにエラーの原因が書かれているはずです。CGIを実行しよう
では、CGIを実行してみましょう。CGIの設置場所は自分のホームフォルダの「Sites」の「cgi-bin」内です。「cgi-bin」がない場合は適宜作成してください。どんなCGIでもいいですがあらかじめいくつか確認しなければなりません。- パーミッションは755になっているか
- 改行コードはUnix形式になっているか
- 行の先頭は#!/usr/bin/perlで始まっているか
適当なCGIが見つからない方にはサンプルを用意しました。
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<html><head><title>My First CGI on Mac OS X</title></head>";
print "<body>Hello World!</body>";
print "</html>";
print "Content-Type: text/html\n\n";
print "<html><head><title>My First CGI on Mac OS X</title></head>";
print "<body>Hello World!</body>";
print "</html>";