在开始编译Apache HTTP Server(httpd)之前,需要考虑许多重要点。开始之前,请参阅在Microsoft Windows上使用Apache HTTP Server。
可以使用基于cmake的构建系统在Windows上构建httpd,也可以使用httpd开发人员维护的Visual Studio项目文件构建httpd。基于cmake的生成系统直接支持Visual Studio的更多版本,但当前具有相当大的功能限制。
编译Apache需要正确安装以下环境:
磁盘空间
确保您至少有200 MB的可用磁盘空间。安装后,Apache需要大约80 MB的磁盘空间,以及用于日志和缓存文件的空间,这些空间会快速增长。实际的磁盘空间要求将根据您选择的配置和任何第三方模块或库而有很大不同,尤其是在还构建了OpenSSL的情况下。由于许多文件都是文本并且非常容易压缩,因此NTFS文件系统压缩将这些要求减少了一半。
适当的补丁
httpd二进制文件是在第三方软件包的多个修补程序的帮助下构建的,可确保发布的代码可构建和调试。这些修补程序可从http://www.apache.org/dist/httpd/binaries/win32/patches_applied/获得和分发, 建议将其应用于获得与“官方” ASF分布式二进制文件相同的结果。
Microsoft Visual C ++ 6.0(Visual Studio 97)或更高版本。
可以使用命令行工具或从Visual Studio IDE工作台中构建Apache。命令行构建需要环境来体现PATH
,
INCLUDE
,LIB
可以与配置和其他变量vcvars32.bat
的脚本。
2003年2月或之后更新了Microsoft Windows Platform SDK。
默认情况下,Visual C ++ 7.1的完整版(非快速表达/精简版)(Visual Studio 2002)中包括适当的Windows Platform SDK,除非明确选择更新或不同版本的Platform SDK,否则这些用户可以忽略这些步骤。
若要使用Visual C ++ 6.0或7.0(Studio 2000 .NET),必须setenv.bat
在开始命令行构建或启动msdev / devenv GUI环境之前,使用脚本(由Platform SDK安装)准备Platform SDK环境。安装适用于Visual Studio Express版本(2003及更高版本)的Platform SDK时,应适当调整默认环境。
"c:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32"
"c:\Program Files\Platform SDK\setenv.bat"
Perl和AWK
这里建议的几个步骤在构建准备过程中需要一个perl解释器,但否则不是必需的。
要在构建系统中安装Apache,请使用该awk.exe
实用程序修改几个文件。选择awk是因为它下载量很小(与Perl或WSH / VB相比),并且完成了安装时修改配置文件的任务。Brian Kernighan的
http://www.cs.princeton.edu/~bwk/btl.mirror/
网站具有一个已编译的本地Win32二进制文件,即
http://www.cs.princeton.edu/~bwk/btl.mirror/awk95。 exe,您必须使用名称保存awk.exe
(而不是
awk95.exe
)。
awk.exe
从PATH或菜单选项Tools-> Options->(Projects->)Directories中指定的可执行路径中找到。确保awk.exe在您的系统路径中。gawk.exe
,并且该文件
awk.exe
实际上是该gawk.exe
文件的符号链接。Windows命令外壳无法识别符号链接,因此,由于该版本,InstallBin将失败。一种解决方法是awk.exe
从cygwin安装中删除并复制gawk.exe
到awk.exe
。另请注意,gawk 3.0.x的cygwin / mingw端口存在故障,请在尝试使用任何gawk端口之前升级至3.1.x。[可选] zlib库(用于mod_deflate
)
Zlib必须安装在srclib
名为的子目录中
zlib
。这必须就地构建。的Zlib可以从以下地址获得http://www.zlib.net/ -的
mod_deflate
确认与1.2.3版本正常工作。
nmake -f win32\Makefile.msc
nmake -f win32\Makefile.msc test
[可选] OpenSSL库(用于mod_ssl
和ab.exe
支持SSL)
配置和构建OpenSSL需要安装perl。
必须将OpenSSL安装到从http://www.openssl.org/source/获取的srclib
名为的子目录中openssl
,
才能进行编译
或通过sb启用SSL支持的项目。要准备将OpenSSL链接到Apache mod_ssl或abs.exe,并禁用OpenSSL中的专利保护功能,可以使用以下构建命令:mod_ssl
abs.exe
perl Configure no-rc5 no-idea enable-mdc2 enable-zlib VC-WIN32
-Ipath/to/srclib/zlib -Lpath/to/srclib/zlib
ms\do_masm.bat
nmake -f ms\ntdll.mak
[可选]数据库库(用于mod_dbd
和mod_authn_dbm
)
apr-util库向dbd服务器及其模块公开了dbm(密钥数据库)和dbd(面向查询的数据库)客户端功能,例如身份验证和授权。sdbm dbm和odbc dbd提供程序是无条件编译的。
dbd支持包括Oracle Instantclient软件包,MySQL,PostgreSQL和sqlite。例如,要构建所有这些库,请设置LIB以包括库路径,设置INCLUDE以包含标头路径,并设置PATH以包含所有四个SDK的dll bin路径,并设置DBD_LIST环境变量以通知构建哪个客户端驱动程序SDK已正确安装,例如;
set DBD_LIST=sqlite3 pgsql oracle mysql
类似地,可以通过先配置LIB,INCLUDE和PATH来确保客户端库库和标头可用,然后通过DBM_LIST扩展dbm支持以构建Berkeley DB提供程序(db)和/或gdbm提供程序。
set DBM_LIST=db gdbm
有关获取各种数据库驱动程序SDK的更多提示,请参见README-win32.txt文件。
Apache HTTP Server项目的策略是仅发布Unix源。可供下载的Windows源软件包已由志愿者提供,可能并非每个版本都可用。您仍然可以通过Unix源tarball在Windows上构建服务器,仅需执行几个附加步骤。
perl srclib\apr\build\lineends.pl
现在,您可以使用IDE在Visual Studio开发环境中构建服务器。除非您按照以下说明导出.mak文件,否则无法从Unix源进行服务器的命令行构建。
Makefile.win
是顶级Apache Makefile。要在Windows上编译Apache,只需使用以下命令之一来构建release
or debug
风味:
nmake /f Makefile.win _apacher
nmake /f Makefile.win _apached
这两个命令都将编译Apache。后者将禁用对结果文件的优化,从而使单步执行代码查找错误和查找问题更加容易。
您可以使用其他make(环境)变量DBD_LIST和DBM_LIST添加apr-util dbd和dbm提供程序选项,请参见上面有关[Optional]数据库库的注释。查看Makefile.win中的初始注释,以获取调用构建时可以提供的其他选项。
还可以使用VC ++的Visual Studio开发环境来编译Apache。为了简化此过程,提供了Visual Studio工作区Apache.dsw
。该工作空间.dsp
提供了完整的Apache二进制发行版所需的全部工作项目列表。它包括项目之间的依赖关系,以确保它们以适当的顺序构建。
打开Apache.dsw
工作区,然后选择
InstallBin
(Release
或Debug
根据需要构建)作为“活动项目”。InstallBin
导致所有相关项目被构建,然后调用Makefile.win
以移动已编译的可执行文件和dll。您可以INSTDIR=
通过更改InstallBin
的设置,常规标签,构建命令行条目来个性化
选择。INSTDIR
默认为
/Apache2
目录。如果只希望测试编译(不安装),则可以构建BuildBin
项目。
该.dsp
项目文件分布在Visual Studio 6.0(98)格式。Visual C ++ 5.0(97)将识别它们。Visual Studio 2002(.NET)和更高版本的用户必须将Apache.dsw
加号.dsp
文件转换为Apache.sln
加号
.msproj
文件。.msproj
如果源.dsp
文件更改,请确保再次重新转换文件!这真的很简单,只需Apache.dsw
再次在VC ++ 7.0 IDE中打开并重新转换即可。
perl srclib\apr\build\cvtdsp.pl -2005
perl srclib\apr\build\cvtdsp.pl -ossl11
的Visual Studio 2002(.NET)和更高版本的用户也应该使用Build菜单,配置管理器对话框中取消选中这两个Debug
和Release
解决方案的模块abs
,
mod_deflate
和mod_ssl
组件,以及每个组件开始apr_db*
。这些模块是通过调用nmake
或由IDE直接与BinBuild
目标构建的,如果srclib
目录openssl
和/或
目录zlib
存在,则
目标根据条件DBD_LIST
和DBM_LIST
环境变量的设置有条件地构建这些模块。
导出的.mak
文件带来了更大的麻烦,但是Visual C ++ 5.0用户需要使用它们来构建mod_ssl
,abs(ab
具有SSL支持)和/或
mod_deflate
。.mak文件还支持更广泛的C ++工具链发行版,例如Visual Studio Express。
必须首先构建所有项目才能创建所有动态自动生成的目标,以便可以正确解析依赖项。使用BuildAll
目标从Visual Studio 6.0(98)IDE内构建整个项目,然后对所有makefile使用“项目菜单导出”(选中“ withdepends”)。运行以下命令将绝对路径更正为相对路径,以便它们将建立在任何地方:
perl srclib\apr\build\fixwin32mak.pl
您必须从
httpd源树的顶级目录中键入此命令。当前目录及以下目录中的每个
文件.mak
和.dep
项目文件都将得到更正,并调整时间戳以反映.dsp
。
务必查看生成的.mak
,并.dep
为平台SDK或其他地方,该机的具体文件路径的文件。在DevStudio\Common\MSDev98\bin\
(VC6)目录包含一个sysincl.dat
文件,该文件列出了所有的异常。更新此文件(包括正斜杠和反斜杠路径,例如
sys/time.h
和sys\time.h
),以忽略此类较新的依赖项。在分布式.mak
文件中包含本地安装路径
将导致构建完全失败。
如果您提供修改项目文件的补丁,则我们必须以Visual Studio 6.0格式提交项目文件。更改应该很简单,并且所有Visual Studio环境都可以识别出最少的编译和链接标志。
编译Apache之后,需要将其安装在其服务器根目录中。默认值为\Apache2
同一驱动器的
目录。
要将所有文件自动生成并安装到所需的文件夹
dir中,请使用以下
nmake
命令之一:
nmake /f Makefile.win installr INSTDIR=dir
nmake /f Makefile.win installd INSTDIR=dir
该目录参数INSTDIR
提供的安装目录; 如果要\Apache22
在当前驱动器的Apache中安装Apache,则可以省略。
.dsp
文件在release
两次构建之间维护。该.mak
文件不进行再生,由于审阅者的时间极大的浪费。因此,除非您自己从项目中导出所有文件,否则您不能依靠上述NMAKE
命令来构建修订的.dsp
项目文件.mak
。如果您在Microsoft Developer Studio环境中进行构建,则没有必要。此构建机制的主要文档README.cmake
在源代码分发的
文件中。请参阅该文件以获取详细说明。
使用cmake构建httpd需要分别构建APR和APR-util。README.cmake
有关说明,请参阅其文件。
基于cmake的构建的主要限制是从APR-util项目继承的,由于它们对httpd的影响,下面列出了这些限制:
mod_charset_lite
可能无法使用某些第三方模块。