多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
编译和安装 本文档仅介绍在Unix和类Unix系统上编译和安装Apache HTTP Server。有关在Windows上进行编译和安装的信息,请参阅将Apache HTTPd与Microsoft Windows一起使用。对于其他平台,请参阅平台文档。 Apache HTTPd使用libtool并autoconf 创建一个类似于许多其他Open Source项目的构建环境。 如果要从一个次要版本升级到下一个版本(例如,2.2.50到2.2.51),请跳到升级部分。 不耐烦的概述 ~~~ 下载 从http://httpd.apache.org/download.cgi下载最新版本 提取 $ gzip -d httpd-NN.tar.gz $ tar xvf httpd-NN.tar $ cd httpd-NN 配置 $ ./configure --prefix=PREFIX 编译 $ make 安装 $ make install 定制 $ vi PREFIX/conf/httpd.conf 测试 $ PREFIX/bin/apachectl -k start ~~~ NN必须替换为当前版本号,并且PREFIX必须替换为应安装服务器的文件系统路径。如果 未指定PREFIX,则默认为 /usr/local/apache2。 下面将详细介绍编译和安装过程的每个部分,从编译和安装Apache HTTP Server的要求开始。 要求 构建Apache HTTPd存在以下要求: 磁盘空间 确保您有至少50 MB的临时可用磁盘空间。安装后,Apache占用大约10 MB的磁盘空间。根据您选择的配置选项和任何第三方模块,实际磁盘空间要求会有很大差异。 ANSI-C编译器和构建系统 确保安装了ANSI-C编译器。在GNU C编译器(GCC)从自由软件基金会(FSF) 的建议。如果您没有GCC,那么至少要确保您的供应商的编译器符合ANSI标准。此外,您PATH必须包含基本的构建工具,例如make。 准确的时间保持 HTTP协议的元素表示为一天中的时间。因此,是时候研究在您的系统上设置一些时间同步功能了。通常,这些 ntpdate或xntpd程序用于此目的,它们基于网络时间协议(NTP)。有关NTP软件和公共时间服务器的更多详细信息,请参阅NTP主页。 Perl 5 [可选] 对于某些支持脚本,如apxs或dbmmanage(用Perl编写),需要Perl 5解释器(版本5.003或更新版本就足够了)。如果configure脚本未找到Perl 5解释器 ,您将无法使用受影响的支持脚本。当然,您仍然可以构建和使用Apache HTTPd。 apr / apr-util> = 1.4 apr并apr-util与Apache HTTPd源代码捆绑在一起,几乎在所有情况下都可以毫无问题地使用。然而,如果 apr还是apr-util,版本1.0,1.1或1.2,在您的系统上安装,您必须升级 apr/ apr-util安装到1.4,强制使用捆绑的库或者httpd的使用单独的构建。要使用bundled apr/ apr-utilsources,请指定--with-included-apr要配置的 选项: 注意 版本2.2.3中添加了--with-included-apr选项 ~~~ # Force the use of the bundled apr/apr-util ./configure --with-included-apr ~~~ 针对手动安装的apr/ 构建Apache HTTPd apr-util: ~~~ # Build and install apr 1.4 cd srclib/apr ./configure --prefix=/usr/local/apr-httpd/ make make install # Build and install apr-util 1.4 cd ../apr-util ./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/ make make install # Configure httpd cd ../../ ./configure --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/ ~~~ 下载 Apache HTTP Server可以从Apache HTTP Server下载站点下载,该站点列出了几个镜像。在类似unix的系统上,大多数Apache HTTPd用户最好下载和编译源版本。构建过程(如下所述)很简单,它允许您自定义服务器以满足您的需求。此外,二进制版本通常不是最新的源版本。如果您确实下载了二进制文件,请按照INSTALL.bindist分发中的文件中的说明进行操作。 下载后,验证您是否拥有完整且未修改的Apache HTTP Server版本非常重要。这可以通过针对PGP签名测试下载的tarball来完成。下载页面提供了有关如何执行此操作的详细信息,并提供了一个描述PGP使用的扩展示例。 提取 从Apache HTTPd tarball中提取源代码是一个简单的解压缩问题,然后解压缩: ~~~ $ gzip -d httpd-NN.tar.gz $ tar xvf httpd-NN.tar ~~~ 这将在当前目录下创建一个包含分发源代码的新目录。cd在继续编译服务器之前,您应该 进入该目录。 配置源树 下一步是为您的特定平台和个人要求配置Apache HTTPd源代码树。这是使用configure分发根目录中包含的脚本完成的。(开发者下载执行Apache源代码树的一个未发布的版本将需要有 autoconf和libtool安装将需要运行buildconf下一个步骤之前,这是没有必要的官方版本。) 要使用所有默认选项配置源树,只需键入./configure。要更改默认选项,请configure接受各种变量和命令行选项。 最重要的选项是--prefix 稍后要安装Apache HTTP Server 的位置,因为必须配置Apache HTTPd才能使此位置正常工作。通过其他配置选项,可以对文件位置进行更精细的控制。 此时,您可以通过启用和禁用模块来指定要包含在Apache HTTPd中的功能。Apache HTTP Server 默认包含一组Base模块。使用该选项启用其他模块 ,其中 module是删除了字符串并将任何下划线转换为破折号的模块的名称 。您还可以选择将模块编译为共享对象(DSO) - 可以在运行时加载或卸载 - 使用该选项 。同样,您可以使用该选项禁用Base模块 。使用这些选项时要小心,因为--enable-modulemod_--enable-module=shared--disable-moduleconfigure如果您指定的模块不存在,则无法发出警告; 它只会忽略该选项。 此外,有时需要为 configure脚本提供有关编译器,库或头文件位置的额外信息。这是通过传递环境变量或命令行选项来完成的configure。有关更多信息,请参见 configure手册页。 为了简要了解您的可能性,这里有一个典型的例子,它/sw/pkg/apache使用特定的编译器和标志以及两个附加模块为安装树编译Apache,mod_rewrite并 mod_speling通过DSO机制进行后续加载: ~~~ $ CC="pgcc" CFLAGS="-O2" \ ./configure --prefix=/sw/pkg/apache \ --enable-rewrite=shared \ --enable-speling=shared ~~~ 当configure运行它需要几分钟的时间来测试你的系统功能的可用性,并建立稍后被用来编译Makefile文件。 有关所有不同configure选项的详细信息,请参见configure手册页。 建立 现在,您只需运行以下命令即可构建构成Apache HTTPd包的各个部分: ~~~ $ make ~~~ 请耐心等待,因为基本配置需要几分钟才能完成编译,时间会有很大差异,具体取决于您的硬件和已启用的模块数量。 安装 现在是时候通过运行以下命令在已配置的安装PREFIX(参见--prefix上面的选项)下安装软件包: ~~~ $ make install ~~~ 如果要升级,则安装不会覆盖配置文件或文档。 定制 接下来,您可以通过编辑自定义您的Apache HTTP服务器的配置文件下 PREFIX/conf/。 ~~~ $ vi PREFIX/conf/httpd.conf ~~~ 请查看下面的Apache手册, PREFIX/docs/manual/或查阅http://httpd.apache.org/docs/2.2/以获取本手册的最新版本以及可用配置指令的完整参考。 测试 现在,您可以通过立即运行来启动 Apache HTTP Server: ~~~ $ PREFIX/bin/apachectl -k start ~~~ 然后你应该能够通过URL请求你的第一份文件http://localhost/。您看到的网页位于DocumentRoot,通常是PREFIX/htdocs/。然后运行以下命令再次停止服务器: ~~~ $ PREFIX/bin/apachectl -k stop ~~~ 升级 升级的第一步是阅读发布公告和CHANGES源代码发布中的文件,以查找可能影响您站点的任何更改。在主要版本之间进行更改时(例如,从1.3到2.0或从2.0到2.2),编译时和运行时配置可能会有很大差异,需要手动调整。还需要升级所有模块以适应模块API的更改。 从一个次要版本升级到下一个版本(例如,从2.2.55升级到2.2.57)更容易。该make install 过程不会覆盖任何现有文档,日志文件或配置文件。此外,开发人员尽一切努力避免configure选项,运行时配置或次要版本之间的模块API 发生不兼容的更改 。在大多数情况下,您应该能够使用相同的configure命令行,相同的配置文件,并且所有模块都应该继续工作。 要在次要版本之间升级,首先要在已安装服务器config.nice的build目录中找到该文件,或者在旧安装的源树的根目录中找到该文件 。这将包含configure您用于配置源树的确切 命令行。然后,要从一个版本升级到下一个版本,您只需config.nice要将文件复制到新版本的源树,编辑它以进行任何所需的更改,然后运行: ~~~ $ ./config.nice $ make $ make install $ PREFIX/bin/apachectl -k graceful-stop $ PREFIX/bin/apachectl -k start ~~~ 在将其投入生产之前,您应始终在环境中测试任何新版本。例如,您可以通过使用--prefix不同的端口(通过调整Listen指令)来安装和运行新版本,以便在执行最终升级之前测试任何不兼容性。