# Microsoft Windows での Apache のコンパイル

Apache のコンパイルを始めるにあたって、多くの重要なポイントがあります。 始める前に、Microsoft Windows での Apache の使用を見てください。

Apache をコンパイルするには Microsoft Visual C++ 5.0 または 6.0 が適切にインストールされていることが必要です。 ビルドはコマンドラインツール、または Visual Studio 環境で可能です。インストールの方法は、VC++ のマニュアルを参考にしてください。コマンドラインでのビルド (例えば nmake の使用)では、コマンドラインツールの準備に Program Files/DevStudio/VC/bin フォルダにある vcvars32.bat 及び Platform SDK の setenv.bat のファイルが必要になるであろうことについて、 特に注意してください。Makefile.win や Visual Studio IDE の InstallBin プロジェクトを使って Apache をインストールする場合は、 awk ユーティリティも必要になります。Visual Studio 7.0 (.net) を使う場合は、Apache.dsw を読み込み .msproj フォーマットに変換してください。プロジェクトファイル (.dsp) に変更があった場合は Apache.dsw を一から変換し直さなければなりません。

まず、IDE を使うつもりならパスが通り、DevStudio 環境が解釈できるところに awk.exe をインストールしてください。 Windows で利用可能な awk は様々なバージョンがあります。 一番インストールしやすいものは Brian Kernighan の http://cm.bell-labs.com/cm/cs/who/bwk/ サイトから入手可能です。 このサイトから http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe をダウンロードした場合は、awk95.exe を awk.exe という名前で保存しなければなりません。

Developer Studio IDE はツール (T) メニューのオプション (O) 以下の、ディレクトリタブ (Developer Studio 7.0 では Projects - VC++ Directories) の実行可能ファイルにリストされた場所にある場合にのみ、awk.exe を見つけられることに注意してください。必要に応じ、awk.exe へのパスをこのリスト、システムの環境変数 PATH に追加してください。

それから、適切なディレクトリに Apache の配布を展開してください。 コマンドプロンプトを開き、Apache 配布サブディレクトリ `src` に移動してください

`Makefile.win` ファイルには Apache の makefile の元となる指示が含まれています。WindowsNT で Apache をコンパイルするには、単に以下のコマンドのうちの一つを使ってください

- `nmake /f Makefile.win _apacher` (リリースビルド)
- `nmake /f Makefile.win _apached` (デバッグビルド)

これらはどちらも Apache をコンパイルします。 後者では、出力されたファイルにデバッグ情報が含まれ、 バグを見つけたり問題を追跡したりしやすくなります。

もし、「...として認識されていません」 のようなエラーが出た場合はまず、vcvars32.bat を実行する必要があります。 以下のコマンドを入力してください

      "c:\Program Files\DevStudio\VC\Bin\VCVARS32.bat"

(このコマンドは VC がインストールされたディレクトリに合わせて 調整する必要があります。)

Visual C++ 5.0 ユーザで、かつ、最近のプラットフォーム SDK をインストールしている場合は、以下のコマンドを入力する必要があるでしょう (Platform SDK アップデートがインストールされているディレクトリに合わせて 調整する必要があります)

      "c:\Program Files\Platform SDK\SETENV.BAT"

それから、再び nmake コマンドを試してください。

サポートされたすべての mod_isapi 機能を有効にするには Windows Platform SDK の更新が必要になることに注意してください。 Microsoft Visual C++ 5.0 とともに配布された SDK ファイルは古いために 使えません。 最近のアップデートがなされていない場合、Apache は MSVC++ 5.0 では、 mod_isapi 機能がいくつか使用不可になることを警告します。 アップデートに関しては http://msdn.micro soft.com/platformsdk/ で探してください。

Apache は、VC++ の Visual Studio 開発環境を使ってコンパイル することもできます。このプロセスを簡素化するために、Visual Studio workspace (Apache.dsw) が `src` フォルダにおいて 提供されています。 この workspace は、完全な Apache のバイナリリリースに必要な .dsp プロジェクトの全体のリストが書かれています。 また、それらが適切な順序でビルドされるようにするために、 プロジェクトの間の依存関係も含まれています。 InstallBin が、他のすべてのプロジェクトをビルドし、 コンパイルされたファイルを適切な位置にインストールする、 トップレベルのプロジェクトです。

これらの .dsp プロジェクトファイルは Visual C++ 6.0 のフォーマットで配布されます。Visual C++ 5.0(97) は 唯一の例外、デバッグシンボル用のフラグである /ZI フラグを除いてこのフォーマットを認識します。 VC 5.0 では /Zi フラグがこれに相当します。 Visual Studio 5.0 (97) の .dsp ファイルをすぐに準備するには、 `src\helpers` フォルダにて配布されている perl スクリプトを使うことができます

      cd src\helpers
      cvstodsp5.pl

