CGI動作環境の構築

 本章では、http://localhost/cgi-bin/xxx.cgi でCGIが動作させる方法を説明していきます。そして、自分のホームディレクトリでCGIが動作する環境を構築します。つまり、http://localhost/~futomi/xxx.cgi でCGIが動作する環境を構築します。また、最後に、この開発環境におけるApacheのエラーログの見方を説明します。

※ 以下、 futomi と記載されている場所は、あなたのアカウント名に置き換えてご覧下さい。

CGIの実行

まず、CGI を実行させるようにするには、レンタルサーバで CGI をセットアップするのと同様にパーミッションを変更しなければいけません。ここでは、/Library/WebServer/CGI-Executables 内に CGI ファイルを用意して試してみましょう。そして、パーミッションの変更方法を理解してください。

以下の通り、フォルダ CGI-Executables を開いてください。

Macintosh HD・アイコンライブラリ・アイコンWebServer・アイコンCGI-Executables・アイコン

フォルダ CGI-Executalbles 内に test.cgi を作成して保存してください。test.cgi には次のように記述しておきます。

#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
print "hello";

test.cgi を保存する際には、必ず改行コードを LF としてください。改行コードを指定して保存できるテキストエディタを使ってください。

パーミッションの変更

次に、パーミッションを変更します。Mac OS X 上でファイルのパーミッションを変更する方法は2通りあります。一つは、ターミナルからUNIXコマンドで変更する方法です。もう一つは、SCPソフトを使って変更する方法です。

まずは、UNIXコマンドでパーミッションを変更してみましょう。以下の通り、Mac OS X 付属のターミナルを起動してください。

Macintosh HD・アイコンアプリケーション・アイコンユーティリティ・アイコンターミナル・アイコン

ターミナル・ウィンドウ

ターミナル画面上で、次のコマンドを入力して実行してください。

localhost:~ futomi$ chmod 705 /Library/WebServer/CGI-Executables/test.cgi

上記コマンドは、test.cgi のパーミッションを705に変更します。コマンドを入力して、最後にreturnキーを押して下さい。何もエラーが表示されなければ、正常にパーミッションが変更されたことになります。

ブラウザーのアドレス欄に、http://localhost/cgi-bin/test.cgi を入力してアクセスしてみて下さい。ブラウザーに hello と表示されればOKです。

次に、UNIXのコマンドはどうも苦手という方のために、SCPソフトで変更する方法をご紹介いたします。Mac OS X は sshが利用可能です。レンタルサーバなどで提供されているサーバと同様な手順でパーミッションを変更することができるのです。ただし、ファイルの所有者(オーナー)が、あなたのアカウントでないと変更できません。

Mac OS X はデフォルトでは sshの機能は無効になっていますので、それを有効にします。Apacheを起動したときと同様に、[Machintosh HD]→[アプリケーション]→[システム環境設定]を起動してください。システム環境設定画面が開いたら、共有を選択してください。

Macintosh HD・アイコンアプリケーション・アイコンシステム環境設定・アイコン共有・アイコン

リモートログイン設定画面

Mac OS X では、sshのことを「リモートログイン」と呼んでいます。共有設定画面で「リモートログイン」にチェックを入れてください。これでsshを使ってMacにログインできるようになります。

リモートログイン機能を有効にしたら、SCPソフトで自分のマシンに接続します。サーバ名には「localhost」を指定して下さい。ユーザ名とパスワードは Mac OS X 上のご自分のアカウントとパスワードを指定して下さい。ここでは、Mac OS X 対応のFTPソフトである Transmit をご紹介します。Transmit はFTPだけでなくSCPにも対応しています。サーバ接続設定は次の通りにして下さい。

Transmitのログイン画面

transmitのサーバ接続設定内容
サーバ localhost
ユーザ名 Mac OS X で設定した管理者アカウント
(現在、Mac OS X にログインしているユーザ名)
パスワード Mac OS X で設定した管理者パスワード
プロトコル SFTP

当サイトでは、Transmit でのパーミッション変更方法を紹介していますので、あわせてご覧下さい。

ホームディレクトリでCGIを動作させる方法

Mac OS X はデフォルトの状態ではホームディレクトリにある「サイト」フォルダ内ではCGIが動作しない設定になっています。Mac OS X にインストールされているApacheは、ホームディレクトリごとに設定ファイルが分かれており、それを編集します。

ホームディレクトリごとの設定ファイルの場所

/private/etc/apache2/users/futomi.conf

もしあなたのユーザー名が "taro" であれば、taro.conf があるはずです。ファイル名についてはご自身の環境にあわせて読み替えてください。

このホームディレクトリごとの設定ファイルですが、残念ながら簡単にFinderから見ることはできません。そのため、ターミナルからviエディタを使って直接編集します。

localhost:~ futomi$ sudo vi /private/etc/apache2/users/futomi.conf
Password:

もしviの使い方が分からない場合は、「Finderからシステムファイルにアクセスする方法」をご覧ください。

エディタを使ってこのファイルを開くと、次のような設定になっています。

<Directory "/Users/futomi/Sites/">
  Options Indexes MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

これを次の通りに書き換えます。変更または追加の部分は赤字で示しています。

<Directory "/Users/futomi/Sites/">
  Options All
  AllowOverride All
  Order allow,deny
  Allow from all
  AddHandler cgi-script .cgi
</Directory>

設定ファイルを保存したら、Apacheを再起動します。

Macintosh HD・アイコンアプリケーション・アイコンシステム環境設定・アイコン共有・アイコン

Web共有設定画面

「Web共有」のチェックを外してから、再度、チェックを入れてください。これでWebサーバが再起動します。

CGIの動作確認

 あなたのホームディレクトリの「サイト」フォルダ内にCGIを設置してみましょう。

サイト・アイコン

次の内容を test.cgi として「サイト」フォルダ内に保存してください。

#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
print "hello";

test.cgi を保存する際には、必ず改行コードを LF としてください。改行コードを指定して保存できるテキストエディタを使ってください。

次にターミナルを起動して、test.cgi のパーミッションを705に変更します。

localhost:~ futomi$ cd ~/Sites
localhost:~Sites futomi$ chmod 705 ./test.cgi

前述したとおり、パーミッションは、FTP ソフトを使って変更することも可能です。

これでCGIの仕込みは完了です。ブラウザーから http://localhost/~futomi/printenv.cgi にアクセスしてみてください。ブラウザーに hello と表示されればOKです。futomi の部分は、あなたのアカウント名に読み替えてください。

エラーログの見方

 CGIを設置したけれども Internal Server Error になって原因が分からないということがあるでしょう。その場合、Apacheのエラーログに手がかりがあるものです。ここでは、Apacheのエラーログを見てみましょう。

 Apacheのエラーログは、/private/var/log/apache2/error_log に出力されます。残念ながら、Finderを使って見ることはできませんので、ターミナルを使います。ターミナルを起動したら次のコマンドを実行してください。

localhost:~ futomi$ tail -f /private/var/log/apache2/error_log

これでターミナル上に、エラーログの内容がリアルタイムで表示されるようになります。新たにエラーが発生するたびに、画面がスクロールしながらターミナル上に表示されていきますので、Webアプリケーション開発ではとても便利です。

終了したい場合は、[control]+[C] を押してください(controlキーを押しながらCキーを押します。)。


次章からは、PHPが動作するようApacheの設定を変更していきます。