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

configure - 配置源代码树

可用语言:  en  |  fr  |  ko  |  tr 

configure 脚本用于配置源代码树,以便在您的特定平台上编译和安装 Apache HTTP Server。各种选项允许编译与您的个人需求相对应的服务器。

此脚本包含在源代码发行版的根目录中,仅用于在 Unix 和类 Unix 系统上进行编译。对于其他平台,请参阅 平台 文档。

Support Apache!

另请参阅

top

概要

您应该从发行版的根目录中调用 configure 脚本。

./configure [OPTION]... [VAR=VALUE]...

要分配环境变量(例如 CCCFLAGS ...),请将其指定为 VAR=VALUE。有关一些有用变量的描述,请参阅 下文

top

选项

配置选项

以下选项会影响 configure 本身的行为。

-C
--config-cache
这是 --cache-file=config.cache 的别名
--cache-file=FILE
测试结果将缓存在文件 FILE 中。此选项默认情况下处于禁用状态。
-h
--help [short|recursive]
输出帮助并退出。使用参数 short 仅显示特定于此包的选项。参数 recursive 显示所有包含包的简短帮助。
-n
--no-create
configure 脚本正常运行,但不会创建输出文件。这对于在生成用于编译的 makefile 之前检查测试结果很有用。
-q
--quiet
在配置过程中不要打印 checking ... 消息。
--srcdir=DIR
将目录 DIR 定义为源文件目录。默认值为 configure 所在的目录或父目录。
--silent
--quiet 相同
-V
--version
显示版权信息并退出。

安装目录

这些选项定义安装目录。安装树取决于所选布局。

--prefix=PREFIX
PREFIX 中安装与体系结构无关的文件。默认情况下,安装目录设置为 /usr/local/apache2
--exec-prefix=EPREFIX
EPREFIX 中安装与体系结构相关的文件。默认情况下,安装目录设置为 PREFIX 目录。

默认情况下,make install 将在 /usr/local/apache2/bin/usr/local/apache2/lib 等中安装所有文件。您可以使用 --prefix 指定除 /usr/local/apache2 之外的安装前缀,例如 --prefix=$HOME

定义目录布局

--enable-layout=LAYOUT
配置源代码和构建脚本以假设基于布局 LAYOUT 的安装树。这允许您分别指定 Apache HTTP Server 安装中每种文件类型的存储位置。config.layout 文件包含几个示例配置,您还可以按照示例创建自己的自定义配置。此文件中的不同布局分组到 <Layout FOO>...</Layout> 部分中,并按名称引用,如 FOO 中所示。默认布局为 Apache

安装目录的微调

为了更好地控制安装目录,请使用以下选项。请注意,目录默认值由 autoconf 设置,并被相应的布局设置覆盖。

--bindir=DIR
DIR 中安装用户可执行文件。用户可执行文件是支持程序,例如 htpasswddbmmanage 等,这些程序对站点管理员很有用。默认情况下,DIR 设置为 EPREFIX/bin
--datadir=DIR
DIR 中安装只读的与体系结构无关的数据。默认情况下,datadir 设置为 PREFIX/share。此选项由 autoconf 提供,目前未使用。
--includedir=DIR
DIR 中安装 C 头文件。默认情况下,includedir 设置为 EPREFIX/include
--infodir=DIR
DIR 中安装 info 文档。默认情况下,infodir 设置为 PREFIX/info。此选项目前未使用。
--libdir=DIR
DIR 中安装目标代码库。默认情况下,libdir 设置为 EPREFIX/lib
--libexecdir=DIR
DIR 中安装程序可执行文件(即共享模块)。默认情况下,libexecdir 设置为 EPREFIX/modules
--localstatedir=DIR
DIR 中安装可修改的单机数据。默认情况下,localstatedir 设置为 PREFIX/var。此选项由 autoconf 提供,目前未使用。
--mandir=DIR
DIR 中安装 man 文档。默认情况下,mandir 设置为 EPREFIX/man
--oldincludedir=DIR
DIR 中安装非 gcc 的 C 头文件。默认情况下,oldincludedir 设置为 /usr/include。此选项由 autoconf 提供,目前未使用。
--sbindir=DIR
DIR 中安装系统管理员可执行文件。这些是服务器程序,例如 httpdapachectlsuexec 等,这些程序是运行 Apache HTTP Server 所必需的。默认情况下,sbindir 设置为 EPREFIX/sbin
--sharedstatedir=DIR
DIR 中安装可修改的与体系结构无关的数据。默认情况下,sharedstatedir 设置为 PREFIX/com。此选项由 autoconf 提供,目前未使用。
--sysconfdir=DIR
DIR 中安装只读的单机数据,例如服务器配置文件 httpd.confmime.types 等。默认情况下,sysconfdir 设置为 PREFIX/conf

