编译安装
本文档仅涵盖 Unix 和类似 Unix 的系统上 Apache HTTP Server 的编译和安装。有关在 Windows 上进行编译和安装的信息,请参见在 Microsoft Windows 上使用 Apache HTTP Server和为 Microsoft Windows 编译 Apache。对于其他平台,请参见platform文档。
Apache httpd 使用libtool
和autoconf
来创建类似于许多其他开源项目的构建环境。
如果要从一个次要版本升级到另一个(例如,从 2.4.8 升级到 2.4.9),请跳至upgrading部分。
不耐烦的概述
- 在 Fedora/CentOS/Red Hat Enterprise Linux 上安装
sudo yum install httpd
sudo systemctl enable httpd
sudo systemctl start httpd
Warning
这些发行版的较新版本使用dnf
而不是yum
。有关平台特定的说明,请参见Fedora 项目的文档。
- 在 Ubuntu/Debian 上安装
sudo apt install apache2
sudo service apache2 start
Warning
有关平台特定的说明,请参见Ubuntu's documentation。
- 从源安装
Download | 从http://httpd.apache.org/download.cgi下载最新版本 |
Extract | $ gzip -d httpd-NN.tar.gz $ tar xvf httpd-NN.tar $ cd httpd-NN |
Configure | $ ./configure --prefix=PREFIX |
Compile | $ make |
Install | $ make install |
Customize | $ vi PREFIX/conf/httpd.conf |
Test | $ PREFIX/bin/apachectl -k start |
- NN 必须替换为当前版本号, PREFIX 必须替换应在其下安装服务器的文件系统路径。如果未指定 PREFIX *,则默认为
/usr/local/apache2
。
从编译和安装 Apache httpd 的要求开始,下面将更详细地描述编译和安装过程的每个部分。
Warning
在这里看不到您喜欢的平台吗? 快来帮助我们改进此文档。
Requirements
构建 Apache httpd 存在以下要求:
-
APR 和 APR-Util
- 确保已在系统上安装 APR 和 APR-Util。如果您不使用或不想使用系统提供的版本,请从Apache APR下载 APR 和 APR-Util 的最新版本,将它们解压缩为
/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 副本进行构建。
- 确保已在系统上安装 APR 和 APR-Util。如果您不使用或不想使用系统提供的版本,请从Apache APR下载 APR 和 APR-Util 的最新版本,将它们解压缩为
-
Perl 兼容的正则表达式库(PCRE)
- 该库是必需的,但不再与 httpd Binding 在一起。从http://www.pcre.org下载源代码,或安装端口或软件包。如果您的构建系统找不到 PCRE 构建安装的 pcre-config 脚本,请使用
--with-pcre
参数指向它。在某些平台上,您可能必须安装相应的-dev
软件包,以允许 httpd 根据已安装的 PCRE 副本进行构建。
- 该库是必需的,但不再与 httpd Binding 在一起。从http://www.pcre.org下载源代码,或安装端口或软件包。如果您的构建系统找不到 PCRE 构建安装的 pcre-config 脚本,请使用
-
Disk Space
- 确保您至少有 50 MB 的可用临时磁盘空间。安装后,服务器大约占用 10 MB 的磁盘空间。实际的磁盘空间要求将根据您选择的配置选项,任何第三方模块以及服务器上的一个或多个网站的大小而有很大不同。
-
ANSI-C 编译器和构建系统
- 确保已安装 ANSI-C 编译器。建议使用自由软件基金会(FSF)中的GNU C 编译器(GCC)。如果您没有 GCC,则至少要确保供应商的编译器符合 ANSI。另外,您的
PATH
必须包含基本的构建工具,例如make
。
- 确保已安装 ANSI-C 编译器。建议使用自由软件基金会(FSF)中的GNU C 编译器(GCC)。如果您没有 GCC,则至少要确保供应商的编译器符合 ANSI。另外,您的
-
精确计时
- HTTP 协议的元素表示为一天中的时间。因此,是时候研究在系统上设置一些时间同步功能了。通常,基于网络时间协议(NTP)
ntpdate
或xntpd
程序用于此目的。有关 NTP 软件和公共时间服务器的更多详细信息,请参见NTP homepage。
- HTTP 协议的元素表示为一天中的时间。因此,是时候研究在系统上设置一些时间同步功能了。通常,基于网络时间协议(NTP)
-
Perl 5 [OPTIONAL]
Download
可以从Apache HTTP Server 下载站点下载 Apache HTTP Server,其中列出了多个镜像。在类似 Unix 的系统上使用 Apache 的大多数用户,最好下载并编译源代码版本。构建过程(如下所述)很容易,它使您可以自定义服务器以满足自己的需要。另外,二进制版本通常不是最新的源版本。如果您确实下载了二进制文件,请按照发行版中INSTALL.bindist
文件中的说明进行操作。
下载后,重要的是要验证您是否具有完整且未修改的 Apache HTTP Server 版本。这可以通过针对 PGP 签名测试下载的 tarball 来完成。有关如何执行此操作的详细信息,请参见download page,并提供描述使用 PGP的扩展示例。
Extract
从 Apache HTTP Server 压缩包中提取源代码是一个简单的解压缩过程,然后解压缩:
$ gzip -d httpd-NN.tar.gz $ tar xvf httpd-NN.tar
这将在当前目录下创建一个新目录,其中包含分发的源代码。在 continue 编译服务器之前,您应该cd
进入该目录。
配置源树
下一步是为您的特定平台和个人需求配置 Apache 源代码树。这是使用发行版根目录中包含的脚本configure完成的。 (下载 Apache 源树的未发行版本的开发人员将需要安装autoconf
和libtool
,并且需要运行buildconf
才能 continue 下一步.对于正式发行版,这不是必需的.)
要使用所有默认选项配置源树,只需键入./configure
。要更改默认选项,configure接受各种变量和命令行选项。
最重要的选项是稍后在其上安装 Apache 的位置--prefix
,因为必须配置 Apache 才能使该位置正常工作。使用附加的configure options可以对文件的位置进行更精细的控制。
同样在这一点上,您可以通过启用和禁用modules来指定要包含在 Apache 中的features。 Apache 默认随附了各种各样的模块。它们将被编译为共享对象(DSO),可以在运行时加载或卸载。您还可以选择使用--enable-module=static
选项来静态编译模块。
使用--enable-module
选项可启用其他模块,其中 module 是删除了mod_
字符串且任何下划线都转换为破折号的模块的名称。同样,您可以使用--disable-module
选项禁用模块。使用这些选项时要小心,因为如果指定的模块不存在,configure不会警告您。它只会忽略该选项。
此外,有时有必要向configure脚本提供有关编译器,库或头文件的位置的其他信息。这可以通过将环境变量或命令行选项传递到configure来完成。有关更多信息,请参见configure手册页。或使用--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
运行configure时,将需要几分钟的时间来测试系统上功能的可用性,并生成 Makefile 文件,这些文件随后将用于编译服务器。
configure手册页上提供了所有不同的configure选项的详细信息。
Build
现在,您只需运行以下命令即可构建构成 Apache 软件包的各个部分:
$ make
在这里请耐心 await,因为基本配置需要花费几分钟的时间进行编译,并且时间会因硬件和启用的模块数量而异。
Install
现在是时候通过运行以下命令在配置的安装* PREFIX *(请参见上面的--prefix
选项)下安装软件包:
$ make install
由于* PREFIX *通常是具有受限写许可权的目录,因此此步骤通常需要 root 特权。
如果要升级,安装将不会覆盖您的配置文件或文档。
Customize
接下来,您可以通过在PREFIX/conf/
下编辑configuration files来自定义 Apache HTTP 服务器。
$ vi PREFIX/conf/httpd.conf
请查看PREFIX/docs/manual/
下的 Apache 手册,或咨询http://httpd.apache.org/docs/2.4/以获得本手册的最新版本以及可用的configuration directives的完整参考。
Test
现在,您可以通过立即运行start您的 Apache HTTP 服务器:
$ PREFIX/bin/apachectl -k start
然后,您应该能够通过 URL http://localhost/
请求您的第一个文档。您看到的网页位于DocumentRoot下,通常为PREFIX/htdocs/
。然后通过运行以下命令再次stop服务器:
$ PREFIX/bin/apachectl -k stop
Upgrading
升级的第一步是读取发行公告和源代码分发中的文件CHANGES
,以查找可能影响您网站的任何更改。在主要版本之间进行更改时(例如,从 2.0 到 2.2 或从 2.2 到 2.4),在编译时和运行时配置中可能存在重大差异,需要手动调整。还需要升级所有模块,以适应模块 API 中的更改。
从一个次要版本升级到下一个版本(例如,从 2.2.55 升级到 2.2.57)更加容易。 make install
进程将不会覆盖您现有的任何文档,日志文件或配置文件。此外,开发人员会尽一切努力避免configure选项,运行时配置或次要版本之间的模块 API 发生不兼容的更改。在大多数情况下,您应该能够使用相同的configure命令行,相同的配置文件,并且所有模块都应 continue 工作。
要跨次要版本进行升级,请从已安装服务器的build
目录中或旧安装的源树的根目录中找到文件config.nice
开始。这将包含您用来配置源代码树的确切configure命令行。然后,要从一个版本升级到另一个版本,只需将config.nice
文件复制到新版本的源树中,对其进行编辑以进行所需的更改,然后运行:
$ ./config.nice $ make $ make install $ PREFIX/bin/apachectl -k graceful-stop $ PREFIX/bin/apachectl -k start
Warning
在投入生产之前,应始终在环境中测试任何新版本。例如,可以通过使用不同的--prefix
和不同的端口(通过调整Listen指令)来安装和运行新版本,并在旧版本的基础上运行,以测试是否存在任何不兼容性,然后再进行最终升级。
您可以将其他参数传递给config.nice
,这些参数将附加到原始的configure选项中:
$ ./config.nice --prefix=/home/test/apache --with-port=90
Third-party packages
大量的第三方提供了自己的 Apache HTTP Server 打包发行版,以便在特定平台上进行安装。这包括各种 Linux 发行版,各种第三方 Windows 软件包,Mac OS X,Solaris 等。
我们的软件许可证不仅允许而且鼓励这种重新分配。但是,这确实导致服务器安装的配置布局和默认设置可能与文档中所述有所不同。虽然很不幸,但这种情况不太可能很快改变。
这些第三方分发的说明维护在 HTTP Server Wiki 中,并应反映这些第三方分发的当前状态。但是,您需要熟悉特定平台的软件包 Management 和安装过程。