2009年3月。
ローカル環境の HTTP サーバとして、
これまでは Cygwin 版 Apache 1.3 を使っていたが、
これを Cygwin + Apache2 に変更した。
若干難儀した箇所があったので自分用にメモ。
(部分的に、よく分からんまま設定している箇所あり)
「インストールメモ:Cygwin + Apache on Windows 2000」 も参照のこと。
相変わらずウソを書いてる可能性があるのでご注意。
Apache1 を Windows のサービスとして登録するには cygrunsrv が必要だったが、 Apache2 の場合はこの他に cygserver を (やはり Windows のサービスとして) 別途走らせておく必要がある模様。 また環境変数の設定も必要な模様。 ちょっとメンドくさくなってるかな…。
既に Apache 1.3 がサービスとして動作している場合は、cygrunsrv でサービスから外しておく。 ここでは Apache 1.3 がサービス名「apache」で登録されているとして、こんな感じで。↓
cygrunsrv -R apache
初回に cygserver を起動するには cygserver-config というスクリプトを実行する。
ここで cygserver を Windows のサービスに登録できる。
登録した cygserver を起動するにはシェル上から「cygrunsrv -S cygserver
」、
または Windows の管理ツールの「サービス」からスタートさせる。
あらかじめ 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"
コマンドラインから「cygrunsrv -S apache2
」でも、
Windows の管理ツールのサービス管理から起動させるのでも好きな方で。
インストールメモ:Cygwin + Apache on Windows 2000」を参照。