Stork Lab

Webサーバーを構築2

注意

ここの内容は久しく更新されておらず、現在では不適切になっているものが多く含まれます。参考のために残しておきますが、内容にはご注意ください。

警告

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

まずは設定を変更しよう

CGIを実行するにはApacheの設定を変更しなければなりません。これは不可視フォルダにおさめられていますので、まずはこれを取り出すことから始めましょう。
ほかのホームページでは「ターミナル」を使って取り出す方法がよく記載されていますが、ここでは「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
という行の#も削除します。
screenshotこれでこのファイルの編集は終わりです。保存した後にもとの場所にコピーします。この際、アクセス権がありませんといわれますが「認証」をクリックすれば管理者パスワードを求められコピーできます。次に所有権を適切に設定しておきましょう。Finderで「情報を見る」を開き「所有権とアクセス権」のペインを開きます。さらに「詳細な情報」を開き、「オーナー」を「システム」に、グループを「wheel」に設定します。
Screenshot次に「/etc/httpd/users/」のフォルダにある「<自分のユーザー名>.conf」をデスクトップにコピーします。(<自分のユーザー名>を適宜自分で設定した半角英数字のユーザー名に置き換えてください。なお、右の画像のユーザー名の部分は消してあります。おまけに.confの位置もずらしてありますので幅などから推測しようとしても無駄ですよ。)これを開き、このファイルの後ろに
<Directory "/Users/<自分のユーザー名>/Sites/cgi-bin/">
Options +ExecCGI -Indexes -MultiViews
</Directory>
を追加します。そしてこれも「httpd.conf」と同様にもとの場所にコピーし、所有権とアクセス権を設定します。
これでCGI実行の用意が整いました。早速、環境設定からサーバーを再起動しましょう。

サーバーが起動しない

起動中のまま反応がないときはおそらくファイルの編集に失敗しています。「アプリケーション」の「ユーティリティ」にある「コンソール」を開いてみましょう。そこにエラーの原因が書かれているはずです。

CGIを実行しよう

では、CGIを実行してみましょう。CGIの設置場所は自分のホームフォルダの「Sites」の「cgi-bin」内です。「cgi-bin」がない場合は適宜作成してください。どんなCGIでもいいですがあらかじめいくつか確認しなければなりません。
  • パーミッションは755になっているか
  • 改行コードはUnix形式になっているか
  • 行の先頭は#!/usr/bin/perlで始まっているか
普通は配布されているCGIは先頭が#!/usr/local/bin/perlとなっていますので注意しましょう。パーミッションは「Finder」では実行権限を与えられないので「ターミナル」を使うほかありません。フリーソフトとして「BatChmod」というソフトがありこれでも変えることは可能です。
適当な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>";