Windows Apache源码安装完整教程
很多人一提到在Windows上装Apache,第一反应就是去Apache Lounge下个现成压缩包解压就完事。这确实是最省事的方式,官方本身也不提供Windows二进制安装包。但如果你需要自定义模块、调试源码、或者想深入了解Apache的构建过程,源码编译就成了绕不开的选择。本文就从零开始,一步步讲清楚在Windows环境下如何从源码编译安装Apache HTTP Server。
为什么要在Windows上源码安装Apache
源码安装的核心优势在于可控。你能自己选择是否开启SSL、压缩模块、数据库驱动,也能把第三方模块直接编进去,甚至修改代码后重新编译。对做开发、测试或者需要特殊功能的人来说,这比直接用别人编译好的版本更灵活。
不过也要提前说清楚:Windows下的源码编译比Linux麻烦不少。官方文档明确指出,Apache项目只正式发布Unix源码,Windows编译需要额外准备Visual Studio环境、依赖库和一些转换工具。过程比直接下二进制包复杂得多,出错率也更高。如果你只是想搭个本地测试环境,优先推荐Apache Lounge的现成包;只有真正需要定制时才走源码路线。
准备工作:环境与依赖
先把编译环境搭好,这一步最容易踩坑。
-
安装Visual Studio
推荐使用Visual Studio 2019或2022(Community版免费即可)。安装时务必勾选“使用C++的桌面开发”工作负载,并确保包含MSVC编译器、Windows SDK和CMake工具。老版本如VS2017也能用,但新版本对CMake支持更好。 -
安装Perl
下载并安装Strawberry Perl或ActivePerl,安装后确保perl命令在系统PATH里能直接调用。后面转换换行符和构建OpenSSL都要用到它。 -
准备awk工具
从Brian Kernighan的站点下载awk95.exe,改名为awk.exe放到系统PATH目录(比如C:\Windows\System32)。没有它的话,安装阶段配置文件里的占位符不会被替换,Apache启动会报错。 -
磁盘空间
至少预留200MB空闲空间,实际编译过程中临时文件会更多。 -
可选但常用的依赖
- zlib:用于mod_deflate压缩模块
- OpenSSL:用于mod_ssl和HTTPS支持
这两个需要单独下载源码并先编译好,再放到Apache源码的srclib目录下。
下载源码并整理目录
去Apache官网下载最新稳定版的Unix源码包(例如httpd-2.4.xx.tar.gz)。同时下载对应版本的APR、APR-Util和APR-Iconv源码。
解压后按以下结构整理:
httpd-2.4.xx/
├── srclib/
│ ├── apr/
│ ├── apr-util/
│ └── apr-iconv/
├── ...
把APR等解压后的内容直接放进对应子目录,不要多套一层文件夹。
打开命令提示符(建议用“x64 Native Tools Command Prompt for VS”),进入httpd源码根目录,执行换行符转换:
perl srclib\apr\build\lineends.pl
这一步把Unix风格的换行转成Windows能识别的格式,漏掉的话后面编译会出各种奇怪问题。
编译Apache
有两种主流方式:使用自带的Visual Studio项目文件,或使用CMake。新手建议先试项目文件方式,成熟稳定。
方式一:Visual Studio项目文件编译(推荐新手)
- 打开Apache.dsw(老格式)或转换后的.sln文件。
- 如果是较新的Visual Studio,打开后会提示升级项目,按提示转换即可。
- 在解决方案资源管理器里找到InstallBin项目,设为启动项目。
- 选择Release或Debug配置。
- 右键InstallBin → 生成。
编译成功后,程序会自动把文件安装到默认目录(通常是C:\Apache2)。你也可以在项目属性里修改INSTDIR参数,改成自己想要的路径。
命令行方式也可以:
nmake /f Makefile.win _apacher
_apacher是Release版本,_apached是Debug版本。
方式二:CMake编译
新版本Apache对CMake支持更好,适合熟悉CMake的用户。大致步骤:
- 创建build目录并进入。
- 运行cmake生成Visual Studio解决方案。
- 用Visual Studio打开生成的.sln,选择需要的目标进行编译。
CMake方式目前在功能完整性上还有一些限制,官方也提醒过这一点。
安装与基础配置
编译完成后,进入安装目录的bin文件夹,可以看到httpd.exe。
先用命令行测试能否正常启动:
httpd.exe -t
检查配置文件语法。没问题后执行:
httpd.exe
浏览器访问http://localhost,看到“It works!”页面就说明服务已经跑起来了。
接下来重点改conf/httpd.conf:
- 修改ServerRoot为实际安装路径
- 设置DocumentRoot为你的网站根目录
- 把Listen端口改成需要的(默认80,可能需要管理员权限)
- 按需加载模块(LoadModule)
改完后重启服务。Windows下可以把Apache注册成系统服务,方便开机自启:
httpd.exe -k install
httpd.exe -k start
常见问题与避坑建议
-
编译时报找不到头文件或库
检查INCLUDE和LIB环境变量是否正确,尤其是Windows SDK路径。用VS自带的开发者命令提示符启动,环境变量会自动配置好。 -
启动时提示端口被占用
用netstat -ano | findstr :80查占用进程,关掉IIS或Skype等占80端口的程序,或者改Apache的Listen端口。 -
缺少Visual C++运行库
即使自己编译,运行时仍需要对应版本的VC++ Redistributable。去微软官网下载安装即可。 -
OpenSSL相关报错
如果开启了mod_ssl,确保OpenSSL是按Windows方式正确编译的,并且dll文件放在bin目录或系统PATH里。 -
权限问题
Windows下以管理员身份运行命令提示符再操作,能避免很多“拒绝访问”的错误。
实战建议
源码编译适合学习、定制和开发场景。日常生产或本地测试,直接用Apache Lounge提供的VS编译版本更省心,他们持续更新,模块齐全,稳定性经过大量用户验证。源码编译完成后,建议把整个安装目录备份一份,方便以后快速还原。
掌握源码安装后,你对Apache的模块加载、配置指令和构建逻辑会有更深的理解,后续自己写模块或排查问题时也会更从容。

还没有评论,来说两句吧...