本文档仅介绍在Unix和类Unix系统上编译和安装Apache HTTP服务器。有关在Windows上编译和安装的信息,请参阅在Microsoft Windows上使用Apache HTTP服务器和为Microsoft Windows编译Apache。有关其他平台,请参阅平台文档。
apachehttpd使用libtool和autoconf来创建一个构建环境,它看起来像许多其他开源项目。
如果要从一个次要版本升级到下一个版本(例如,2.4.8到2.4.9),请跳到升级部分。
1、在Fedora/CentOS/Red Hat Enterprise Linux上安装:
sudo yum install httpd sudo systemctl enable httpd sudo systemctl start httpd
这些发行版的较新版本使用dnf而不是yum。
2、在Ubuntu/Debian上安装:
sudo apt install apache2 sudo service apache2 start
3、从源安装:
Download Download the latest release from 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必须替换为当前版本号,前缀必须替换为安装服务器的文件系统路径。如果未指定前缀,则默认为/usr/local/apache2。
编译和安装过程的每一部分将在下面进行更详细的描述,从编译和安装ApacheHTTPD的需求开始。
确保系统上已安装了APR和APR Util。如果您不使用或不喜欢使用系统提供的版本,请从Apache APR下载APR和APR Util的最新版本,将它们解压到/httpd_source_tree_root/srclib/apr和/httpd_source_tree_root/srclab/apr-util中(确保目录名没有版本号;例如,apr分发必须在/http_sources_treet_root/srclibs/apr/)并使用./configure的--included apr选项。在某些平台上,您可能需要安装相应的-dev包,以允许httpd根据已安装的APR和APR Util副本进行构建。
此库是必需的,但不再与httpd绑定。从下载源代码http://www.pcre.org,或安装端口或包。如果构建系统找不到pcre构建安装的pcre配置脚本,请使用--with pcre参数指向它。在某些平台上,您可能需要安装相应的-dev包,以允许httpd根据已安装的PCRE副本进行构建。
确保至少有50 MB的临时可用磁盘空间。安装后,服务器占用大约10 MB的磁盘空间。实际磁盘空间需求将根据您选择的配置选项、任何第三方模块以及服务器上的一个或多个网站的大小而大不相同。
确保已安装ANSI-C编译器。推荐使用自由软件基金会(FSF)的GNU C编译器(GCC)。如果您没有GCC,那么至少要确保供应商的编译器符合ANSI。此外,路径必须包含基本构建工具,如make。
HTTP协议的元素表示为一天中的时间。因此,是时候研究在系统上设置一些时间同步设施了。通常使用基于网络时间协议(NTP)的ntpdate或xntpd程序。有关NTP软件和公共时间服务器的更多详细信息,请参阅NTP主页。
对于一些支持脚本,如APX或DBMManager(用Perl编写),需要Perl 5解释器(5.003或更高版本就足够了)。如果配置脚本没有找到Perl 5解释器,您将无法使用受影响的支持脚本。当然,您仍然可以构建和使用ApacheHTTPD。
可以从Apache HTTP服务器下载站点下载Apache HTTP服务器,该站点列出了几个镜像。在类unix系统上使用Apache的大多数用户最好下载并编译源版本。构建过程(如下所述)很简单,它允许您自定义服务器以满足您的需要。此外,二进制版本通常不是最新的源版本。如果您确实下载了二进制文件,请按照安装中的说明进行操作。分发版中的BinList文件。
下载后,重要的是验证您是否拥有完整且未修改的Apache HTTP服务器版本。这可以通过对照PGP签名测试下载的tarball来实现。下载页面上提供了如何执行此操作的详细信息,并提供了一个扩展示例,描述了PGP的使用。
从Apache HTTP服务器tarball中提取源代码非常简单,只需解压缩,然后取消错误:
$ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar
这将在当前目录下创建一个新目录,其中包含发行版的源代码。在继续编译服务器之前,您应该将cd放入该目录。
下一步是为您的特定平台和个人需求配置Apache源代码树。这是使用包含在发行版根目录中的脚本配置完成的。(下载Apache源代码树的未发布版本的开发人员需要安装autoconf和libtool,并且需要在继续下一步之前运行buildconf。这对于官方版本来说是不必要的。)
要使用所有默认选项配置源代码树,只需键入./configure。要更改默认选项,configure接受各种变量和命令行选项。
最重要的选项是位置——稍后安装Apache的前缀,因为必须配置Apache才能使该位置正常工作。通过附加的配置选项,可以对文件的位置进行更精细的控制。
此时,您还可以通过启用和禁用模块来指定希望包含在Apache中的功能。默认情况下,Apache附带了广泛的模块。它们将被编译为可在运行时加载或卸载的共享对象(DSO)。您还可以选择使用选项--enable module=static静态编译模块。
使用--enable module选项启用其他模块,其中module是模块的名称,其中mod_字符串被删除,任何下划线都转换为破折号。类似地,您可以使用--disable module选项禁用模块。使用这些选项时要小心,因为如果指定的模块不存在,“配置”无法警告您;它将简单地忽略该选项。
此外,有时需要向配置脚本提供有关编译器、库或头文件位置的额外信息。这是通过传递环境变量或命令行选项来配置的。有关更多信息,请参阅配置手册页面。或者使用--help选项调用configure。
为了简要了解您有哪些可能性,这里有一个典型示例,它使用特定的编译器和标志以及两个附加模块mod_ldap和mod_ lua为安装树/sw/pkg/Apache编译Apache:
$ CC="pgcc" CFLAGS="-O2"
./configure --prefix=/sw/pkg/apache
--enable-ldap=shared
--enable-lua=shared
运行配置时,需要几分钟来测试系统上功能的可用性,并构建生成文件,稍后将用于编译服务器。
1、创建
现在,您只需运行以下命令即可构建构成Apache包的各个部分:
$ make
请耐心等待,因为基本配置需要几分钟来编译,时间会因硬件和已启用的模块数量而大不相同。
2、安装
现在可以通过运行以下命令在配置的安装前缀下安装软件包(请参阅上面的--PREFIX选项):
$make-install
此步骤通常需要根权限,因为前缀通常是具有受限写入权限的目录。
如果正在升级,安装将不会覆盖配置文件或文档。
3、定制
接下来,您可以通过编辑前缀/conf/下的配置文件来定制Apache HTTP服务器。
$ vi PREFIX/conf/httpd.conf
请在前缀/docs/manual/下查看Apache手册,或参阅http://httpd.apache.org/docs/2.4/有关本手册的最新版本和可用配置指令的完整参考。
4、测验
现在,您可以立即运行以下命令启动Apache HTTP服务器:
$PREFIX/bin/apachectl-k start
然后,您应该能够通过URL请求您的第一个文档http://localhost/.您看到的网页位于DocumentRoot下,通常是前缀/htdocs/。然后通过运行以下命令再次停止服务器:
$PREFIX/bin/apachectl-k stop
5、升级
升级的第一步是阅读发布公告和源发行版中的文件更改,以查找可能影响站点的任何更改。当在主要版本之间进行更改时(例如,从2.0到2.2或从2.2到2.4),编译时和运行时配置可能存在重大差异,需要手动调整。所有模块也需要升级,以适应模块API的变化。
从一个次要版本升级到下一个版本(例如,从2.2.55升级到2.2.57)更容易。生成安装过程不会覆盖任何现有文档、日志文件或配置文件。此外,开发人员尽一切努力避免在配置选项、运行时配置或次要版本之间的模块API中发生不兼容的更改。在大多数情况下,您应该能够使用相同的配置命令行、相同的配置文件,并且所有模块都应该继续工作。
要跨次要版本升级,请首先查找文件config。nice位于已安装服务器的构建目录中,或位于旧安装的源代码树的根目录中。这将包含用于配置源树的确切配置命令行。然后,要从一个版本升级到下一个版本,只需要复制配置。尼斯文件到新版本的源代码树,编辑它以进行任何所需的更改,然后运行:
$ ./config.nice
$ make
$ make install
$ PREFIX/bin/apachectl -k graceful-stop
$ PREFIX/bin/apachectl -k start
在将任何新版本投入生产之前,您应该始终在您的环境中测试它。例如,您可以通过使用不同的--前缀和不同的端口(通过调整Listen指令)来安装和运行新版本,以便在进行最终升级之前测试任何不兼容性。
6、第三方软件包
大量第三方提供了自己的Apache HTTP服务器的打包发行版,以便在特定平台上安装。这包括各种Linux发行版、各种第三方Windows软件包、Mac OS X、Solaris等。
我们的软件许可证不仅允许,而且鼓励这种再分配。但是,这确实会导致服务器安装的配置布局和默认值可能与文档中所述的不同。不幸的是,这种情况不可能很快改变。