<-
Apache > HTTP 服务器 > 文档 > 版本 2.4

编译和安装

可用语言:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr 

本文档仅涵盖 Apache HTTP Server 在 Unix 和类 Unix 系统上的编译和安装。有关在 Windows 上编译和安装的信息,请参见 使用 Apache HTTP Server 与 Microsoft Windows为 Microsoft Windows 编译 Apache。有关其他平台,请参见 平台 文档。

Apache httpd 使用 libtoolautoconf 创建一个类似于许多其他开源项目的构建环境。

如果您要从一个次要版本升级到下一个版本(例如,从 2.4.8 升级到 2.4.9),请跳到 升级 部分。

Support Apache!

另请参见

top

概述(适用于急于求成的人)

在 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
有关特定于平台的说明,请参见 Ubuntu 的文档
从源代码安装
下载 https://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 的需求开始。

没有看到你喜欢的平台?来帮助我们改进这份文档。
top

需求

构建 Apache httpd 存在以下需求

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 下载源代码,或安装 Port 或 Package。如果你的构建系统无法找到 PCRE 构建安装的 pcre-config 脚本,请使用 --with-pcre 参数指向它。在某些平台上,你可能需要安装相应的 -dev 包,以允许 httpd 针对你安装的 PCRE 版本进行构建。
磁盘空间
确保你至少有 50 MB 的临时可用磁盘空间。安装后,服务器大约占用 10 MB 的磁盘空间。实际的磁盘空间需求将根据你选择的配置选项、任何第三方模块以及你服务器上的网站大小而有很大差异。
ANSI-C 编译器和构建系统
确保你安装了 ANSI-C 编译器。来自 自由软件基金会 (FSF)GNU C 编译器 (GCC) 是推荐的。如果你没有 GCC,那么至少要确保你的供应商的编译器符合 ANSI 标准。此外,你的 PATH 必须包含基本构建工具,例如 make
准确的计时
HTTP 协议的元素表示为一天中的时间。因此,现在是时候调查在你的系统上设置一些时间同步工具了。通常,ntpdatexntpd 程序用于此目的,它们基于网络时间协议 (NTP)。有关 NTP 软件和公共时间服务器的更多详细信息,请参见 NTP 主页
Perl 5 [可选]
对于一些支持脚本,例如 apxsdbmmanage(它们是用 Perl 编写的),需要 Perl 5 解释器(版本 5.003 或更高版本就足够了)。如果 configure 脚本没有找到 Perl 5 解释器,你将无法使用受影响的支持脚本。当然,你仍然可以构建和使用 Apache httpd。
top

下载

Apache HTTP Server 可以从 Apache HTTP Server 下载站点 下载,该站点列出了多个镜像。大多数在类 Unix 系统上使用 Apache 的用户最好下载和编译源代码版本。构建过程(如下所述)很简单,并且允许你根据自己的需求自定义服务器。此外,二进制发行版通常不与最新的源代码发行版保持同步。如果你确实下载了二进制文件,请按照发行版中 INSTALL.bindist 文件中的说明进行操作。

下载后,务必验证你是否拥有完整且未修改的 Apache HTTP Server 版本。这可以通过测试下载的 tarball 与 PGP 签名进行比较来实现。有关如何执行此操作的详细信息,请参见 下载页面,并提供了一个扩展示例,描述了 PGP 的使用

top

解压

从 Apache HTTP Server tarball 中解压缩源代码很简单,只需解压缩,然后解压缩即可

$ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar

这将在当前目录下创建一个新目录,其中包含发行版的源代码。在继续编译服务器之前,你应该 cd 到该目录。

top

配置源代码树

下一步是根据你的特定平台和个人需求配置 Apache 源代码树。这可以通过使用发行版根目录中包含的脚本 configure 来完成。(下载 Apache 源代码树的未发布版本的开发人员需要安装 autoconflibtool,并且需要在继续执行下一步之前运行 buildconf。对于官方发行版,这不是必需的。)

要使用所有默认选项配置源代码树,只需键入 ./configure。要更改默认选项,configure 接受各种变量和命令行选项。

最重要的选项是 Apache 将要安装到的位置 --prefix,因为 Apache 必须为此位置进行配置才能正常工作。可以使用其他 配置选项 对文件位置进行更精细的控制。