このコマンドは、Perl インタプリタがインストールされていて、 .pl のファイルタイプが登録されていると仮定します。変換された .dsp プロジェクトファイルのリストはそれらが変換されるにつれて表示されていきます。 改訂されたプロジェクトファイルを提供するパッチを寄与するときは、 Visual Studio6.0 フォーマットにプロジェクトを戻すスクリプト dsp5tocvs.pl によってそれらを変換してください。

Apache.dsw 及び makefile.win によりビルドされるコアの .dsp プロジェクトは以下の通りです

- `os\win32\ApacheOS.dsp`
- `os\win32\Win9xConHook.dsp`
- `regex\regex.dsp`
- `ap\ap.dsp`
- `lib\expat-lite\xmltok.dsp`
- `lib\expat-lite\xmlparse.dsp xmltok が必要`
- `lib\sdbm.dsp`
- `main\gen_uri_delims.dsp`
- `main\gen_test_char.dsp`
- `ApacheCore.dsp 以上全てが必要`
- `Apache.dsp ApacheCore が必要`

さらに `os\win32` サブディレクトリには、 オプションのモジュールすべてのプロジェクトファイルが含まれます。 これらはすべて ApacheCore を必要とします。

- `os\win32\mod_auth_anon.dsp`
- `os\win32\mod_auth_dbm.dsp sdbm も必要`
- `os\win32\mod_auth_digest.dsp`
- `os\win32\mod_cern_meta.dsp`
- `os\win32\mod_digest.dsp`
- `os\win32\mod_expires.dsp`
- `os\win32\mod_headers.dsp`
- `os\win32\mod_info.dsp`
- `os\win32\mod_mime_magic.dsp`
- `os\win32\mod_proxy.dsp`
- `os\win32\mod_rewrite.dsp`
- `os\win32\mod_speling.dsp`
- `os\win32\mod_status.dsp`
- `os\win32\mod_unique_id.dsp`
- `os\win32\mod_usertrack.dsp`
- `os\win32\mod_vhost_alias.dsp`

`support\` フォルダは、Apache ランタイムの一部ではないけれども、パスワードとログファイルを 管理するために、管理者により使用される追加のプログラムの プロジェクトファイルが含まれます。

- `support\htdigest.dsp`
- `support\htpasswd.dsp`
- `support\logresolve.dsp`
- `support\rotatelogs.dsp`

Apache がコンパイルできたらサーバルートディレクトリにインストール する必要があります。デフォルトは現在のハードディスクのディレクトリ `\Apache` です。

自動的に `c:\ServerRoot` にファイルをインストールするには、以下の nmake コマンド(上部参照)のどちらかを使ってください。

- `nmake /f Makefile.win installr INSTDIR=c:\ServerRoot` (リリース版ビルド用)
- `nmake /f Makefile.win installd INSTDIR=c:\ServerRoot` (デバッグ版ビルド用)

INSTDIR へのc:\ServerRoot 引数がインストールディレクトリを指定します (Apache を `\Apache` にインストールする場合は省略可)。

これにより以下がインストールされます

- `c:\ServerRoot\Apache.exe` - Apache プログラム
- `c:\ServerRoot\ApacheCore.dll` - Apache ランタイム [共有ライブラリ]
- `c:\ServerRoot\Win9xConHook.dll` - Win9x console fixups [共有ライブラリ]
- `c:\ServerRoot\xmlparse.dll` - XML パーサ [共有ライブラリ]
- `c:\ServerRoot\xmltok.dll` - XML トークンエンジン [共有ライブラリ]
- `c:\ServerRoot\bin\*.exe` - 管理用プログラム
- `c:\ServerRoot\cgi-bin` - CGI スクリプトの例
- `c:\ServerRoot\conf` - 設定ファイル ディレクトリ
- `c:\ServerRoot\icons` - FancyIndexing 用のアイコン
- `c:\ServerRoot\include\*.h` - Apache ヘッダファイル
- `c:\ServerRoot\htdocs` - ようこそ、の index.html ページ
- `c:\ServerRoot\htdocs\manual` - Apache ドキュメント
- `c:\ServerRoot\lib` - 静的ライブラリ
- `c:\ServerRoot\libexec` - 動的ライブラリ
- `c:\ServerRoot\logs` - 空のログディレクトリ
- `c:\ServerRoot\modules\mod_*.dll` - ロード可能な Apache モジュール

もし nmake を持っていないか、違うディレクトリにインストール したい場合は、必ず同様の命名体系を使ってください。

プロセスの簡素化のためすべてのプロジェクトの間の依存関係は Microsoft Visual Studio workspace ファイルにおいて定義されています

       src/Apache.dsw

これは、より低位のソースは Visual Studio 内で再ビルドされることを保証します。最上位のプロジェクトは InstallBin であり、Makefile.win を実行してコンパイルされた実行ファイルと dll を移動します。InstallBin の、「設定」から、「一般」タブにある、 「コマンドライン」エントリで INSTDIR= を変更することができます。 InstallBin.dsp プロジェクト内のデフォルトは、src ツリーから 1 階層上 (..) です。InstallBin 設定を修正し、 INSTDIR= を目的のディレクトリへと編集してください。