编译和安装
本文档仅介绍在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指令)来安装和运行新版本,以便在执行最终升级之前测试任何不兼容性。