系统类型

这些选项用于交叉编译 Apache HTTP Server 以在另一个系统上运行。在正常情况下,当在同一系统上构建和运行服务器时,不会使用这些选项。

--build=BUILD
定义正在构建工具的系统的系统类型。它默认为脚本 config.guess 的结果。
--host=HOST
定义服务器将运行的系统的系统类型。HOST 默认为 BUILD.
--target=TARGET
配置用于为系统类型 TARGET 构建编译器。它默认为 HOST。此选项由 autoconf 提供,对于 Apache HTTP Server 来说不是必需的。

可选功能

这些选项用于微调您的 HTTP 服务器将具有的功能。

通用语法

通常,您可以使用以下语法来启用或禁用功能

--disable-FEATURE
不包含 FEATURE。这与 --enable-FEATURE=no 相同。
--enable-FEATURE[=ARG]
包含 FEATUREARG 的默认值为 yes
--enable-MODULE=shared
相应的模块将作为 DSO 模块构建。默认情况下,启用的模块是动态链接的。
--enable-MODULE=static
相应的模块将被静态链接。

注意

即使 foo 不存在,configure 也不会抱怨 --enable-foo,因此您需要仔细输入。

选择要编译的模块

大多数模块默认情况下都会编译,必须显式禁用或使用关键字 few(有关更多说明,请参阅下面的 --enable-modules--enable-mods-shared--enable-mods-static)或 --enable-modules=none 作为一组删除。

其他模块默认情况下不会编译,必须显式启用或使用关键字 allreallyall 才能使用。

要找出哪些模块默认情况下会编译,请运行 ./configure -h./configure --help,并在 可选功能 下查看。假设您对 mod_example1mod_example2 感兴趣,并且您看到了以下内容

Optional Features:
  ...
  --disable-example1     example module 1
  --enable-example2      example module 2
  ...

然后 mod_example1 默认情况下是启用的,您将使用 --disable-example1 来不编译它。mod_example2 默认情况下是禁用的,您将使用 --enable-example2 来编译它。

多处理模块

多处理模块(或 MPM)实现服务器的基本行为。为了使服务器正常运行,必须激活一个 MPM。可用 MPM 的列表出现在 模块索引页 上。

MPM 可以作为 DSO 构建以进行动态加载,也可以与服务器静态链接,并使用以下选项启用

--with-mpm=MPM

为您的服务器选择默认 MPM。如果 MPM 作为 DSO 模块构建(请参阅 --enable-mpms-shared),则此指令选择将在默认配置文件中加载的 MPM。否则,此指令选择唯一可用的 MPM,该 MPM 将被静态链接到服务器中。

如果省略此选项,将使用您的操作系统的 默认 MPM

--enable-mpms-shared=MPM-LIST

将 MPM 列表启用为动态共享模块。必须使用 LoadModule 指令动态加载这些模块之一。

MPM-LIST 是一个用引号括起来的以空格分隔的 MPM 名称列表。例如

--enable-mpms-shared='prefork worker'

此外,您可以使用特殊关键字 all,它将选择当前平台上支持动态加载的所有 MPM,并将它们构建为 DSO 模块。例如

--enable-mpms-shared=all

第三方模块

要添加其他第三方模块,请使用以下选项

--with-module=module-type:module-file[, module-type:module-file]

