カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

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で作ってた空繰再繰とか無貌断片のアップロード環境を移すだけです。

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