サイトマップ 連絡先 トップに戻る 最初に戻る 前に戻る 次へ進む
$Date: 2018-07-07 06:49:13 +0900 (2018/07/07 (土)) $
$Revision: 1347 $

Apache 2.xのコンパイル (for Windows) (VS2005)

この情報は古いです

概要

Windows 上で Apache を構築する方法を説明します。 ただし Subversion サーバーを構築する部分だけに限定して説明します。
Subversion サーバーを使わなければ、この手順をとばしても OK 次へ進む

以下の手順を既に行っていることを前提としています。

  1. 最小の構成でコンパイルする (VS2005)

準備

必要なファイルの入手

下準備

実行パスの設定

awk.exe を保存したディレクトリの場所を、Visual C++ に設定する。
  1. Visual C++ のメニューから [ツール] - [オプション]を選ぶ
  2. [ディレクトリ] タブに移動する。
  3. [表示するディレクトリ] で[実行可能ファイル]を選ぶ
  4. [ディレクトリ] にawk.exe を保存したディレクトリパスを追加する

Apache のコンパイル

cvtdsp.plの実行 (Apache 2.2.x の場合に必要)

  1. cvtdsp.pl を Apache のソースコードのトップディレクトリにコピーする。
  2. Apache のソースコードのトップディレクトリに移動する。
  3. 以下のコマンドを実行する。
    D:\svnwork\vs2005\common\httpd-2.2.4>perl cvtdsp.pl -2005
    Converted project httpd.dsp to 2005 in .
    Converted project libhttpd.dsp to 2005 in .
    Converted project mod_access_compat.dsp to 2005 in ./modules/aaa
    Converted project mod_authnz_ldap.dsp to 2005 in ./modules/aaa
                    中略
    Converted project rotatelogs.dsp to 2005 in ./support
    Converted project wintty.dsp to 2005 in ./support/win32
    
この手順を行わなかった場合 httpd.rc のコンパイルエラーになります

コンパイル

  1. もし sln ファイルや vcproj ファイルがすでに存在している場合削除しておく
  2. Visaul Studio 2005 でApache.dsw を開く。
  3. プロジェクトファイルを変換するか聞かれるのですべてはいを選択する
  4. BuildBin または InstallBin のプロジェクトを選択する。
  5. Debug/Release の各構成をコンパイルする。
InstallBin の構成でビルドすると、ソースコードが置かれているドライブの ルートディレクトリに必要ファイルがインストールされます

InstallBin をコンパイルしたときに作成されるディレクトリ構成

InstallBin をコンパイルすると以下のようなディレクトリ構成が作成されます。 あまり関係ないファイルは省略しています。
\Apache2\
 │
 ├─bin/
 │   │
 │   ├─iconv/
 │   ├─Apache.exe
 │   ├─httpd.exe
 │   │     ...
 │   ├─libapr.dll
 │   ├─libapriconv.dll
 │   ├─libaprutil.dll
 │   └─libhttpd.dll
 │
 ├─cgi-bin/
 ├─conf/
 │   │
 │   ├─extra/
 │   └─httpd.conf
 │
 ├─error/
 ├─htdocs/
 ├─icons/
 ├─include/
 ├─lib/
 ├─logs/
 ├─manual/
 ├─modules/
 │   │
 │   ├─mod_dav.pdb
 │   ├─mod_dav.so
 │   ├─mod_dav_fs.pdb
 │   ├─mod_dav_fs.so
 │   ├─mod_dbd.pdb
 │   │     ...
 │   ├─util_ldap.pdb
 │   └─util_ldap.so
 │
 ├─proxy/
 ├─symbols/
 │
 ├─CHANGES.txt
 │    ...
 ├─INSTALL.txt
 └─README.txt

注意

APR のDLLは異なるバージョンのファイルを混ぜて置かないこと。 例: libapr-1.dll と libapr.dll 等

Apacheの実行確認

Apache.exe を実行して以下の出力が出ることを確認する。
D:\Apache2\bin>Apache.exe help
Usage: Apache.exe [-D name] [-d directory] [-f file]
                  [-C "directive"] [-c "directive"]
                  [-w] [-k start|restart|stop|shutdown]
                  [-k install|config|uninstall] [-n service_name]
                  [-v] [-V] [-h] [-l] [-L] [-t] [-S]
Options:
  -D name           : define a name for use in  directives
  -d directory      : specify an alternate initial ServerRoot
  -f file           : specify an alternate ServerConfigFile
  -C "directive"    : process directive before reading config files
  -c "directive"    : process directive after reading config files
  -n name           : set service name and use its ServerConfigFile
  -k start        : tell Apache to start
  -k restart        : tell running Apache to do a graceful restart
  -k stop|shutdown: tell running Apache to shutdown
  -k install      : install an Apache service
  -k config         : change startup Options of an Apache service
  -k uninstall    : uninstall an Apache service
  -w                : hold open the console window on error
  -e level          : show startup errors of level (see LogLevel)
  -E file           : log startup errors to file
  -v                : show version number
  -V                : show compile settings
  -h                : list available command line options (this page)
  -l                : list compiled in modules
  -L                : list available configuration directives
  -t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
  -S                : a synonym for -t -D DUMP_VHOSTS
  -t                : run syntax check for config files

Apacheをサービスアプリとしてインストールする

コマンドラインから以下のように入力します。 成功した場合何も表示されません。
D:\Apache2\bin>Apache.exe -k install

