Top / Tips / BuildOnWindows / Apache


 #contents
 * 対象 [#vf531e75]
 - Apache 2.0.55 (mod_deflate, mod_ssl)
 - Apache 2.2.0 (mod_deflate, mod_ssl) => [../pub/net/httpd/ binary]
 - Apache 2.2.0 (mod_deflate, mod_ssl)
 
 * 参考 [#jec62580]
 -[../manual/platform/win_compiling.html Compiling Apache for Microsoft Windows]
 -[[Compiling Apache, PHP and foreign modules on a Win32 platform:http://www.schau.com/apachephp/apachephpwin32/]]
 -[[Apache/WindowsでのMake方法(mod_deflate付き):http://www.clip.gr.jp/~imai/PukiImaiWiki/index.php?Apache%2FWindows%A4%C7%A4%CEMake%CA%FD%CB%A1(mod_deflate%C9%D5%A4%AD)]]
 -[[Apache/WindowsでのMake方法(mod_ssl付き):http://www.clip.gr.jp/~imai/PukiImaiWiki/index.php?Apache%2FWindows%A4%C7%A4%CEMake%CA%FD%CB%A1(mod_ssl%C9%D5%A4%AD)]]
 - [[Web Server Tutorial: Building Apache 2.0.55 + mod_ssl + mod_security for Windows 2000/XP:http://www.devside.net/web/server/windows/apache]]
 
 * 必要なもの [#ucd246a4]
 -[[Apache:http://httpd.apache.org/]]
 -- httpd-2.0.55-win32-src.zip
 -- httpd-2.2.0-win32-src-rev2.zip
 -[[zlib:http://www.zlib.net/]]
 --[[zlib-1.1.4.tar.gz:http://www.zlib.net/zlib-1.1.4.tar.gz]] (for 2.0.55)
 -- [[zlib-1.2.3.tar.gz:http://www.zlib.net/zlib-1.2.3.tar.gz]] (for 2.2.0)
 -[[openssl:http://www.openssl.org/]]
 --[[openssl-0.9.8a.tar.gz:http://www.openssl.org/source/openssl-0.9.8a.tar.gz]]
 -fc.exe
 --%systemroot%\system32に元々入っている。
 ** 以下のものはCygwinをインストールしていれば基本的には不要 [#e352715d]
 なお、Cygwinを使った場合confファイルやperlスクリプトの改行コードが0x0aになる等の小さな違いは出る。((Windowsは0x0d 0x0a))
 -[[awk:http://cm.bell-labs.com/cm/cs/who/bwk/]]
 --[[awk95.exe:http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe]]
 ---[[gawk:http://gnuwin32.sourceforge.net/packages/gawk.htm]]でも可 ([[gawk-bin-zip:http://gnuwin32.sourceforge.net/downlinks/gawk-bin-zip.php]])
 -[[bison:http://gnuwin32.sourceforge.net/packages/bison.htm]]
 --[[bison-1.875-4-bin.zip:http://prdownloads.sourceforge.net/gnuwin32/bison-1.875-4-bin.zip?download]]
 --[[bison-1.875-4-dep.zip:http://prdownloads.sourceforge.net/gnuwin32/bison-1.875-4-dep.zip?download]]
 ---dep.zipに含まれるlibiconv2.dllとlibintl3.dllが必要なため。((他のgnuwin32ツールにもdep.zipはあるがbisonのものが最新な模様。))
 --- bison 2.1は出力するコードが異なり、
  ssl_expr_parse.c
  y.tab.c(926) : error C2449: '{' を見つけました (関数のヘッダーがないかもしれません)。
  y.tab.c(1598) : error C2059: 構文エラー : '}'
 とエラーになるため使えない。
 -[[sed:http://gnuwin32.sourceforge.net/packages/sed.htm]]
 --[[sed-4.1.4-bin.zip:http://gnuwin32.sourceforge.net/downlinks/sed-bin-zip.php]]
 -[[flex:http://gnuwin32.sourceforge.net/packages/flex.htm]]
 --[[flex-2.5.4a-1-bin.zip:http://gnuwin32.sourceforge.net/downlinks/flex-bin-zip.php]]
 
 * 手順 [#u8799d25]
 '''作業ディレクトリはD:\work\apache'''
 
 ** Apache 2.0.55 (mod_deflate, mod_ssl) [#o33d20f5]
 - zlibの最新は1.2.3だが、そのままでも前もってzlibをbuildしても、
  deflate.c
  NMAKE : fatal error U1073: '"..\..\srclib\zlib\infblock.h"' のビルド方法が指定されていません。
  Stop.
 とエラーで止まる。
 
 *** アーカイブを展開 [#n3fb63bf]
 +D:\work\apache\に展開
 --httpd-2.0.55-win32-src.zip
 +
  D:\work
  \---apache
      +---httpd-2.0.55
          +---build
          |   +---pkg
          |   \---...
          \---test
 +D:\work\apache\httpd-2.0.55\srclib\に展開
 --openssl-0.9.8a.tar.gz
 ---ディレクトリ名をopensslに。
 --zlib-1.1.4.tar.gz
 ---ディレクトリ名をzlibに。
 +
  D:\work\apache\httpd-2.0.55\srclib
  ...
  +---openssl
  |   +---apps
  ... ...
  \---zlib
      +---amiga
      ...
 +D:\work\apache\build\に展開~
 もちろん場所は何処でも良いが、あとでパスを通す必要があるのでまとめておいた方が楽。~
  なお、上にも書いたようにCygwinがインストールされていれば不要。
  ただし、Cygwinのawk.exeはgawk.exeへのsymlinkとなっていて、Windowsではsymlinkは動作しないのでawk.exeを使う作業が失敗する。
  例えばD:\work\apache\install\cgi-bin\printenv.plなどのファイルが0バイトの空ファイルとして出来上がる。
  なのでawk.exeを削除しgawk.exeをコピーしてawk.exeとする必要がある。
 --awk95.exeをD:\work\apache\build\bin\にコピー
 --gawk-3.1.3-2-bin.zip(gawkを使う場合)
 ---awk.exeに名前変更するのを忘れずに。
 --bison-1.875-4-bin.zip
 --bison-1.875-4-dep.zip
 --flex-2.5.4a-1-bin.zip
 --sed-4.1.4-bin.zip
 +
  D:\work\apache\build
  +---bin
  |       awk.exe
  |       bison.exe
  |       flex++.exe
  |       flex.exe
  |       libiconv2.dll
  |       libintl3.dll
  |       m4.exe
  |       sed.exe
  |       yacc
  +---contrib
  |   +---bison
  |   +---flex
  |   \---sed
  +---include
  +---man
  +---manifest
  \---share
 
 *** コマンドラインからのビルド [#o248909f]
 +コマンドプロンプトを開く。
 --スタート メニュー→プログラム→Microsoft Visual Studio .NET 2003→Visual Studio .NET ツール→Visual Studio .NET 2003 コマンド プロンプト でも良い
 ---この場合、"%VS71COMNTOOLS%vsvars32.bat"の実行は省略出来る。
 +環境変数PATHに'''D:\work\apache\build\bin'''を追加
  set PATH=%PATH%;D:\work\apache\build\bin
 --fc.exeとperlがあればいいので極端な話
  set PATH=%systemroot%\system32;C:\usr\bin;D:\work\apache\build\bin
 でも動く :p
 --Cygwinが入っていれば不要((Cygwinのusr/binにパスが通っているはず))
 +"%VS71COMNTOOLS%vsvars32.bat"を実行する。~
 "で囲む必要があるので注意((パスに空白が含まれるので。))
 --"C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"
  D:\work\apache\httpd-2.0.55>"%VS71COMNTOOLS%vsvars32.bat"
  Setting environment for using Microsoft Visual Studio .NET 2003 tools.
  (If you have another version of Visual Studio or Visual C++ installed and wish
  to use its tools from the command line, run vcvars32.bat for that version.)
 +opensslのビルド
 ++cd srclib\openssl
 ++perl Configure VC-WIN32
 ++ms\do_masm
  D:\work\apache\httpd-2.0.55\srclib\openssl>ms\do_masm
  Generating x86 for MASM assember
  Bignum
  DES
  "crypt(3)"
  Blowfish
  CAST5
  RC4
  MD5
  SHA1
  RIPEMD160
  RC5\32
  
  D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mkfiles.pl  1>MINFO
  D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mk1mf.pl VC-WIN32  1>ms\nt.mak
  D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mk1mf.pl dll VC-WIN32  1>ms\ntdll.mak
  D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mkdef.pl 32 libeay  1>ms\libeay32.def
  D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mkdef.pl 32 ssleay  1>ms\ssleay32.def
  
  D:\work\apache\httpd-2.0.55\srclib\openssl>
 ++nmake -f ms\ntdll.mak
  D:\work\apache\httpd-2.0.55\srclib\openssl>nmake -f ms\ntdll.mak
  
  Microsoft(R) Program Maintenance Utility Version 7.10.3077
  Copyright (C) Microsoft Corporation.  All rights reserved.
  
  Building OpenSSL
  ...
 しばし((8分@1.8GHz、5分強@3.0GHz))待つ
 ++cd out32dll
 ++..\ms\test
  D:\work\apache\httpd-2.0.55\srclib\openssl\out32dll>..\ms\test
  rsa_test
  PKCS #1 v1.5 encryption/decryption ok
  ...
  TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 512 bit RSA
  1 handshakes of 256 bytes done
  passed all tests
  
  D:\work\apache\httpd-2.0.55\srclib\openssl\out32dll>
 +cd \work\apache\httpd-2.0.55
 +nmake /f Makefile.win _apacher
  D:\work\apache\httpd-2.0.55>nmake /f Makefile.win _apacher
  
  Microsoft(R) Program Maintenance Utility Version 7.10.3077
  Copyright (C) Microsoft Corporation.  All rights reserved.
  
  
  INSTDIR    = \Apache2
  SERVERNAME = localhost
  PORT       = 80
  ...
 また少し((10分@1.8GHz、7分@3.0GHz))待つ
 +nmake -f Makefile.win installr INSTDIR="D:\work\apache\install"
  D:\work\apache\httpd-2.0.55>nmake -f Makefile.win installr INSTDIR="D:\work\apache\install"
  
  Microsoft(R) Program Maintenance Utility Version 7.10.3077
  Copyright (C) Microsoft Corporation.  All rights reserved.
  
  
  INSTDIR    = D:\work\apache\install
  SERVERNAME = localhost
  PORT       = 80
  ...
  D:\work\apache\httpd-2.0.55>
 これでD:\work\apache\install以下にバイナリがまとめられる。~
 なお、INSTDIRを指定しないとD:\Apache2にまとめられる。
 
 *** IDE(統合開発環境)からのビルド [#w73bdd64]
 +opensslをビルド~
 コマンドラインからビルドしておく必要があるので、コマンドラインからのビルドの1.~4.を前もって実行しておく。
 +「スタート」ボタン→「プログラム」→「Microsoft Visual Studio .NET 2003」→「Microsoft Visual Studio .NET 2003」を開く
 +「ツール」→「オプション」を開き、「プロジェクト」→「VC++ ディレクトリ」を選択する~
 実行可能ファイルの一番上に'''D:\work\apache\build\bin'''を追加する。
 #ref(VS-01.png,nolink)
 +D:\work\apache\httpd-2.0.55\Apache.dswを開く
 #ref(VS-02.png,nolink)
 +変換して開くに「すべてはい」と答える
 #ref(VS-03.png,nolink)
 +「ビルド」→「構成マネージャ」を開き、「アクティブソリューション構成」を'''Release'''にする
 #ref(VS-04.png,nolink)
 +右側の「ソリューションエクスプローラ」から'''InstallBin'''を右クリックし、「プロパティ」を開く
 #ref(VS-05.png,,50%)
 +「InstallBinプロパティ」の「NMake」を選択し、インストール先を適当に設定する
 #ref(VS-06.png,nolink)
 +「ビルド」→「ソリューションのビルド」
 #ref(VS-07.png,,50%)
 #ref(VS-08.png,,50%)
 
 何故かコマンドラインからのビルドより、一部のバイナリが若干大きく出来るようです。
 
 ** Apache 2.2.0 (mod_deflate, mod_ssl) [#ke6d7bac]
 - 基本的には2.0.55と同じ
 
 *** コマンドラインからのビルド [#p69979de]
 + zlibは前もってbuildしておかないと扱えない模様
  mod_deflate.c
          link.exe @C:\Temp\nm1287.tmp
  LINK : fatal error LNK1181: 入力ファイル 'zlib.lib' を開けません。
  NMAKE : fatal error U1077: 'link.exe' : リターン コード '0x49d'
 -- zlib 1.1.4は
  D:\work\apache\httpd-2.2.0\srclib\zlib>nmake /f msdos\Makefile.w32
 でbuild出来るが、Apacheのbuild中に
  mod_deflate.c
          link.exe @C:\Temp\nm1664.tmp
     ライブラリ .\Release\mod_deflate.lib とオブジェクト .\Release\mod_deflate.exp を作成中
  LINK : warning LNK4098: defaultlib 'LIBC' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
 という警告が出るため、警告が出ない1.2.3を使用した。
 + コマンドは以下の通り~
 perlはC:\usr\bin\perl.exeを想定。
  set PATH=%systemroot%\system32;C:\usr\bin;D:\work\apache\build\bin
  call "%VS71COMNTOOLS%vsvars32.bat"
  
  cd /d D:\work\apache\httpd-2.2.0
  cd srclib\openssl
  perl Configure VC-WIN32
  call ms\do_masm
  nmake -f ms\ntdll.mak
  cd out32dll
  call ..\ms\test
  
  cd \work\apache\httpd-2.2.0\srclib\zlib
  nmake -f win32/Makefile.msc
  
  cd \work\apache\httpd-2.2.0
  nmake /f Makefile.win _apacher
  
  nmake -f Makefile.win installr INSTDIR="D:\work\apache\install"
 なお、このままバッチファイルとして実行出来るはずです。
 
 ** 不要ファイル [#pd46b899]
  D:\work\apache\install>del *.pdb /s/q
  削除したファイル - D:\work\apache\install\bin\ab.pdb
  削除したファイル - D:\work\apache\install\bin\Apache.pdb
  ...
  削除したファイル - D:\work\apache\install\modules\util_ldap.pdb
  
  D:\work\apache\install>rd symbols /s/q
 pdbはデバッグ用情報ファイルらしいので不要。これを消すとinstall以下が80MB強から20MB弱になる。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 この下に新規 一覧 単語検索 最終更新   ヘルプ   リンク元   最終更新のRSS