在不断变化的软件版本中,经常需要处理依赖关系和针对UNIX系统的代码。因此,最好的方法是将所有组件收集到一个地方,并提供分步指导。目标是编写一系列文章,展示如何设置Apache服务器,创建一个简单的带有登录系统的网站(因此还需要PHP和SQL),更重要的是,调查C源代码层面发生了什么。这种理解将帮助找到安全漏洞(或手动创建一个),并研究如何在不知道实际登录名和密码的情况下获取用户信息。
将构建Apache2.4.33。转到此链接并下载源代码归档。解压缩并重命名提取的文件夹为httpd。现在,需要下载依赖项:apr、apr-iconv、apr-util、expat、pcre(需要安装cmake来构建)。前三者可以从这里下载。将使用Apr 1.6.3、Apr-util 1.6.1和Apr-iconv 1.2.2。下载归档文件,解压缩并将提取的文件夹放入httpd\srclib。相应地重命名它们为apr、apr-util、apr-iconv。
从这里下载expat。将使用Expat 2.2.5。下载归档文件,解压缩,进入提取的文件夹并将嵌套的expat文件夹放入httpd\srclib。
从这里下载pcre。将使用Pcre 8.42(有一个更新版本的库名为pcre2,但apache使用旧版本)。下载归档文件,解压缩并将提取的文件夹放入httpd\srclib。将其重命名为pcre。
还有一些额外的可选依赖项,将在下一篇文章中添加。现在,将使用最少的依赖项来满足构建过程。
让构建expat。转到httpd\srclib\expat文件夹并在Visual Studio中打开expat.sln解决方案。解决方案expat将包含7个项目:elements、expat、expat_static、expatw、expatw_static、outline、xmlwf。由于使用的是Visual Studio 2013,必须转到项目属性->配置属性->常规,并设置平台工具集为Visual Studio 2013 (v120)。现在,右键单击expat项目并选择构建 - 这将构建单个项目expat。
现在让构建pcre。它是一个基于cmake的项目,所以需要从这里下载cmake二进制文件并安装它们。转到httpd\srclib\pcre文件夹并创建一个名为build的子文件夹。启动控制台并cd到新创建的build文件夹。执行以下命令:cmake --help。在输出中,将看到可用的生成器。要为Visual Studio 2013生成解决方案文件,需要Visual Studio 12 2013生成器。执行以下命令:cmake -G "Visual Studio 12 2013" ..。打开生成的PCRE.sln解决方案。解决方案PCRE将包含12个项目。右键单击pcre项目并选择构建 - 这将构建2个项目:pcre和ZERO_CHECK。
现在让构建apr、apr-iconv、apr-util。转到httpd\srclib\apr-util文件夹并在Visual Studio中打开aprutil.dsw文件。在旧版本的Visual Studio中,.sln文件有.dsw扩展名,.vcxproj文件有.dsp扩展名。Visual Studio将打开以下升级窗口:点击OK并等待所有25个项目升级。准备解决方案需要一些时间,所以它可能会看起来卡住了,最后它将在浏览器中打开迁移报告网页。
右键单击libaprutil项目并转到项目设置:
右键单击aprutil项目并转到项目设置:
右键单击libaprutil项目并选择构建 - 这将构建7个项目。
现在让构建apache本身。转到httpd文件夹并打开Apache.dsw。将再次看到升级窗口:点击OK,过一会儿,将看到以下通知窗口:检查所有类似情况并点击No。转换后,转到libhttpd项目设置:
打开util_pcre.c文件:在pcre.h头文件包含之前添加PCRE_STATIC宏:#include "httpd.h"
#include "apr_strings.h"
#include "apr_tables.h"
#define PCRE_STATIC
#include "pcre.h"