Leopard のローカル環境を整える Apache 2 編

先日 Leopard をクリーンインストールしてからローカル環境を復元していなかったので調べながらやってみます。
Tiger のときは MacPorts が意味不明だったり、バラバラにインストールしようとして挫折したりしたので、今回は「毎回この方法でいくぜ!」というのを確立したい(`・ω・´)
関連記事は以下。

Apache 2 のインストールは不要

Apache 2 はデフォルトでインストールされていて、システム環境設定の 共有 で Web 共有 にチェックを入れることにより使えるようになります。バージョンは 2.2.9 でした。
http:// (IP アドレス) / で /Library/WebServer/Documents の内容が、http:// (IP アドレス) /~ (ユーザ名) で /Users/ (ユーザ名) /Sites の内容が表示されます。
IP アドレスが接続の度に変わると困るので固定設定にしています。

hosts の設定

確認作業をするときに Windows でもネットワーク越しに Mac のファイルを見ているので、hosts を編集しています。
いちいち IP アドレスを入力するのは面倒なので、URL としてこの世に存在しないであろう適当な名前をつけました。

Finder のメニュー → フォルダへ移動 で /etc と入力して移動、hosts ファイルを適当な場所にコピーしてから以下のように編集します。
xxx.xxx.xxx.2 と xxx.xxx.xxx.12 というのは MacBook に割り当てている有線と無線の IP アドレス、hoge.local というのは例でこの名前というわけではありません。

127.0.0.1        hoge.local
xxx.xxx.xxx.2    hoge.local
xxx.xxx.xxx.12   hoge.local

保存後ファイルをコピーして /etc/hosts に上書きしようとするとパスワードを求められるのでパスワードを入力して上書きします。
ターミナルでファイルを開いて編集するという方法が一般的のようですが、ターミナル慣れしていないため不安なのでついつい敬遠してしまいます。

これでブラウザに http://hoge.local/ と入力すると /Library/WebServer/Documents の内容が、http://hoge.local/~(ユーザ名) で /Users/ (ユーザ名) /Sites の内容が表示されるようになりました。
ここで「システム環境設定の 共有 で Web 共有のチェックを外して Apache を停止、もう一度チェックを入れて起動」(以下、再起動) すると、今まで IP アドレスで表示されていた「このコンピュータの Web サイト」が http://hoge.local/ となっています。

Windows での hosts の設定

Windows の hosts も編集して hoge.local で xxx.xxx.xxx.2 や xxx.xxx.xxx.12 の内容を表示できるようにします。

hosts ファイルの場所は、C:?WINDOWS?system32?drivers?etc?hosts です。
このファイルを開き、Mac の hosts と同じように編集します。

Apache 2 の設定

Apache 2 の設定ファイルは /etc/apache2 内にあります。

  • httpd.conf ・・・全般的な設定
  • /users/ (ユーザ名) .conf ・・・ユーザ毎の設定

これらのファイルを編集するときは hosts と同様にファイルを適当な場所にコピーしてから編集、保存後ファイルをコピーして元の場所に上書きします。パスワードの入力が必要になります。
また、これらのファイルを編集した後は Apache の再起動をしないと反映されませんので忘れずに。

CGI が動くようにする

さぁここから設定を!と思いきや、CGI は最初から動くように設定されています。
/Library/WebServer/CGI-Executables 内に置いた CGI ファイルを実行できるようになっているので試してみます。

#!/usr/bin/perl
print "Content-type:text/plain\n\n";
print "ヽ(・ω・)ノ";

上記の通り記述したファイルを test.cgi という名前を付けて /Library/WebServer/CGI-Executables に保存、ターミナルでパーミッションを変更します。

chmod 755 /Library/WebServer/CGI-Executables/test.cgi

ターミナルに長々と /Library/WebServer・・・と入力するのは面倒なので、いつも chmod 755 と入力した後に該当のファイルをドロップしています。打ち間違いもないし簡単。

ブラウザで http://hoge.local/cgi-bin/test.cgi を表示すると ヽ(・ω・)ノ が表示されました。

~ (user) で CGI が動くようにする

/etc/apache2/users/ (ユーザ名) .conf を以下の通り編集・追記します。

Options All
AddHandler cgi-script .cgi

先程の test.cgi を /Users/ (ユーザ名) /Sites に置いてパーミッションを変更、Apache を再起動してからブラウザで http://hoge.local/~ (ユーザ名) /test.cgi を開くと・・・ヽ(・ω・)ノ

Option についてはいろいろな設定項目がありますがローカル限定なのでなんでもありの All にしました。
AddHandler は .cgi を CGI ファイルだよと教えてあげるためのもの。

PHP が動くようにする

/etc/apache2/httpd.conf の L.115 辺りに以下の記述があるので # を外します。

LoadModule php5_module libexec/apache2/libphp5.so

動作テストを行うために、以下の記述をしたファイルを test.php という名前を付けて /Users/ (ユーザ名) /Sites に保存します。

<?php phpinfo(); ?>

Apache を再起動してからブラウザで http://hoge.local/~ (ユーザ名) /test.php を開くと phpinfo が表示されますヽ(・ω・)ノ
PHP のバージョンは 5.2.6 でした。

.htaccess を使えるようにする

/etc/apache2/users/ (ユーザ名) .conf を以下の通り編集します。

AllowOverride All

AllowOverride は .htaccess ファイルを読み込むかどうするかを決めるもの。

/Users/ (ユーザ名) /Sites の内容を ~ (ユーザ名) を付けずに表示する

バーチャルホストという機能を使います。
/etc/apache2/users/ (ユーザ名) .conf に以下の内容を追加します。

NameVirtualHost localhost
NameVirtualHost xxx.xxx.xxx.2
NameVirtualHost xxx.xxx.xxx.12

<VirtualHost localhost xxx.xxx.xxx.2 xxx.xxx.xxx.12>
	ServerName hoge.local
	DocumentRoot /Users/ (ユーザ名) /Sites/
</VirtualHost>

L.1 と L.2 の NameVirtualHost は、有線と無線の IP 両方使えるようにする記述、VirtualHost で囲まれた部分は有線と無線の IP 両方を hoge.local で開きますよという記述です。

Apache を再起動後ブラウザで http://hoge.local/ を開くと、先程まで表示されていた /Library/WebServer/Documents の内容ではなく、/Users/ (ユーザ名) /Sites の内容が表示されるようになりましたヽ(・ω・)ノ

サブドメインを使えるようにする場合

ページ内のリンクを絶対パスで書きたいときなどに必要となるサブドメインを使いたい場合の設定。
/etc/apache2/users/ (ユーザ名) .conf に以下の内容を追加します。

<VirtualHost localhost xxx.xxx.xxx.2 xxx.xxx.xxx.12>
	ServerName sub.hoge.local
	DocumentRoot /Users/ (ユーザ名) /Sites/sub/
</VirtualHost>

これで /Users/ (ユーザ名) /Sites/sub の内容が http://sub.hoge.local/ で表示できるようになります。

/Users/ (ユーザ名) /Sites にシンボリックリンクを作る

/Users/ (ユーザ名) /Sites 内にすべてのファイルを置けたらいいのですが、ファイル管理の都合上別の場所に置いたファイルを表示したいときはシンボリックリンクを作ります。
例えば /Users/ (ユーザ名) /Riszw/管理サイト/p15.jp/httpdocs の内容を http://hoge.local/p15/ で開きたい場合、ターミナルで以下の通り入力します。

cd /Users/ (ユーザ名) /Sites
ln -s /Users/ (ユーザ名) /foo/bar/p15.jp/httpdocs p15

これで /Users/ (ユーザ名) /Sites に p15 という名前のフォルダに矢印がついたファイルが作成され、http://hoge.local/p15/ で /Users/ (ユーザ名) /foo/bar/p15.jp/httpdocs の内容が表示されるようになりました。
例によってフォルダ名を入力せずに、該当フォルダをターミナルにドロップしています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です