将一个或多个第三方模块添加到静态链接模块列表中。模块源文件 module-file 将在 Apache HTTP 服务器源代码树的 modules/module-type 子目录中搜索。如果在那里找不到,configure 会认为 module-file 是一个绝对文件路径,并尝试将源文件复制到 module-type 子目录中。如果子目录不存在,它将被创建并填充一个标准的 Makefile.in

此选项对于添加由一个源文件组成的较小的外部模块很有用。对于更复杂的模块,您应该阅读供应商的文档。

注意

如果您想构建 DSO 模块而不是静态链接,请使用 apxs

累积和其他选项

--enable-maintainer-mode
打开调试和编译时警告,并加载所有编译的模块。
--enable-mods-shared=MODULE-LIST

定义要启用并构建为动态共享模块的模块列表。这意味着这些模块必须使用 LoadModule 指令动态加载。

MODULE-LIST 是一个用引号括起来的以空格分隔的模块名称列表。模块名称不带前面的 mod_。例如

--enable-mods-shared='headers rewrite dav'

此外,您可以使用特殊关键字 reallyallallmostfew。例如,

--enable-mods-shared=most

将编译大多数模块并将它们构建为 DSO 模块,

--enable-mods-shared=few

将只编译一组非常基本的模块。

默认集是 most

所选模块的 LoadModule 指令将在主配置文件中自动生成。默认情况下,所有这些指令都将被注释掉,除了那些必需的模块或由配置 --enable-foo 参数显式选择的模块。您可以通过激活或停用 httpd.conf 中的 LoadModule 指令来更改加载的模块集。此外,所有构建模块的 LoadModule 指令可以通过配置选项 --enable-load-all-modules 激活。

--enable-mods-static=MODULE-LIST
此选项的行为类似于 --enable-mods-shared,但会将给定的模块静态链接。这意味着这些模块在运行 httpd 时始终存在。它们不需要使用 LoadModule 加载。
--enable-modules=MODULE-LIST
此选项的行为类似于 --enable-mods-shared,并且还会将给定的模块动态链接。特殊关键字 none 将禁用所有模块的构建。
--enable-v4-mapped
允许 IPv6 套接字处理 IPv4 连接。
--with-port=PORT
这定义了 httpd 将监听的端口。此端口号用于生成配置文件 httpd.conf。默认值为 80。
--with-program-name
定义替代的可执行文件名。默认值为 httpd

可选包

这些选项用于定义可选包。

通用语法

通常,您可以使用以下语法来定义可选包

--with-PACKAGE[=ARG]
使用包 PACKAGEARG 的默认值为 yes
--without-PACKAGE
不使用包 PACKAGE。这与 --with-PACKAGE=no 相同。此选项由 autoconf 提供,但对于 Apache HTTP 服务器来说不是很有用。

特定包

--with-apr=DIR|FILE
Apache 可移植运行时 (APR) 是 httpd 源代码分发的一部分,并将自动与 HTTP 服务器一起构建。如果您想使用已安装的 APR,则必须告诉 configure apr-config 脚本的路径。您可以设置绝对路径和名称或安装的 APR 的目录。apr-config 必须存在于此目录或子目录 bin 中。
--with-apr-util=DIR|FILE
Apache 可移植运行时实用程序 (APU) 是 httpd 源代码分发的一部分,并将自动与 HTTP 服务器一起构建。如果您想使用已安装的 APU,则必须告诉 configure apu-config 脚本的路径。您可以设置绝对路径和名称或安装的 APU 的目录。apu-config 必须存在于此目录或子目录 bin 中。
--with-ssl=DIR
如果 mod_ssl 已启用,configure 将搜索已安装的 OpenSSL。您可以设置 SSL/TLS 工具包的目录路径。
--with-z=DIR
如果您的源代码配置需要 zlib 库(例如,当 mod_deflate 启用时),configure 将自动搜索已安装的 zlib 库。您可以设置压缩库的目录路径。

Apache HTTP 服务器的几个功能,包括 mod_authn_dbmmod_rewrite 的 DBM RewriteMap 使用简单的键值数据库来快速查找信息。SDBM 包含在 APU 中,因此此数据库始终可用。如果您想使用其他数据库类型,请使用以下选项来启用它们

