编译安装
本文档仅涵盖在Unix和类似Unix的系统上Apache HTTP Server的编译和安装。有关在Windows上进行编译和安装的信息,请参阅将Apache HTTP Server与Microsoft Windows一起使用和为Microsoft Windows编译Apache。对于其他平台,请参阅平台文档。
Apache httpd使用libtool
和autoconf
创建一个类似于许多其他开源项目的构建环境。
如果要从一个次要版本升级到另一个(例如,从2.4.8 升级到2.4.9),请跳至升级部分。
急躁的概述
- 在Fedora / CentOS / Red Hat Enterprise Linux上安装
sudo yum install httpd sudo systemctl enable httpd sudo systemctl start httpd
这些发行版的较新版本使用
dnf
而不是yum
。有关特定于平台的说明,请参阅Fedora项目的文档。- 在Ubuntu / Debian上安装
sudo apt install apache2 sudo service apache2 start
- 从源安装
下载 从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 httpd的要求开始,下面将更详细地描述编译和安装过程的每个部分。
要求
构建Apache httpd存在以下要求:
- APR和APR-Util
- 确保已在系统上安装APR和APR-Util。如果不这样做,或者宁愿不要使用系统提供的版本,同时下载APR和APR-的Util从最新版本的Apache APR,解开他们进入
/httpd_source_tree_root/srclib/apr
和/httpd_source_tree_root/srclib/apr-util
(确保目录名称不具有版本号;例如,则APR分发必须位于/ httpd_source_tree_root / srclib / apr /下,并使用./configure
的--with-included-apr
选项。在某些平台上,您可能必须安装相应的-dev
程序包,以允许httpd针对已安装的APR和APR-Util副本进行构建。 - Perl兼容的正则表达式库(PCRE)
- 该库是必需的,但不再与httpd捆绑在一起。从http://www.pcre.org下载源代码,或安装端口或软件包。如果您的构建系统找不到PCRE构建安装的pcre-config脚本,请使用
--with-pcre
参数指向它。在某些平台上,您可能必须安装相应的-dev
软件包,以允许httpd根据已安装的PCRE副本进行构建。 - 磁盘空间
- 确保您至少有50 MB的可用临时磁盘空间。安装后,服务器大约占用10 MB的磁盘空间。实际的磁盘空间要求会根据您选择的配置选项,任何第三方模块以及服务器上的一个或多个网站的大小而有很大不同。
- ANSI-C编译器和构建系统
- 确保已安装ANSI-C编译器。在GNU C编译器(GCC)从自由软件基金会(FSF)的建议。如果您没有GCC,则至少要确保供应商的编译器符合ANSI。此外,您
PATH
必须包含基本的构建工具,例如make
。 - 精确计时
- HTTP协议的元素表示为一天中的时间。因此,是时候研究在系统上设置一些时间同步功能了。通常基于网络时间协议(NTP)来使用
ntpdate
或xntpd
程序。有关NTP软件和公共时间服务器的更多详细信息,请参见NTP主页。 - Perl 5[可选]
- 对于某些支持脚本,例如
apxs
或dbmmanage
(用Perl编写),则需要Perl 5解释器(版本5.003或更高版本已足够)。如果configure
脚本未找到Perl 5解释器,则将无法使用受影响的支持脚本。当然,您仍然可以构建和使用Apache httpd。
下载
可以从Apache HTTP Server下载站点(该站点列出几个镜像)下载Apache HTTP Server。在类似Unix的系统上使用Apache的大多数用户,最好下载并编译源代码版本。构建过程(如下所述)很容易,它使您可以自定义服务器以满足自己的需求。另外,二进制版本通常不是最新的源版本。如果您确实下载了二进制文件,请按照INSTALL.bindist
发行版中文件中的说明进行操作。
下载后,重要的是要验证您是否具有完整且未修改的Apache HTTP Server版本。这可以通过针对PGP签名测试下载的tarball来完成。下载页面上提供了有关如何执行此操作的详细信息,并提供了描述PGP用法的扩展示例。
提取
从Apache HTTP Server压缩包中提取源代码是一个简单的解压缩过程,然后解压缩:
$ gzip -d httpd-NN.tar.gz $ tar xvf httpd-NN.tar
这将在当前目录下创建一个新目录,其中包含分发的源代码。cd
在继续编译服务器之前,应先进入该目录。
配置源树
下一步是为您的特定平台和个人需求配置Apache源代码树。这是使用configure
发行版根目录中包含的脚本完成的。(下载Apache源树的未发行版本的开发人员需要安装autoconf
并libtool
安装它们,并且需要运行buildconf
才能继续下一步。对于正式发行版,这不是必需的。)
要使用所有默认选项配置源树,只需键入./configure
。要更改默认选项,请configure
接受各种变量和命令行选项。
最重要的选项是--prefix
以后要安装Apache 的位置,因为必须配置Apache才能使该位置正常工作。使用其他配置选项,可以对文件的位置进行更精细的控制。
同样在这一点上,您可以通过启用和禁用模块来指定要包含在Apache中的功能。Apache默认随附了各种各样的模块。它们将被编译为共享对象(DSO),可以在运行时加载或卸载。您也可以使用option选择静态编译模块。--enable-module=static
使用选项启用其他模块,其中module是删除字符串的模块名称,并且所有下划线都转换为破折号。同样,您可以使用该选项禁用模块。使用这些选项时要小心,因为如果您指定的模块不存在,则不会发出警告。它只会忽略该选项。--enable-module
mod_
--disable-module
configure
此外,有时有必要向configure
脚本提供有关编译器,库或头文件的位置的其他信息。这可以通过将环境变量或命令行选项传递到来完成configure
。有关更多信息,请参见configure
手册页。或configure
使用--help
选项调用。
为了简短地了解您所拥有的可能性,以下是一个典型示例,该示例/sw/pkg/apache
使用特定的编译器和标志以及两个附加模块mod_ldap
和来为安装树编译Apache mod_lua
:
$ CC="pgcc" CFLAGS="-O2" \ ./configure --prefix=/sw/pkg/apache \ --enable-ldap=shared \ --enable-lua=shared
当configure
运行时,将需要几分钟的时间来测试系统上功能的可用性并构建Makefile文件,这些文件随后将用于编译服务器。
手册页configure
上提供了所有不同选项的详细信息configure
。
建立
现在,您只需运行以下命令即可构建构成Apache软件包的各个部分:
$ make
在这里请耐心等待,因为基本配置需要几分钟的编译时间,时间会因硬件和启用的模块数量而异。
安装
现在是时候通过运行以下命令在配置的安装PREFIX(请参见--prefix
上面的选项)下安装软件包:
$ make install
由于PREFIX通常是具有受限写许可权的目录,因此此步骤通常需要root特权。
如果要升级,安装将不会覆盖您的配置文件或文档。
定制
接下来,您可以通过编辑自定义您的Apache HTTP服务器的配置文件下PREFIX/conf/
。
$ vi PREFIX/conf/httpd.conf
请查看下面的Apache手册,PREFIX/docs/manual/
或参阅http://httpd.apache.org/docs/2.4/获取本手册的最新版本以及可用配置指令的完整参考。
测试
现在,您可以通过立即运行以下命令来启动 Apache HTTP服务器:
$ PREFIX/bin/apachectl -k start
然后,您应该可以通过URL请求第一个文档http://localhost/
。您看到的网页位于下方DocumentRoot
,通常为PREFIX/htdocs/
。然后通过运行再次停止服务器:
$ PREFIX/bin/apachectl -k stop
升级中
升级的第一步是阅读发行公告和CHANGES
源代码分发中的文件,以查找可能影响您网站的任何更改。在主要版本之间进行更改时(例如,从2.0到2.2或从2.2到2.4),在编译时和运行时配置中可能存在重大差异,需要手动调整。还需要升级所有模块以适应模块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
指令)在旧版本旁边安装和运行新版本,以测试是否存在任何不兼容性,然后再进行最终升级。
您可以将其他参数传递给config.nice
,这些参数将附加到原始configure
选项中:
$ ./config.nice --prefix=/home/test/apache --with-port=90
第三方套餐
大量的第三方提供了自己的Apache HTTP Server打包发行版,以便在特定平台上进行安装。这包括各种Linux发行版,各种第三方Windows软件包,Mac OS X,Solaris等。
我们的软件许可证不仅允许而且鼓励这种重新分配。但是,这确实导致服务器安装的配置布局和默认设置可能与文档中所述有所不同。虽然很不幸,但这种情况不太可能很快改变。
一个这些第三方分布的描述保持在HTTP服务器维基,并应反映这些第三方发行的当前状态。但是,您将需要熟悉特定平台的软件包管理和安装过程。