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共有を切っておくほうが事故の防止になって良い。
hello guys... im here and really excited learning a new language.
返信削除