カラクリスタ

CygwinのApacheをサービスとしてインストールせずに使う

概要: Cygwin 上の Apache2 をサービスとしてインストールせずに使う


開発環境を Cygwin に移してるのに、Web サーバ関係を Cygwin に移してないのは微妙じゃね? ということで、本日本腰を入れて Cygwin 上の Apache 環境を整えました。

で、Cygwin の Apache2 を動作させるのに、色々とはまったりしたので、 解決方法をまとめてみます

Apache2 のインストール

まずはともかく Cygwin の Apache2 をインストール。

これに関しては Cygwin のsetup.exeを起動して Net のツリーから Aapche2 を選択してインストールすれば OK。 まあはっきり言って探すのが面倒だけど誰でもできそうなので説明は省略。

ちなみに Aapche2 関係の実行ファイルは/usr/sbinにインストールされるみたいです。 あと設定ファイルの場所は/etc/apache2にあります。

それとどうも Cygwin はデフォルトだと/usr/sbinにパスが通ってないみたいなので、 必要があればパスを通しておく必要があります。

Apache2 の設定の調整

で、無事 Apache2 がインストールできたら、

$ /usr/sbin/httpd2 -k start

と試しに打ってみる。

そうするとhttpd.confの不具合とかを報告してくるので、それを修正する。 ちなみにどういう不具合があったかとかはメモってなかったんで省略。

で、Aapche2 の設定ファイルの不具合がなくなると

$ /usr/sbin/httpd2 -k start
zsh: invalid system call: /usr/sbin/httpd2 -k start

という感じになります。が、これは Apache2 は起動してません。

どーすんだべさ、ということでこの問題は次にいきます

cygserver を起動する

ここまでくると、Apache2 起動時に設定関係の文句は言われないけど肝心の Apache2 が起動しないよ!という状態になってるかと思います。

で、これは僕もはまったポイントなんですが、

Cygwin 上の Apache2 を起動するにはcygserverが起動している必要がある みたいです。

で、cygserverを起動するにはまずcygserver-configを実行します。

$ cygserver-config

そうすると

Do you want to install cygserver as service?
(Say "no" if it's already installed as service) (yes/no) no

と聞いてきますが、 cygserver をサービスとして使わない場合は no と入力します

まあサービスとしてインストールしてもいいんですが、 それをすると cygwin アプリケーションを Windows のサービスとして起動できるように色々とパス通したりする必要が出てきます。

個人的に cygwin アプリケーションを Windows のサービスとして起動するのは避けたいので、 今回は cygsever をサービスとしてインストールしませんでした。

で、話の続き。

んで、前述のDo you want to install cygserver as service?noと入力して答えると、 僕の環境では、

Further configuration options are available by editing the configuration
file /etc/cygserver.conf.  Please read the inline information in that
file carefully. The best option for the start is to just leave it alone.

Please keep in mind, that a client application which wants to use
the services provided by cygserver *must* have the environment variable
CYGWIN set so that it contains the word "server".  So, if you don't
need any other special CYGWIN setting, just set it to "server".

It is advisable to add this setting to the Windows system environment.

Basic Cygserver configuration finished. Have fun!

という感じのことを言ってきます。

僕の環境では最初からこう言われたんで何かあったときどうなるのか分かりませんが、 何か環境に問題があれば修正しろとか言ってくると思います。

で、次にcygserver-configの実行が終わったら、今度は 環境変数CYGWINの設定をします

cygserver を動作させるには、環境変数CYGWINserverという設定を追加する必要があります。

僕の場合環境変数CYGWINに特に何も設定してなかったので、

CYGWIN=server

とだけ指定しました。

ちなみに僕は cygterm + putty という環境で cygwin を使ってるので、 cygterm.cfgの環境変数の設定の部分に上記の設定を付け加えましたが、 bat ファイルかなんかで cygwin を起動している場合は、その bat ファイルに上記設定を付け加える必要があります。

で、ここまでで cygserver を動作させる準備が整いました。

あとは端末上で、

$ cygserver &

という感じでバックグラウンドでcygserverを動作させれば Apache2 を動作させる準備が整います。

Apache2 を起動させる

ここまでくれば多分

$ /usr/sbin/httpd2 -k start

と実行すると、特に何も言わずに、

$

という感じでプロンプトが移ると思います。

で、あとはhttp://localhost/にアクセスすれば、httpd2が動いてることを確認できます。

Apache2 の設定をする

あとはまあ個人個人によって違うと思うんですが、Apache2 を起動できるようになったので、 Apache2 の設定をしていきます。

僕の場合、

  1. バーチャルホストの設定をする
  2. 公開ディレクトリの設定でファイル一覧の表示と CGI の実行を許可する
  3. .htaccessを使えるようにする
  4. MIME-Type の設定で.cgiを CGI スクリプトとして実行できるようにする

という感じのことをしました。

まあこれもちょっとはまったんだけど、Apache で CGI を動作させる一般のことなので、 細かいことは省略します。

で、まあ以上で Apache2 を動作させるのに必要な作業は終了します。

感想

書いてて思ったけど、結構記事が長いね。

あと上でも書いたけど、 Apache2 を動作させるにはcygserverが実行されている必要がある というのは このことを知らないとはまるポイントだと思う。

自分の所も最初環境変数CYGWINserverとか指定したのに

zsh: invalid system call: httpd2 -k start

とか言われ続けてなんでだろーとなってたからね。

まあこれでようやく Cygwin の Apache が使えるようになったので、 あとは今まで Windows の Apache で作ってた空繰再繰とか無貌断片のアップロード環境を移すだけです。

まあとりあえずここまで。残りの作業はまた今度しよう。

#FIXME