D:\Apache2\bin>
正しくインストールできたか確認します。
  1. スタートメニューから、[ファイル名を指定して実行]を選ぶ または Windowsキー + R を押す
  2. services.msc と入力して実行します
  3. 下の図のようになっていることを確認する

Apacheを開始する

コマンドラインから実行する場合

コマンドラインから以下のように入力します。 成功した場合何も表示されません。
D:\Apache2\bin>Apache.exe -k start

D:\Apache2\bin>

サービス一覧画面から実行する場合

サービス一覧の画面から Apache2.2 の項目を右クリックして『開始』を選んでもOK です。

Apacheへの接続確認

  1. ブラウザから http://localhost/ にアクセスできるか 確認します
  2. "あなたの予想に反して、このページが見えているでしょうか" というページが 出ればApacheの起動に成功です。

Apacheの設定 (前半部分)

Apache を起動することができましたが、このままでは Subversion を 使えないので、Subversion を設定できるようにします。

必要なファイルのインストール

以下のファイルを\Apache2\modules にコピーします。

httpd.conf の編集

設定を行うためには \Apache2\conf\httpd.conf をテキストエディタで 編集します。

変更前
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
変更後
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so

Apache の再起動 (httpd.conf の変更の反映)

コマンドラインから以下のように入力します。 成功した場合何も表示されません。
D:\Apache2\bin>Apache.exe -k restart

D:\Apache2\bin>

Apacheの設定 (後半部分)

テスト用リポジトリ構築

以下のコマンドを実行してテスト用のリポジトリを用意します。
D:\>svnadmin create svnrepos

D:\>

httpd.conf の設定

以下の記述を httpd.conf に追加する。
<Location /svn>
	DAV svn
	SVNPath D:/svnrepos
</Location>

Apache の再起動 (httpd.conf の変更の反映)

Apache を再起動します。

動作確認

ブラウザから http://localhost/svn/ に アクセスできるか確認します。
こんなページが表示されれば成功です。

リンク

Trouble Shooting

httpd.rc のコンパイルエラーになる

19>------ ビルド開始: プロジェクト: htdbm, 構成: Debug Win32 ------
12>リソースをコンパイルしています...
12>fatal error RC1107: invalid usage; use RC /? for Help
12>プロジェクト : error PRJ0002 : エラーの結果 1 が 'C:\Program Files\Microsoft Visual Studio 8\VC\bin\rc.exe' より返されました。
12>ビルドログは "file://d:\svnwork\vs2005\common\httpd-2.2.4\Debug\BuildLog.htm" に保存されました。
12>libhttpd - エラー 1、警告 2
このエラーは Apache.dsw を Visual Studio 2005 で開いてプロジェクトファイルを 変換するときに LONG_NAME="Apache htdbm command line utility" を "LONG_NAME="Apache htdbm command line utility"" に変換してしまうために 起こります。
rc.exe
/d "_DEBUG" /d "APP_FILE" /d "BIN_NAME="htdbm.exe"" 
/d "LONG_NAME="Apache htdbm command line utility"" 
/d "_VC80_UPGRADE=0x0600" /l 0x409 
/I "\svnwork\vs2005\common\httpd-2.2.4\build\win32" 
/I "../include" 
/I "../srclib/apr/include" 
/fo"Debug/htdbm.res"

httpd.rc のコンパイルで以下のエラーになる場合、cvtdsp.plの実行 で説明している手順を行ってから、Apache.dsw を開く必要があります。

cvtdsp.pl を使うと LONG_NAME="Apache htdbm command line utility" の 部分を "LONG_NAME=Apache htdbm command line utility" に変換します。
BIN_NAME に関しても同様です。

なお いったん Apache.dsw を Visual Studio 2005 で開いてしまった場合は sln ファイルやvcproj ファイルが作成されてしまっているので削除してから このスクリプトを実行するようにします。

サービス一覧から、Apache を起動しようとすると 『ローカルコンピュータで Apache2 を開始できません。詳細については、システムイベントを 確認してください。これが Microsoft 以外のサービスである場合は、サービスの製造元に 問い合わせてサービス固有のエラーコード 1 を参照してください。』というエラーが出る場合

mod_dav_svn.so のロードに失敗している可能性があります。mod_dav_svn.so の置かれて いるディレクトリ(この手順の場合、D:\Apache2\modules) に mod_dav_svn.so が 依存している DLL をすべてコピーしているか確認します。(通常、libdb44.dll や intl3_svn.dll がない)

mod_dav_svn.so が依存している DLL がわからなければ 以下のようにして見つけることができます。
D:\Apache2\modules>dumpbin /imports mod_dav_svn.so
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.


Dump of file mod_dav_svn.so

File Type: DLL

  Section contains the following imports:

    mod_dav.so
              1006B460 Import Address Table
                    中略
    libhttpd.dll ← 元々入っているので自分でコピーしなくてもOK
              1006B3D8 Import Address Table
                    中略
    libapr.dll ← 元々入っているので自分でコピーしなくてもOK
              1006B168 Import Address Table
                    中略
    libaprutil.dll ← 元々入っているので自分でコピーしなくてもOK
              1006B330 Import Address Table
                    中略
    intl3_svn.dll ← 国際化対応でコンパイルしている場合
              1006B330 Import Address Table
                    中略
    libdb44.dll
              1006B330 Import Address Table
                    中略
	以下略

コンソールから Apache を起動してエラー表示がないのに、サーバーに接続できない場合

イベントログを確認して、以下のエラーが記録されていた場合、上記のエラーと同じです。

Apache2 は次のサービス固有のエラーで終了しました: 1 (0x1)