Apache HTTP Server 版本 2.4
本文档仅涵盖 Apache HTTP Server 在 Unix 和类 Unix 系统上的编译和安装。有关在 Windows 上编译和安装的信息,请参见 使用 Apache HTTP Server 与 Microsoft Windows 和 为 Microsoft Windows 编译 Apache。有关其他平台,请参见 平台 文档。
Apache httpd 使用 libtool
和 autoconf
创建一个类似于许多其他开源项目的构建环境。
如果您要从一个次要版本升级到下一个版本(例如,从 2.4.8 升级到 2.4.9),请跳到 升级 部分。
sudo yum install httpd sudo systemctl enable httpd sudo systemctl start httpd
sudo apt install apache2 sudo service apache2 start
下载 | 从 https://httpd.apache.org/download.cgi 下载最新版本。 |
解压 | $ gzip -d httpd-NN.tar.gz |
配置 | $ ./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 存在以下需求
/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 版本进行构建。--with-pcre
参数指向它。在某些平台上,你可能需要安装相应的 -dev
包,以允许 httpd 针对你安装的 PCRE 版本进行构建。PATH
必须包含基本构建工具,例如 make
。ntpdate
或 xntpd
程序用于此目的,它们基于网络时间协议 (NTP)。有关 NTP 软件和公共时间服务器的更多详细信息,请参见 NTP 主页。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 版本。这可以通过测试下载的 tarball 与 PGP 签名进行比较来实现。有关如何执行此操作的详细信息,请参见 下载页面,并提供了一个扩展示例,描述了 PGP 的使用。
从 Apache HTTP Server tarball 中解压缩源代码很简单,只需解压缩,然后解压缩即可
$ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar
这将在当前目录下创建一个新目录,其中包含发行版的源代码。在继续编译服务器之前,你应该 cd
到该目录。
下一步是根据你的特定平台和个人需求配置 Apache 源代码树。这可以通过使用发行版根目录中包含的脚本 configure
来完成。(下载 Apache 源代码树的未发布版本的开发人员需要安装 autoconf
和 libtool
,并且需要在继续执行下一步之前运行 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_ldap
和 mod_lua
$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-ldap=shared \
--enable-lua=shared
运行 configure
时,它将花费几分钟时间来测试你的系统上功能的可用性,并构建稍后将用于编译服务器的 Makefile。
现在,是时候通过运行以下命令将包安装到配置的安装 PREFIX(参见上面的 --prefix
选项)下了
$ make install
此步骤通常需要 root 权限,因为PREFIX通常是一个具有受限写入权限的目录。
如果您正在升级,安装将不会覆盖您的配置文件或文档。
接下来,您可以通过编辑PREFIX/conf/
下的配置文件来定制您的 Apache HTTP 服务器。
$ vi PREFIX/conf/httpd.conf
查看PREFIX/docs/manual/
下的 Apache 手册,或访问https://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
命令行、相同的配置文件,并且所有模块都应该继续工作。
要跨次要版本升级,首先在已安装服务器的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
许多第三方为在特定平台上安装 Apache HTTP 服务器提供他们自己的打包分发版。这包括各种 Linux 发行版、各种第三方 Windows 软件包、Mac OS X、Solaris 等等。
我们的软件许可证不仅允许,而且鼓励这种类型的重新分发。但是,它确实导致了服务器安装上的配置布局和默认值可能与文档中所述的不同。虽然很不幸,但这种情况不太可能很快改变。
HTTP 服务器维基中维护着这些第三方分发版的描述,应该反映这些第三方分发版的当前状态。但是,您需要熟悉您特定平台的软件包管理和安装过程。