On this page
配置-配置源树
configure
脚本配置用于在特定平台上编译和安装 Apache HTTP Server 的源树。各种选项允许根据您的个人需求编译服务器。
此脚本(包含在源发行版的根目录中)仅在 Unix 和类 Unix 系统上编译。对于其他平台,请参见platform文档。
Synopsis
您应该从发行版的根目录中调用configure
脚本。
./configure [OPTION]... [VAR=VALUE]...
要分配环境变量(例如CC
,CFLAGS
...),请将其指定为VAR=VALUE
。有关某些有用变量的说明,请参见below。
Options
Configuration options
以下选项会影响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
所在的目录或父目录。
- 将目录 DIR 定义为源文件目录。默认值为
--silent
- 与
--quiet
相同
- 与
-V
--version
- 显示版权信息并退出。
Installation directories
这些选项定义安装目录。安装树取决于所选的布局。
--prefix=PREFIX
- 在 PREFIX 中安装与体系结构无关的文件。默认情况下,安装目录设置为
/usr/local/apache2
。
- 在 PREFIX 中安装与体系结构无关的文件。默认情况下,安装目录设置为
--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
。
- 配置源代码和构建脚本,以基于布局 LAYOUT 假定安装树。这使您可以分别指定 Apache HTTP Server 安装中每种文件类型的位置。
对安装目录进行微调
为了更好地控制安装目录,请使用以下选项。请注意,目录默认值由autoconf
设置,并被相应的布局设置覆盖。
--bindir=DIR
--datadir=DIR
- 在 DIR 中安装独立于体系结构的只读数据。默认情况下,
datadir
设置为PREFIX/share
。该选项由autoconf
提供,当前未使用。
- 在 DIR 中安装独立于体系结构的只读数据。默认情况下,
--includedir=DIR
- 在 DIR 中安装 C 头文件。默认情况下,
includedir
设置为EPREFIX/include
。
- 在 DIR 中安装 C 头文件。默认情况下,
--infodir=DIR
- 在 DIR 中安装信息文档。默认情况下,
infodir
设置为PREFIX/info
。该选项当前未使用。
- 在 DIR 中安装信息文档。默认情况下,
--libdir=DIR
- 在 DIR 中安装目标代码库。默认情况下,
libdir
设置为EPREFIX/lib
。
- 在 DIR 中安装目标代码库。默认情况下,
--libexecdir=DIR
- 在 DIR 中安装程序可执行文件(即共享模块)。默认情况下,
libexecdir
设置为EPREFIX/modules
。
- 在 DIR 中安装程序可执行文件(即共享模块)。默认情况下,
--localstatedir=DIR
- 在 DIR 中安装可修改的单机数据。默认情况下,
localstatedir
设置为PREFIX/var
。该选项由autoconf
提供,当前未使用。
- 在 DIR 中安装可修改的单机数据。默认情况下,
--mandir=DIR
- 在 DIR 中安装手册文档。默认情况下,
mandir
设置为EPREFIX/man
。
- 在 DIR 中安装手册文档。默认情况下,
--oldincludedir=DIR
- 在 DIR 中为非 gcc 安装 C 头文件。默认情况下,
oldincludedir
设置为/usr/include
。该选项由autoconf
提供,当前未使用。
- 在 DIR 中为非 gcc 安装 C 头文件。默认情况下,
--sbindir=DIR
--sharedstatedir=DIR
- 在 DIR 中安装与架构无关的可修改数据。默认情况下,
sharedstatedir
设置为PREFIX/com
。该选项由autoconf
提供,当前未使用。
- 在 DIR 中安装与架构无关的可修改数据。默认情况下,
--sysconfdir=DIR
- 在 DIR 中安装只读单机数据,例如服务器配置文件
httpd.conf
,mime.types
等。默认情况下,sysconfdir
设置为PREFIX/conf
。
- 在 DIR 中安装只读单机数据,例如服务器配置文件
System types
这些选项用于交叉编译 Apache HTTP Server 以在另一个系统上运行。在正常情况下,在同一系统上构建和运行服务器时,将不使用这些选项。
--build=BUILD
- 定义在其上构建工具的系统的系统类型。它默认为脚本
config.guess
的结果。
- 定义在其上构建工具的系统的系统类型。它默认为脚本
--host=HOST
- 定义将在其上运行服务器的系统的系统类型。 HOST 默认为 BUILD。
--target=TARGET
- 配置用于构建系统类型 TARGET 的编译器。默认为 HOST。
autoconf
提供了此选项,而 Apache HTTP Server 则不需要此选项。
- 配置用于构建系统类型 TARGET 的编译器。默认为 HOST。
Optional Features
这些选项用于微调 HTTP 服务器将具有的功能。
General syntax
通常,您可以使用以下语法来启用或禁用功能:
--disable-FEATURE
- 不包括功能。这与
--enable-FEATURE=no
相同。
- 不包括功能。这与
--enable-FEATURE[=ARG]
- 包括功能。 ARG 的默认值为
yes
。
- 包括功能。 ARG 的默认值为
--enable-MODULE=shared
- 相应的模块将构建为 DSO 模块。默认情况下,启用的模块是动态链接的。
--enable-MODULE=static
- 相应的模块将被静态链接。
Note
即使 foo 不存在,configure
也不会抱怨--enable-foo
,因此您需要仔细 Importing。
选择要编译的模块
大多数模块默认情况下已编译,必须显式禁用或使用关键字few
(请参阅下面的--enable-modules
,--enable-mods-shared
和--enable-mods-static
以获得更多说明)或将--enable-modules=none
作为一个组删除。
其他模块默认情况下不会编译,必须显式启用或使用关键字all
或reallyall
启用。
要找出默认情况下编译的模块,请运行./configure -h
或./configure --help
并在Optional Features
下查看。假设您对mod_example1
和mod_example2
感兴趣,您会看到以下内容:
Optional Features:
...
--disable-example1 example module 1
--enable-example2 example module 2
...
然后,默认情况下启用了mod_example1
,并且您将使用--disable-example1
不对其进行编译。 mod_example2
默认是禁用的,您将使用--enable-example2
对其进行编译。
Multi-Processing Modules
Multi-Processing Modules或 MPM 实现了服务器的基本行为。为了使服务器正常运行,单个 MPM 必须处于活动状态。可用的 MPM 列表显示在模块索引页上。
MPM 可以构建为 DSO 以便动态加载或与服务器静态链接,并且可以使用以下选项启用:
--with-mpm=MPM
- 选择服务器的默认 MPM。如果 MPM 是作为 DSO 模块构建的(请参见
--enable-mpms-shared
),则此伪指令选择将在默认配置文件中加载的 MPM。否则,此伪指令选择唯一可用的 MPM,它将被静态链接到服务器中。
- 选择服务器的默认 MPM。如果 MPM 是作为 DSO 模块构建的(请参见
如果省略此选项,将使用您 os 的default MPM。
--enable-mpms-shared=MPM-LIST
- 启用 MPM 列表作为动态共享模块。这些模块之一必须使用LoadModule指令动态加载。
MPM-LIST 是用引号引起来的 MPM 名称的空格分隔列表。例如:
--enable-mpms-shared='prefork worker'
此外,您可以使用特殊关键字all
,它将选择支持当前平台上动态加载的所有 MPM 并将其构建为 DSO 模块。例如:
--enable-mpms-shared=all
Third-party modules
要添加其他第三方模块,请使用以下选项:
--with-module=module-type:module-file[, module-type:module-file]
- 将一个或多个第三方模块添加到静态链接的模块列表中。将在 Apache HTTP 服务器源树的
modules/module-type
子目录中搜索模块源文件module-file
。如果未找到,则configure
会将 module-file 视为绝对文件路径,并尝试将源文件复制到 module-type 子目录中。如果该子目录不存在,将创建该子目录并使用标准Makefile.in
进行填充。
- 将一个或多个第三方模块添加到静态链接的模块列表中。将在 Apache HTTP 服务器源树的
此选项对于添加由一个源文件组成的小型外部模块很有用。对于更复杂的模块,您应该阅读供应商的文档。
Note
如果要构建 DSO 模块而不是静态链接,请使用apxs。
累积和其他选项
--enable-maintainer-mode
- 打开调试和编译时间警告,并加载所有已编译模块。
--enable-mods-shared=MODULE-LIST
- 定义要启用并构建为动态共享模块的模块列表。这意味着必须使用LoadModule指令动态加载这些模块。
MODULE-LIST 是用引号引起来的模块名称的空格分隔列表。模块名称不带前面的mod_
。例如:
--enable-mods-shared='headers rewrite dav'
另外,您可以使用特殊关键字reallyall
,all
,most
和few
。例如,
--enable-mods-shared=most
将编译大多数模块并将其构建为 DSO 模块,
--enable-mods-shared=few
只会编译非常基本的模块集。
默认设置为most
。
所选模块的LoadModule指令将在主配置文件中自动生成。默认情况下,所有这些指令都将被 Comments 掉,但配置--enable-foo
参数必需或明确选择的模块除外。您可以通过激活或禁用httpd.conf
中的LoadModule指令来更改已加载模块的集合。此外,可以通过配置选项--enable-load-all-modules
激活所有内置模块的LoadModule指令。
--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.
- 这定义了httpd监听的端口。生成配置文件
--with-program-name
- 定义备用可执行文件名称。默认值为
httpd
。
- 定义备用可执行文件名称。默认值为
Optional packages
这些选项用于定义可选软件包。
General syntax
通常,您可以使用以下语法来定义可选程序包:
--with-PACKAGE[=ARG]
- 使用包“ PACKAGE”。 ARG 的默认值为
yes
。
- 使用包“ PACKAGE”。 ARG 的默认值为
--without-PACKAGE
- 请勿使用包“ PACKAGE”。这与
--with-PACKAGE=no
相同。该选项由autoconf
提供,但对 Apache HTTP Server 而言不是很有用。
- 请勿使用包“ PACKAGE”。这与
Specific packages
--with-apr=DIR|FILE
- Apache 可移植运行时(APR)是 httpd 源分发的一部分,将自动与 HTTP 服务器一起构建。如果要使用已安装的 APR,则必须告诉
configure
apr-config
脚本的路径。您可以将绝对路径和名称或目录设置为已安装的 APR。apr-config
必须存在于此目录或子目录bin
中。
- Apache 可移植运行时(APR)是 httpd 源分发的一部分,将自动与 HTTP 服务器一起构建。如果要使用已安装的 APR,则必须告诉
--with-apr-util=DIR|FILE
- Apache 可移植运行时 Util(APU)是 httpd 源分发的一部分,将与 HTTP 服务器一起自动构建。如果要使用已安装的 APU,则必须告诉
configure
apu-config
脚本的路径。您可以为安装的 APU 设置绝对路径和名称或目录。apu-config
必须存在于此目录或子目录bin
中。
- Apache 可移植运行时 Util(APU)是 httpd 源分发的一部分,将与 HTTP 服务器一起自动构建。如果要使用已安装的 APU,则必须告诉
--with-ssl=DIR
- 如果已启用mod_ssl,则
configure
搜索已安装的 OpenSSL。您可以将目录路径设置为 SSL/TLS 工具包。
- 如果已启用mod_ssl,则
--with-z=DIR
- 如果您的源配置需要
configure
,则configure
自动搜索已安装的zlib
库(例如,启用mod_deflate时)。您可以将目录路径设置为压缩库。
- 如果您的源配置需要
Apache HTTP Server 的一些功能(包括mod_authn_dbm和mod_rewrite的 DBM RewriteMap)使用简单的键/值数据库来快速查找信息。 SDBM 包含在 APU 中,因此该数据库始终可用。如果要使用其他数据库类型,请使用以下选项启用它们:
--with-gdbm[=path]
- 如果未指定路径,则
configure
将在通常的搜索路径中搜索 GNU DBM 安装的包含文件和库。显式路径将导致configure
在path/lib
和path/include
中查找相关文件。最后,该路径可以指定由冒号分隔的特定包含和库路径。
- 如果未指定路径,则
--with-ndbm[=path]
- 类似于
--with-gdbm
,但搜索新的 DBM 安装。
- 类似于
--with-berkeley-db[=path]
- 类似于
--with-gdbm
,但搜索 Berkeley DB 安装。
- 类似于
Note
DBM 选项由 APU 提供,并传递到其配置脚本。当使用由--with-apr-util
定义的已安装的 APU 时,它们将无用。
您可以将不止一种 DBM 实现与 HTTP 服务器一起使用。每次都会在运行时配置中配置适当的 DBM 类型。
支持计划的选项
--enable-static-support
- 构建支持二进制文件的静态链接版本。这意味着,将集成所有必需的库来构建独立的可执行文件。否则,默认情况下将动态链接支持二进制文件。
--enable-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
--with-suexec-caller
--with-suexec-docroot
- 这定义了目录树,在该目录树下,可执行文件允许suexec访问。默认值为
--datadir/htdocs
。
- 这定义了目录树,在该目录树下,可执行文件允许suexec访问。默认值为
--with-suexec-gidmin
- 将其定义为suexec的目标用户允许的最低 GID。默认值为 100.
--with-suexec-logfile
- 这定义了suexec日志文件的文件名。默认情况下,日志文件名为
suexec_log
,位于--logfiledir
中。
- 这定义了suexec日志文件的文件名。默认情况下,日志文件名为
--with-suexec-safepath
- 定义要为suexec启动的进程设置的环境变量
PATH
的值。默认值为/usr/local/bin:/usr/bin:/bin
。
- 定义要为suexec启动的进程设置的环境变量
--with-suexec-userdir
- 这定义了用户目录下的子目录,该子目录包含允许suexec访问的所有可执行文件。当您要与用户特定的目录(由mod_userdir提供)一起使用suexec时,此设置是必需的。默认值为
public_html
。
- 这定义了用户目录下的子目录,该子目录包含允许suexec访问的所有可执行文件。当您要与用户特定的目录(由mod_userdir提供)一起使用suexec时,此设置是必需的。默认值为
--with-suexec-uidmin
- 将此定义为允许成为suexec的目标用户的最低 UID。默认值为 100.
--with-suexec-umask
- 为suexec开始的进程设置
umask
。它默认为您的系统设置。
- 为suexec开始的进程设置
Environment variables
有一些有用的环境变量可以覆盖configure
所做的选择,或帮助其查找具有非标准名称或位置的库和程序。
CC
- 定义用于编译的 C 编译器命令。
CFLAGS
- 设置要用于编译的 C 编译器标志。
CPP
- 定义要使用的 C 预处理程序命令。
CPPFLAGS
- 设置 C/C 预处理器标志,例如
-Iincludedir
(如果您在非标准目录中包含 Headers)。
- 设置 C/C 预处理器标志,例如
LDFLAGS
- 设置链接器标志,例如
-Llibdir
(如果您的库位于非标准目录 libdir 中)。
- 设置链接器标志,例如