Logo address

Apache on OSX

目次

Jul 2007
ここでは OSX での Apache 2.24 のインストールに関する問題を扱う

Apache

僕は 2002 年以来 Plan 9 上で自作の web サーバ Pegasus を使って僕のホームページを運用している。それ以前は Apache を使っていたが、もう長い間 Apache を運用していない。しかし時々 Apache に関する実験が必要になることがある。環境変数などは可能な限り Apache 互換にしたいからである。

今回の目標は Apache 2.2.4 の仮想ホスト環境での環境変数の吟味である。

実験環境

サーバの OS: OSX(10.4.10) on G4
サーバの IP アドレス: 192.168.1.4
クライアントの OS: OSX(10.4.10)

実験の主目的

今回の実験の主目的は Apache の仮想ホストのサポートである。
OSX クライアントからは実験に必要なホスト名と IP アドレスは Netinfo の machine で設定する。今回は
	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 1.3

OSX に Apache 2.2.4 をインストールする場合には、既に存在する Apache 1.3 との付き合い方を考えておく必要がある。単なる実験であれば、既存の Apache 関係のファイル(/etc/httpd=/private/etc/httpd 以下のファイル)は変更しない方が良いであろう。今回は単なる実験であるから、OSX の既存の設定は変更しない。

Apche 1.3 の httpd を落とす

OSX では Apache 1.3 が既にサービス中の可能性がある。従ってこれをまず落としておかなくてはならない。
-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$
となっているから結構古い。

Apache 2.2.4

configure

今回 Apache 2.2.4 を自宅の OSX(10.4.10) にインストールすることにした。僕の自宅にあった Linux を積んだマシンは、数ヶ月前の僕のサーバの故障で研究室に移動したからだ。単なる実験なので標準インストールで済ませた。インストールの場所は
	/usr/local/apache2
である。

./configure で

configure: error: Cannot use an external APR-util with the bundled APR
のエラーが出たが、ググって解決した:
./configure --with-included-apr

ところが設定に意外と手こずった。原因は次の二つの事が念頭になかったからである。
順に見て行こう。

仮想ホストをサポートしない場合

httpd.conf の吟味

<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" のような使い方はしないであろう。オーバーヘッドが大きい上に、殆どのクライアントに対しては意味を持たないからである。

起動

さて Apache 2.2.4 の httpd を起動するには /usr/locale/apache2 に移動して
	./bin/apachectl start
を実行する。すなわち
cd /usr/locale/apache2
sudo ./bin/apachectl start
である。

"start" の指示の他に "stop", "restart" が役に立つ。

仮想ホストをサポートする場合

誰もが行うように、実ホストだけの編成に仮想ホストを追加すると、面食らうであろう。問題解決のために検索すると、何と
「仮想ホストをサポートするとメインホストはなくなります」(http://httpd.apache.org/docs/2.2/vhosts/name-based.html)
と書かれている。

それにしても何でこんなアホな仕様に...