本文档仅涵盖Unix和类似Unix的系统上Apache HTTP Server的编译和安装。有关在Windows上进行编译和安装的信息,请参阅将Apache HTTP Server与Microsoft Windows一起使用和为Microsoft Windows编译Apache。对于其他平台,请参阅平台文档。
Apache httpd使用libtool和autoconf
创建类似于许多其他开源项目的构建环境。
sudo yum install httpd sudo systemctl enable httpd sudo systemctl start httpd
sudo apt install apache2 sudo service apache2 start
| 下载 | 从http://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主页。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-modulemod_--disable-moduleconfigure
另外,有时有必要向
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文件,这些文件随后将用于编译服务器。
现在是时候通过运行以下命令在配置的安装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服务器维基,并应反映这些第三方发行的当前状态。但是,您需要熟悉特定平台的软件包管理和安装过程。