インストールメモ:Cygwin + Apache2 on Windows XP

2009年3月。
ローカル環境の HTTP サーバとして、 これまでは Cygwin 版 Apache 1.3 を使っていたが、 これを Cygwin + Apache2 に変更した。
若干難儀した箇所があったので自分用にメモ。 (部分的に、よく分からんまま設定している箇所あり)

インストールメモ:Cygwin + Apache on Windows 2000」 も参照のこと。

相変わらずウソを書いてる可能性があるのでご注意。

参照サイト


0. Cygwin 版 Apache 1.3 と 2 (2.2) の 違い

Apache1 を Windows のサービスとして登録するには cygrunsrv が必要だったが、 Apache2 の場合はこの他に cygserver を (やはり Windows のサービスとして) 別途走らせておく必要がある模様。 また環境変数の設定も必要な模様。 ちょっとメンドくさくなってるかな…。

1. Apache 1.3 の解除

既に Apache 1.3 がサービスとして動作している場合は、cygrunsrv でサービスから外しておく。 ここでは Apache 1.3 がサービス名「apache」で登録されているとして、こんな感じで。↓

cygrunsrv -R apache

2. cygserver をサービスとして登録

初回に cygserver を起動するには cygserver-config というスクリプトを実行する。
ここで cygserver を Windows のサービスに登録できる。

登録した cygserver を起動するにはシェル上から「cygrunsrv -S cygserver」、 または Windows の管理ツールの「サービス」からスタートさせる。

3. Apache2 をサービスとして登録

あらかじめ httpd.conf や extra/httpd-*.conf などを適宜設定して、 「apachectl2 -t」などで問題ないことを確認しておく。

cygrunsrv でキックするアプリケーションは、 デーモンを fork せずそのまま動作するプロセスとして起動する必要がある
Apache 1.3 の場合は -F オプション付で起動してやればよかったが、 Apache 2.2 の場合はかわりに -DFOREGROUND オプションを指定してやるらしい。

また、cygserver を利用するアプリケーションでは起動前に環境変数 "CYGWIN" に 「"server"」を含んでないといけないらしい。

以上より、Apache2 を Windows のサービスとして登録する時は以下のように指定する。 (ここではサービス名「apache2」、表示名「Cygwin Apache2」として登録する場合)

cygrunsrv -I apache2 -d "Cygwin Apache2" -p /usr/sbin/httpd2 -a -DFOREGROUND -e "CYGWIN=server"

4. 登録した apache2 サービスの起動

コマンドラインから「cygrunsrv -S apache2」でも、 Windows の管理ツールのサービス管理から起動させるのでも好きな方で。

5. ちゃんと動かねー場合

インストールメモ:Cygwin + Apache on Windows 2000」を参照。


いっこ戻る