今回の目標は Apache 2.2.4 の仮想ホスト環境での環境変数の吟味である。
host0 192.168.1.4 host0.example.com 192.168.1.4 host1 192.168.1.4 host1.example.com 192.168.1.4である。
OSX に Apache 2.2.4 をインストールする場合には、既に存在する Apache 1.3 との付き合い方を考えておく必要がある。単なる実験であれば、既存の Apache 関係のファイル(/etc/httpd=/private/etc/httpd 以下のファイル)は変更しない方が良いであろう。今回は単なる実験であるから、OSX の既存の設定は変更しない。
-bash$ ps -axg |grep httpd 209 ?? Ss 0:00.05 /usr/sbin/httpd 211 ?? S 0:00.00 /usr/sbin/httpd -bash$ sudo apachectl stop -bash$/usr/sbin/httpd は OSX の Apache 1.3 である。なおバスを指定しないで apachectl を実行すると OSX にインストール済みの apachectl が実行される。
ところで僕の G5 Mac の httpd は
-bash$ ls -l /usr/sbin/httpd -rwxr-xr-x 1 root wheel 401792 Mar 21 2005 /usr/sbin/httpd -bash$となっているから結構古い。
/usr/local/apache2である。
./configure で
configure: error: Cannot use an external APR-util with the bundled APRのエラーが出たが、ググって解決した:
./configure --with-included-apr
ところが設定に意外と手こずった。原因は次の二つの事が念頭になかったからである。
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory>
AllowOverride Noneこの値が None であれば .htaccess を見に行かない
Order deny,allow Deny from all原則拒否
ドキュメントルートに関しては
<Directory "/usr/local/apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride None Options +ExecCGI AddHandler cgi-script cgi pl Order allow,deny Allow from all </Directory>
なお IP アドレスや特定のクライアントからのアクセス制御を行いたい場合には
<Directory アクセス制限するディレクトリパス> order deny,allow deny from all allow from 10.0. allow from 10.0.1.0/255.255.255.0 allow from .lo.ash.jp </Directory>のように使う。実際的な問題としては "allow from .lo.ash.jp" のような使い方はしないであろう。オーバーヘッドが大きい上に、殆どのクライアントに対しては意味を持たないからである。
./bin/apachectl startを実行する。すなわち
cd /usr/locale/apache2 sudo ./bin/apachectl startである。
"start" の指示の他に "stop", "restart" が役に立つ。
それにしても何でこんなアホな仕様に...