Apache 编译安装(linux)
本文档仅涵盖在 Unix 和类 Unix 系统上编译和安装 Apache HTTP Server。有关在 Windows 上编译和安装的信息,请参阅在 Microsoft Windows 中使用 Apache HTTP Server和为 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
有关特定于平台的说明,请参阅Ubuntu 的文档。
- 从源安装
下载 从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。如果您不这样做,或者不想使用系统提供的版本,请从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
's--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 编译器。如果您没有 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 tarball 中提取源代码很简单,只需解压缩,然后解压:
$ 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)。您还可以选择使用选项静态编译模块 。--enable-module=static
使用该选项启用其他模块 ,其中 模块是删除字符串并将任何下划线转换为破折号的模块的名称 。同样,您可以使用该选项禁用模块 。使用这些选项时要小心,因为如果您指定的模块不存在,则无法警告您;它会简单地忽略该选项。--enable-modulemod_--disable-moduleconfigure
此外,有时需要为 configure脚本提供有关编译器、库或头文件位置的额外信息。这是通过将环境变量或命令行选项传递给configure. 有关更多信息,请参阅 configure手册页。或者configure使用--help选项调用 。
为了简要了解您拥有的可能性,这里是一个典型示例,它/sw/pkg/apache使用特定的编译器和标志以及两个附加模块为安装树编译 Apachemod_ldap和 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
此步骤通常需要 root 权限,因为 PREFIX通常是具有受限写入权限的目录。
如果您正在升级,安装不会覆盖您的配置文件或文档。
定制
接下来,您可以通过编辑自定义您的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服务器维基,并应反映这些第三方发行的当前状态。但是,您需要熟悉特定平台的包管理和安装过程。