2008年10月14日火曜日

LeopardでApacheを使う・お手軽入門編

LeopardにApacheが入っているのは話に聞いていたが、ちょっとしたAjaxのコードを試したくなりwebサーバを起動した。簡単ではあったがちょっとクセがあるのでメモしておく。

Apacheの起動

デスクトップOSなのに超簡単。

Leopardのシステム環境設定→共有のメニューに進み、「Web 共有」を「入」にする。

これだけで

http://localhost/

が見られるようになるのはすごい。

どうでもいいが「入」「切」って書いてある電気のスイッチを最近見ないような気がする。

トップページを書きかえてみる

なにもせずにhttp://localhost/を表示するとApacheにようこそ、みたいなページが表示される。このファイルの実態は

/Library/WebServer/Documents/index.html(またはindex.html.ja.iso2022-jpなど)

であるため、このファイルを適当に書きかえて保存すればよい。管理者権限が必要。

ちなみに、このディレクトリがどこで設定されているのかというと

/private/etc/apache2/httpd.conf

というファイルである。/privateというディレクトリは馴染みがない名前だが、Leopardでは/etcが/private/etcへのシンボリックリンクなので

/etc/apache2/httpd.conf

に設定ファイルがあると思ったほうが頭に入りやすい。

ともあれ、このhttpd.confの中のDocumentRootがそれである。

# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents"

設定を変えた後は必ず再起動

Apacheの設定を変えた後は必ずApacheの再起動をしなければいけない。上記の「入」「切」のスイッチを使って「切」→「入」としても良いが、ターミナルを使って

sudo apachectl restart

または

sudo /usr/sbin/apachectl restart

としたほうが簡単だ。

UserDir(ユーザディレクトリ)の設定

自分専用のLeopardならば/Library/WebServer/Documents以下のファイルを書き替えてテストを続けてもいいのだが、自分のホームディレクトリ下をブラウザで見られるようにしたほうが後の管理が楽である。URLは

http://localhost/~ユーザ名/

となる。この機能は初期状態のままだと使えないので

/private/etc/apache2/extra/httpd-userdir.conf

なるファイルを編集する。

#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received. Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir Sites
UserDir disabled
UserDir enabled ユーザ名

<Directory /Users/*/Sites>
Order deny,allow
Deny from all
Allow from localhost
</Directory>

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

の赤字部分を加えればよい。Apacheの再起動後、

/Users/ユーザ名/Sites/index.html

http://localhost/~ユーザ名/index.html

で表示できるようになる。

どうしてpublic_htmlではなくてSitesを使うようになっているのかはよくわからない。

CGIの設定

mod_perlもあるし今どきCGIもないだろうと言われると困るが、お手軽に設定をするのが本稿の目的であるために以下を書いておく。

CGIを使うためには、先ほどのhttpd-userdir.confを開き、以下のように編集する。

#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received. Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir Sites

UserDir disabled
UserDir enabled ユーザ名

<Directory /Users/*/Sites>
Options ExecCGI
Order deny,allow
Deny from all
Allow from localhost
AddHandler cgi-script .cgi

</Directory>
#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

Apacheを再起動した後、/Users/ユーザ名/Sites/hoge.cgiをテスト用に作って実行可能にする。中身はこんな感じにしておけばよい。

#!/usr/bin/perl
print "content-type: text/html\n\n";
print "Hello";

これで

http://localhost/~ユーザ名/hoge.cgi

にアクセスできるようになる。

もしブラウザ上に「Hello」が表示されない場合は、エラーログを見てみるとヒントがあるはずだ。エラーログは

/private/var/log/apache2/error_log

にある。

セキュリティ関係

蛇足ながら、テストが終わったらweb共有を切っておくほうが事故の防止になって良い。

1 件のコメント: