戻る

Cygwinで便利!

今まで試してみたところ、Cygwin のどんなバージョンでもこの方法でうまくいきました。
標準パッケージでの作業になりますので、
基本的にどのバージョンでも大丈夫のはずです。

(2004/05/02)
以前は -k オプションで httpd プロセスがフォアグラウンドで動いていましたが、
これは Cygwin の Apache 特有のものでした。
1.3.29 以降から本家の Apache にプロセスをフォアグラウンドで動かすための
オプション -F が実装され、こちらのみが有効になるよう変更されました。
以前にウチのサイトを参考にしてセットアップした人で、
Apache を 1.3.29 以降にバージョンアップする人は以下のとおりに作業してください。
$ cygrunsrv -E apache1
$ cygrunsrv -R apache1
$ cygrunsrv -I apache1 -d "CYGWIN apache1" \
> -p /usr/sbin/httpd \
> -a -F -e "CYGWIN=ntsec nosmbntsec"
$ cygrunsrv -S apache1

ちなみに私自身は Cygwin 1.3.12 で動作確認をしたのが最後ですが、
記述自体は Cygwin 1.5.9 上での情報を元に行います。
また、このページでの作業は Administrators に所属しているユーザで
行うことを想定しています。
戻る

Apache1 を使う

なぜ Apache1 を使うのか

Linux/UNIX 上で Web サーバといえば Apache1/Apache2 です。
もちろん Cygwin 上でも同様です。

Apache1 と そのための一部のモジュールは Cygwin 標準パッケージでついてきます。
簡単なので「なるべく楽をしたい」場合や、「初級者なのでなるべく問題に合いたくない」場合は
この方法でまず実装することをお勧めします。
DSO (動的モジュール) も実装されてますし、多くの人が使いやすいと思います。

以前の私はこの標準パッケージの Apache1 をつかっていました。
その際の方法についての記述です。
現在の私はパフォーマンス上の問題からソースから make するApache2 に移行しています。
パフォーマンスチューニングなども気にする方は、
Apache2 や Win32 Native の Apache も評価に入れてみてください。

必要なパッケージのインストール

私のページのインストール方法を使用しても、
Cygwin パッケージの Apache1 はインストールされません。


Apache1 をつかうには Cygwin 本体以外に
以下のパッケージをインストールしておく必要があるので確認してください。
必要なら、別途モジュール類もインストールしましょう。
普通の人は追加モジュールはいらないと思いますので、
「何でも入れとけ」って人以外は apache だけでいいと思います。
インストールは Cygwin 標準の setup.exe から実施してください。


最近はセキュリティがはやっていて知っている人は、
「配布されてるパッケージってバージョンが低いよ!
 脆弱性があるバージョンじゃん!!」
とお思いでしょうが、Cygwin のドキュメントでは、
「Cygwin パッケージは脆弱性の対処済み」とのことで、大丈夫なはずです。

Windows 上のサービスにインストール

パッケージのインストールがすんだら、Apache1 を Windows 上のサービスにインストールしましょう。

以下のコマンドを実行すればインストールできます。
Apache のバージョンによってオプションが違うので注意してください。

Apache 1.3.28 以前は
$ cygrunsrv -I apache1 -d "CYGWIN apache1" \
> -p /usr/sbin/httpd \
> -a -k -e "CYGWIN=ntsec nosmbntsec"

Apache 1.3.29 以降は
$ cygrunsrv -I apache1 -d "CYGWIN apache1" \
> -p /usr/sbin/httpd \
> -a -F -e "CYGWIN=ntsec nosmbntsec"

以上で、Apache1 が "CYGWIN apache1" という名前でサービスに登録されました。

実際に使う

いうまでもなく、設定しない限り望みどおりにサーバが動くことはありません。
まずはやりたいことを整理しましょう。
やりたいことが決まったらそれにあわせた設定にしましょう。
そして、それ以上の権限を与えないようにしましょう。

最近はセキュリティがはやっているので知っていると思いますが、
何でも許可すればいいってものではありません。
最初に Apache1 が動作するのを確認したら、
そのあとはマニュアルや Web、書籍を参照しながら
/etc/apache/httpd.conf の設定をいじっていくことになります。
設定の詰め方は各自の努力次第です。

ただ、ひとつの参考として、私が用いていた (今は使ってません)
httpd.conf
を例示します。


おすすめの参考URLは以下のとおりです
日本 Apache ユーザ会
Afternoon Apache
[ZDNet]-[Linux Tips]-[Apache]
ロボット対策

トラブルに対処する

Apache1 を使う際に、「サービスを起動できない」という問題がまれにあります。
この場合はほぼ間違いなく owner / group 及び パーミッションの設定ミスです。

以下のように設定されていることが望ましいと思います。
(以下のものは標準の設定より、より現実的なパーミッションです)

/var の内容(抜粋)
drwxrwxr-x+   5 SYSTEM   admins      4096 Feb  1 16:38 log/
drwxrwxr-x+   2 SYSTEM   admins         0 Feb  1 16:40 run/
/var/log の内容(抜粋)
drwxrwxr-x+   2 SYSTEM   admins         0 Dec 31 00:30 apache/
'ls -l' で表示される属性の一番右に "+" がついているのは
owner / group / other の rwx で表示できる以外のアクセス権が
ついていることを示していて、大雑把にいうと
NTFS 上のアクセス権設定で SYSTEM アカウントに
アクセス権 (フルコントロール) がついているということです。
# 詳しく知りたい方は getfacl と setfacl を調べてください

ですので、まずは上記の二つのディレクトリ配下に相当する
Windows 上のフォルダに対して、NTFS で SYSTEM ユーザに
フルコントロールのアクセス権を設定します。
その後、chown chmod で上記のようなアクセス権設定としましょう。
おそらく以上で起動できるようになると思います。


SYSTEM ユーザ (LocalSystemアカウント) にアクセス権をつけるとき
手作業 (GUI) でアクセス権処理をするのが面倒なら、
以下の方法もよいと思います。(私はこれぐらいは GUI でやりますけどね・・・)
  1. 実行ファイル xcacls_setup.exe を取得します。
  2. xcacls_setup.exe を実行して、本体の xcacls をインストールします。
  3. 標準では C:\Program Files\Resource Kit\xcacls.exe
    としてインストールされるので、そのファイルをフルパスをもちいて、
    以下のように実行します。
  4. ファイル PATH については適宜読み替えた上で、
    コマンドプロンプトから 以下のように実行しましょう。
    C:\> "C:\Program Files\Resource Kit\xcacls.exe" c:\cygwin /C /T /E /P SYSTEM:F;F /Y
    
  5. プロンプトが帰ってくれば終了です。
戻る

Apache1 を使わなくなったら

Windows 上のサービスからアンインストール

Cygwin をアンインストールするときや、
Apache1 を使わなくなったときなどはサービスからアンインストールしましょう。

以下のコマンドでアンインストールができます。
$ cygrunsrv -R apache1
サービスから名前が消えていることを確認してください。
Valid XHTML 1.0 Strict Valid CSS!
戻る