#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弱になる。