--with-gdbm[=path]
如果没有指定 pathconfigure 将在通常的搜索路径中搜索 GNU DBM 安装的包含文件和库。显式 path 将导致 configurepath/libpath/include 中搜索相关文件。最后,path 可以指定以冒号分隔的特定包含和库路径。
--with-ndbm[=path]
--with-gdbm 相似,但搜索 New DBM 安装。
--with-berkeley-db[=path]
--with-gdbm 相似,但搜索 Berkeley DB 安装。

注意

DBM 选项由 APU 提供,并传递到其配置脚本。当使用由 --with-apr-util 定义的已安装 APU 时,它们是无用的。

您可以将多个 DBM 实现与您的 HTTP 服务器一起使用。适当的 DBM 类型将在每次运行时配置中配置。

支持程序选项

--enable-static-support
构建支持二进制文件的静态链接版本。这意味着将构建一个独立的可执行文件,其中包含所有必要的库。否则,支持二进制文件默认情况下将动态链接。
--enable-suexec
使用此选项启用 suexec,它允许您为生成的进程设置 uid 和 gid。**除非您了解在服务器上运行 suid 二进制文件的所有安全隐患,否则请勿使用此选项。**配置 suexec 的其他选项将在下面描述。

可以通过使用以下选项来创建单个支持程序的静态链接二进制文件

--enable-static-ab
构建 ab 的静态链接版本。
--enable-static-checkgid
构建 checkgid 的静态链接版本。
--enable-static-htdbm
构建 htdbm 的静态链接版本。
--enable-static-htdigest
构建 htdigest 的静态链接版本。
--enable-static-htpasswd
构建 htpasswd 的静态链接版本。
--enable-static-logresolve
构建 logresolve 的静态链接版本。
--enable-static-rotatelogs
构建 rotatelogs 的静态链接版本。

suexec 配置选项

以下选项用于微调 suexec 的行为。有关更多信息,请参阅 配置和安装 suEXEC

--with-suexec-bin
这定义了 suexec 二进制文件的路径。默认值为 --sbindir(请参阅 安装目录的微调)。
--with-suexec-caller
这定义了允许调用 suexec 的用户。它应该与 httpd 通常运行的用户相同。
--with-suexec-docroot
这定义了 suexec 允许访问可执行文件的目录树。默认值为 --datadir/htdocs
--with-suexec-gidmin
将其定义为允许作为 suexec 目标用户的最低 GID。默认值为 100。
--with-suexec-logfile
这定义了 suexec 日志文件的名称。默认情况下,日志文件名为 suexec_log,位于 --logfiledir 中。
--with-suexec-safepath
定义由 suexec 启动的进程要设置的环境变量 PATH 的值。默认值为 /usr/local/bin:/usr/bin:/bin
--with-suexec-userdir
这定义了用户目录下的子目录,其中包含所有允许 suexec 访问的可执行文件。当您想将 suexec 与特定于用户的目录(如 mod_userdir 提供的目录)一起使用时,此设置是必需的。默认值为 public_html
--with-suexec-uidmin
将其定义为允许作为 suexec 目标用户的最低 UID。默认值为 100。
--with-suexec-umask
设置由 suexec 启动的进程的 umask。它默认为您的系统设置。
top

环境变量

有一些有用的环境变量可以覆盖 configure 做出的选择,或者帮助它找到具有非标准名称或位置的库和程序。

CC
定义要用于编译的 C 编译器命令。
CFLAGS
设置您想用于编译的 C 编译器标志。
CPP
定义要使用的 C 预处理器命令。
CPPFLAGS
设置 C/C++ 预处理器标志,例如 -Iincludedir,如果您在非标准目录 includedir 中有头文件。
LDFLAGS
设置链接器标志,例如 -Llibdir,如果您在非标准目录 libdir 中有库。

可用语言:  en  |  fr  |  ko  |  tr 

top

评论

注意
这不是一个问答区。此处发布的评论应针对改进文档或服务器的建议,如果这些建议已被实施或被认为无效/离题,则可能被我们的版主删除。有关如何管理 Apache HTTP Server 的问题,请咨询我们的 IRC 频道 #httpd(在 Libera.chat 上),或发送到我们的 邮件列表