linux下编译安装apache2.4

本文章翻译自Apache HTTP Server官网的内容。版权属于Apache软件基金会,根据Apache许可证2.0版许可

本文在原文的基础上,做了点更改。


本文档仅涵盖Unix和类Unix系统上的Apache HTTP Server的编译和安装。

概览

这是一个快速入门。

下载在官网http://httpd.apache.org/download.cgi下载最新版的源代码包。
解压$ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar
$ cd httpd-NN
Configure$ ./configure --prefix=PREFIX
编译$ make
安装$ make install
定制$ vi PREFIX/conf/httpd.conf
测试$ PREFIX/bin/apachectl -k start

替换NN为当前版本号,并将PREFIX替换成你想要安装的路径。如果未指定PREFIX,则默认为 /usr/local/apache2。

下面将对编译和安装过程的每个部分进行更详细的描述,从编译和安装Apache httpd的要求开始。


要求

构建Apache httpd有以下要求:

APR和APR-util

确保你的系统上已经安装了APR和APR-Util。如果没有,或者不想使用已安装在系统上的版本,你可以在这里下载APR和APR-util的最新版本。然后分别解压到/Apache服务器源代码根目录/srclib/apr/Apache服务器源代码根目录/srclib/apr-util下。在configure Apache HTTP Server的时候使用--with-included-apr选项。在某些平台上,您可能需要安装相应的-dev开发包才能使httpd根据已安装的APR和APR-Util进行构建。

Perl兼容的正则表达式库(PCRE)

该库是必要的,但没有包含在Apache httpd的源代码包里。从http://www.pcre.org下载源代码。如果在configure的时候找不到已经安装的Perl库,请手动使用--with-pcre参数指向pcre-config脚本。在某些平台上,您可能需要安装相应的-dev软件包才能使httpd根据已安装的PCRE进行构建。

磁盘空间

确保您至少有50MB的磁盘空间可用。安装后,服务器占用大约10MB的磁盘空间。

ANSI-C编译器

编译Apache httpd需要GCC编译器,或者其它ANSI规定的编译器。此外,你的环境变量PATH必须包含基本的构建命令,如make。

Perl 5 [可选]

对于某些支持脚本,像apxs或者dbmmanage(这些脚本用Perl写的),需要Perl 5解释器(5.003或更高的版本就足够了)。如果configure脚本找不到Perl 5解释器,你将不能使用支持脚本。当然,你仍然可以构建和使用Apache httpd。


下载

Apache httpd可以从官网下载,其中有几个镜像可供选择。大多数使用类unix系统的Apache用户可以很好的在系统上下载和编译源代码版本。构建过程(如下所述)很容易,它允许您根据需求自定义服务器。此外,二进制版本通常不是最新的源代码版本。如果你下载了一个二进制文件,请按照INSTALL.bindist分发文件中的说明进行操作。

下载完成后,验证您是否具有完整且未修改的Apache HTTP Server版本是非常重要的。可以通过PGP签名测试下载的压缩包。


解压

解压源代码压缩包是一个简单的操作。
$ tar -xzvf httpd-NN.tar.gz。再继续构建前,应该进入被解压出来的源代码文件夹里。


配置源码树

下一步为你的平台和个人需求配置Apache源代码树。这是使用根目录下的configure脚本完成的。(开发者下载的Apache源码树的未发行版本,需要系统安装autoconf和libtool,而且在进行下一步前要运行buildconf。官方发行版无需考虑这些问题。)

要使用所有默认选项配置源代码树,只需键入./configure。要更改默认选项,需向configure提供对应的变量或者命令行选项。
重要的配置选项是--prefix,它将定义之后Apache之后的安装路径。使用其他配置选项可以更精细地控制文件的位置。

在这一点上,你可以通过启用和禁用模块来控制Apache的功能。默认情况下,Apache附带了各种模块。它们将被编译为可以在运行时加载或卸载的共享对象(DSO)。你也可以通过--enable-module=static选项来静态编译这些模块。

使用--enable-module选项来启用其它模块,其中module是模块去掉mod_字串符后再将下划线改为破折号的名称。同样,你可以用--disable-module来禁用相应的模块。使用这些选项时要小心,因为如果你指定的模块不存在,configure脚本不会警告你;它将简单地忽略该选项。

此外,有时需要向configure脚本提供有关编译器,库或头文件位置的额外信息。通过传递环境变量或命令行选项来进行配置。有关configure的更多信息,请参考官网有关configure的手册。或者使用configure的选项--help来获得帮助。

为了让你有更深刻的印象,下面列举了一个把Apache安装到/sw/pkg/apache并且启用mod_ldap和mod_lua这2个模块的示例。
./configure --

prefix=/sw/pkg/apache \

--enable-ldap=shared \

--enable-lua=shared

当configure运行时,将需要几分钟的时间来测试系统上功能的可用性,并构建将在以后用于编译源码的Makefile。

有关所有配置configure的详细信息,请参见configure手册页


构建

现在你可以通过简单的命令来构建源代码。
$ make
请耐心等待,因为基本配置需要花费几分钟的时间才能编译,时间会根据您的硬件和已启用的模块数量而有所不同。


安装

现在是时候通过$ make install,来将已经编译完成的二进制文件安装到PREFIX。此步骤通常需要root权限,因为 PREFIX通常是具有受限写入权限的目录。

如果你正在升级,安装将不会覆盖不的配置文件或文档。


定制

下一步,你可以通过配置文件来定制你的Apache httpd,配置文件通常在PREFIX/conf/下。

$ vi PREFIX/conf/httpd.conf
手册在PREFIX/docs/manual/下或者访问http://httpd.apache.org/docs/2.4/来获取更多的信息。这里有完整的配置指令。


测试

现在,你可以立即启动你的Apache服务器。
$ PREFIX/bin/apachectl -k start
你应该能访问http://localhost/。这个网页通常由DocumentRoot指定。通常位于PREFIX/htdocs/下。停止服务器用以下命令:
$ PREFIX/bin/apachectl -k stop