同样,你也可以通过启用和禁用 模块 来指定要包含在 Apache 中的 功能。Apache 默认包含各种模块。它们将被编译为 共享对象 (DSO),这些对象可以在运行时加载或卸载。你也可以选择使用 --enable-module=static 选项静态编译模块。

使用 --enable-module 选项启用其他模块,其中 module 是模块名称,已删除 mod_ 字符串,并将任何下划线转换为连字符。类似地,可以使用 --disable-module 选项禁用模块。在使用这些选项时要小心,因为 configure 无法警告你你指定的模块是否不存在;它只会忽略该选项。

此外,有时需要向 configure 脚本提供有关编译器、库或头文件位置的额外信息。这可以通过向 configure 传递环境变量或命令行选项来完成。有关更多信息,请参见 configure 手册页。或者使用 --help 选项调用 configure

为了让你对有哪些可能性有一个简短的印象,这里是一个典型的示例,它为安装树 /sw/pkg/apache 编译 Apache,使用特定的编译器和标志,以及两个额外的模块 mod_ldapmod_lua

$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-ldap=shared \
--enable-lua=shared

运行 configure 时,它将花费几分钟时间来测试你的系统上功能的可用性,并构建稍后将用于编译服务器的 Makefile。

有关所有不同 configure 选项的详细信息,请参见 configure 手册页。

top

构建

现在,你可以通过简单地运行以下命令来构建构成 Apache 包的各个部分

$ make

请耐心等待,因为基本配置需要几分钟才能编译,并且时间会根据你的硬件和启用的模块数量而有很大差异。

top

安装

现在,是时候通过运行以下命令将包安装到配置的安装 PREFIX(参见上面的 --prefix 选项)下了

$ make install

此步骤通常需要 root 权限,因为PREFIX通常是一个具有受限写入权限的目录。

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

top

自定义

接下来,您可以通过编辑PREFIX/conf/下的配置文件来定制您的 Apache HTTP 服务器。

$ vi PREFIX/conf/httpd.conf

查看PREFIX/docs/manual/下的 Apache 手册,或访问https://httpd.apache.org/docs/2.4/以获取此手册的最新版本以及可用配置指令的完整参考。

top

测试

现在您可以通过立即运行以下命令来启动您的 Apache HTTP 服务器

$ PREFIX/bin/apachectl -k start

然后,您应该能够通过 URL http://localhost/请求您的第一个文档。您看到的网页位于DocumentRoot下,通常为PREFIX/htdocs/。然后通过运行以下命令再次停止服务器

$ PREFIX/bin/apachectl -k stop

top

升级

升级的第一步是阅读发行说明和源代码分发中的CHANGES文件,以查找可能影响您的网站的任何更改。在主要版本之间切换时(例如,从 2.0 到 2.2 或从 2.2 到 2.4),编译时和运行时配置可能存在重大差异,需要手动调整。所有模块也需要升级以适应模块 API 的更改。

从一个次要版本升级到下一个版本(例如,从 2.2.55 到 2.2.57)比较容易。make install过程不会覆盖您现有的任何文档、日志文件或配置文件。此外,开发人员尽一切努力避免在次要版本之间出现configure选项、运行时配置或模块 API 的不兼容更改。在大多数情况下,您应该能够使用相同的configure命令行、相同的配置文件,并且所有模块都应该继续工作。

要跨次要版本升级,首先在已安装服务器的build目录或旧安装的源代码树的根目录中找到config.nice文件。这将包含您用于配置源代码树的精确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

top

第三方软件包

许多第三方为在特定平台上安装 Apache HTTP 服务器提供他们自己的打包分发版。这包括各种 Linux 发行版、各种第三方 Windows 软件包、Mac OS X、Solaris 等等。

我们的软件许可证不仅允许,而且鼓励这种类型的重新分发。但是,它确实导致了服务器安装上的配置布局和默认值可能与文档中所述的不同。虽然很不幸,但这种情况不太可能很快改变。

HTTP 服务器维基中维护着这些第三方分发版的描述,应该反映这些第三方分发版的当前状态。但是,您需要熟悉您特定平台的软件包管理和安装过程。

可用语言:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr 

top

评论

注意
这不是一个问答部分。此处放置的评论应该针对改进文档或服务器的建议,如果它们被实施或被认为无效/主题无关,可能会被我们的版主删除。有关如何管理 Apache HTTP 服务器的问题应直接发送到我们的 IRC 频道 #httpd(在 Libera.chat 上),或发送到我们的邮件列表