Building Apache httpd with the Microsoft Windows 2008 SDK
Windows SDK for Windows Server 2008 and .NET Framework 3.5 contains a command-line compiler suitable for building Apache 2.2.16 on Windows XP or later.
Despite the "2008" name - this freely available SDK is appropriate to use on Windows Server 2003, Windows Server 2008, Windows Vista, and Windows XP.
This SDK contains the Visual C++ 2008 command-line compiler (a.k.a. VC9), the MASM v9.0 assembler, and the Windows libraries needed to build and run Apache.
These are the steps to build Apache 2.2.16 with OpenSSL 0.9.8o (Version 0.9.8 lower-case letter "O") and Zlib 1.2.5 using the VC9 command-line compiler included in this Windows SDK:
Tools Needed to Build httpd
Install the Windows SDK for Windows Server 2008 and .NET Framework 3.5 (approx: 450mb)
Windows 2008 SDK |
http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF |
Install Perl and several GNU utilities: tar, gzip, wget, and awk. These are tools which are needed to build Apache:
Perl |
Any of the Windows binaries at http://www.perl.org/get.htmlwill work to build Apache httpd |
GNU tar |
http://gnuwin32.sourceforge.net/packages/gtar.htm |
GNU gzip |
http://gnuwin32.sourceforge.net/packages/gzip.htm |
GNU wget |
http://gnuwin32.sourceforge.net/packages/wget.htm |
GNU gawk (awk) |
http://gnuwin32.sourceforge.net/packages/gawk.htm |
Setup the build environment
Open a command window and set up the development environment:
"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
Add Perl and the GNU utilities to your PATH environment variable:
PATH=%PATH%;C:\Perl\bin;C:\Program Files\GnuWin32\bin
Download the source code
Download and extract the Apache httpd version 2.2.16 Windows source (not the Unix source)
WGET http://www.apache.org/dist/httpd/httpd-2.2.16-win32-src.zip
Open httpd-2.2.16-win32-src.zip and extract it, creating a httpd-2.2.16 directory
Download and extract the Zlib version 1.2.5 source into httpd-2.2.16\srclib\zlib
CD httpd-2.2.16\srclib WGET http://www.zlib.net/zlib-1.2.5.tar.gz GZIP -d zlib-1.2.5.tar.gz TAR xf zlib-1.2.5.tar RENAME zlib-1.2.5 zlib
Download and extract the OpenSSL version 0.9.8o source, into httpd-2.2.16\srclib\openssl
CD httpd-2.2.16\srclib WGET http://www.openssl.org/source/openssl-0.9.8o.tar.gz GZIP -d openssl-0.9.8o.tar.gz TAR xf openssl-0.9.8o.tar RENAME openssl-0.9.8o openssl
Build Zlib
CD httpd-2.2.16\srclib\zlib ML /coff /Zi /c contrib\masmx86\inffas32.asm ML /coff /Zi /c contrib\masmx86\match686.asm NMAKE -f win32\Makefile.msc LOC="-D_CRT_SECURE_NO_DEPRECATE /wd4996 -DASMV -DASMINF" OBJA="inffas32.obj match686.obj" MT -manifest zlib1.dll.manifest -outputresource:zlib1.dll;2
Build OpenSSL
CD httpd-2.2.16\srclib\openssl PERL Configure VC-WIN32 enable-camellia disable-idea ms\do_masm NMAKE -f ms\ntdll.mak
Note: The IDEA algorithm is disabled because it is built by default with OpenSSL 0.9.8. The IDEA algorithm is patented for commercial use until January, 2012. Camellia, and the other OpenSSL 0.9.8 algorithms which are built by default, are not (or are no longer) encumbered by patents.
Note: There remain restrictions and prohibitions on the use and distribution of strong cryptography in some parts of the world. OpenSSL includes strong cryptography which may be restricted by local export regulations or other laws.
Build and install Apache httpd
CD httpd-2.2.16 NMAKE -f Makefile.win installr
This installs Apache 2.2.16 into C:\Apache22. You can add INSTDIR=directory
to the NMAKE command to choose a different installation directory. For example: NMAKE -f Makefile.win INSTDIR=D:\Apache2 installr
If you copy Apache to another machine, remember to install the Microsoft Visual C++ 2008 Redistributable Package before running it.
Including Database Drivers with Apache httpd
The ODBC driver is included by default on Windows. To add additional database drivers, first ensure that your LIB and INCLUDE environment variables include the directories which contain the .lib and .h files for your database. Add a DBD_LIST
to your NMAKE command, which should be be set to a space-separated list of the desired drivers. For example - if MySQL is in C:\MySQL and SQLite is in C:\SQLite:
SET INCLUDE=%INCLUDE%;C:\MySQL\include;C:\SQLite SET LIB=%LIB%;C:\MySQL\lib\opt;C:\SQLite NMAKE -f Makefile.win INSTDIR=D:\Apache2 DBD_LIST="odbc mysql sqlite3" installr