2012年9月2日 星期日

Apache HTTP Server 2.2 configure - 配置源代碼樹

source:  The Apache Software Foundation http://wangyan.org/docs/apache/programs/configure.html


<-
   致謝 |本篇譯者:金步國 ( 其他作品 ) |本頁最後更新:2006年10月29日[ 查看最新版本 ] 電信鏡像 網通鏡像

configure - 配置源代碼樹

configure腳本配置Apache的源代碼樹並且將其安裝到指定的平台上。豐富的選項允許你根據自己的特定狀況和特定需求對Apache進行定制。
這個腳本位於源代碼樹的根目錄下,並且只能用於類Unix操作系統。要了解其他平台的信息,參見:針對特定平台的說明文檔。
top

語法

你必須在源代碼樹的根目錄下調用configure腳本,語法如下:
./configure [ OPTION ]... [ VAR = VALUE ]...
若要指定環境變量(比如:CC , CFLAGS ...),請使用VAR = VALUE的格式。下面有一些有用的環境變量說明。
top

選項

配置選項

下列選項會影響configure腳本自身的行為。方括號"[]"內是默認值。
-C
--config-cache
等價於--cache-file=config.cache
--cache-file= FILE
FILE文件中緩存測試結果(默認禁用)。
-h
--help[=short|recursive]
顯示幫助信息然後退出。使用short參數將只顯示正在運行的當前腳本的選項,而不能列出適用於Apache配置腳本所運行的外部配置腳本的選項。使用recursive參數將顯示所有程序包的簡短描述。
-n
--no-create
configure腳本運行結束後不輸出結果文件,常用於正式編譯前的測試。
-q
--quiet
不顯示腳本工作期間輸出的" checking ... "消息。
--srcdir= DIR
指定源代碼所在目錄DIR。[configure腳本所在目錄或父目錄]
--silent
等價於--quiet
-V
--version
顯示版權信息後退出。

安裝目錄

這些選項控制著安裝目錄的結構。安裝目錄的結構取決於所選擇的佈局。方括號"[]"內是默認值。
--prefix= PREFIX
體係無關文件的頂級安裝目錄PREFIX,也就Apache的安裝目錄。[ /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時分別指定不同文件的安裝位置。config.layout文件中包含了默認佈局的示例,你可以根據它創建你自己的佈局。這個文件中的不同佈局使用...段進行分組,其中的FOO就是佈局名。默認的佈局是Apache

安裝目錄微調

可以使用下面的選項微調安裝目錄。下列選項的默認值由autoconf自動設置並在方括號"[]"內說明。
--bindir= DIR
用戶可執行目錄DIR。用於存放對網站管理員很有幫助的htpasswd , dbmmanage之類的支持程序。
EPREFIX /bin ]
--datadir= DIR
Web服務器只讀的體係無關數據目錄DIR。雖然autoconf提供了該選項,但Apache並未使用它。
PREFIX /share ]
--includedir= DIR
Apache的C頭文件目錄DIR
EPREFIX /include ]
--infodir= DIR
信息文檔目錄DIR。雖然autoconf提供了該選項,但Apache並未使用它。
PREFIX /info ]
--libdir= DIR
對象代碼庫目錄DIR
EPREFIX /lib ]
--libexecdir= DIR
程序可執行目錄DIR,也就是動態加載模塊目錄。
EPREFIX /libexec ]
--localstatedir= DIR
可寫的單一機器數據目錄DIR。雖然autoconf提供了該選項,但Apache並未使用它。
PREFIX /var ]
--mandir= DIR
手冊文檔目錄DIR
EPREFIX /man ]
--oldincludedir= DIR
非gcc的C頭文件目錄DIR。雖然autoconf提供了該選項,但Apache並未使用它。
/usr/include ]
--sbindir= DIR
系統管理員可執行目錄DIR,用於存放運行HTTP服務器所必須的httpd , apachectl , suexec之類的服務程序。
EPREFIX /sbin ]
--sharedstatedir= DIR
可寫的體係無關數據目錄DIR。雖然autoconf提供了該選項,但Apache並未使用它。
PREFIX /com ]
--sysconfdir= DIR
只讀的單一機器數據目錄DIR,用於存放httpd.confmime.types之類的服務器配置文件。
PREFIX /etc ]

系統類型

這些選項用於交叉編譯在其他平台上運行的Apache HTTP服務器。在同一平台上編譯和運行Apache HTTP服務器通常不需要使用這些選項,腳本會自動檢測並設置。方括號"[]"內是默認值。
--build= BUILD
指定編譯工具所在系統的系統類型BUILD
config.guess腳本的檢測結果]
--host= HOST
指定Apache HTTP服務器將要運行的目標系統類型HOST
BUILD ]
--target= TARGET
configure for building compilers for TARGET類型的系統。雖然autoconf提供了該選項,但Apache並未使用它。
HOST ]

模塊選項

有兩種使用模塊的方法:一是靜態連接進核心,二是作為DSO模塊動態加載;如果編譯中包含任何DSO模塊,則mod_so會被自動包含進核心。如果希望核心能夠裝載DSO,但不實際編譯任何DSO模塊,則需明確指定"--enable-so=static"。

一般語法

一般情況下你可以使用如下語法啟用或者禁用某個模塊:
--disable- MODULE
禁用MODULE模塊(僅用於基本模塊)
--enable- MODULE =shared
MODULE編譯為DSO(可用於所有模塊)
--enable- MODULE =static
MODULE靜態連接進核心(僅用於擴展和實驗模塊)
--enable-mods-shared= MODULE-LIST
MODULE-LIST中的所有模塊都編譯成DSO(可用於所有模塊)
--enable-modules= MODULE-LIST
MODULE-LIST靜態連接進核心(可用於所有模塊)
上述MODULE-LIST可以是:
(1)用引號界定並且用空格分隔的模塊名列表
--enable-mods-shared='headers rewrite dav'
(2)" most "(大多數模塊[遇見錯誤模塊時忽略該模塊而不中斷配置過程])
(3)" all "(所有模塊[遇見錯誤模塊時中斷配置過程並報錯])
--enable-mods-shared=most

注意

configure將忽略MODULEMODULE-LIST中的拼寫錯誤,注意仔細拼寫。用於MODULEMODULE-LIST中的名稱是" mod_ NAME"中去掉" mod_ "並將剩餘部分中的下劃線" _ "替換為連字符" - "以後的結果,比如" mod_log_config "模塊應當表示為" log-config "。

模塊列表

基本(B)模塊默認包含,必須明確禁用;擴展(E)/實驗(X)模塊默認不包含,必須明確啟用。
模塊名稱狀態簡要描述
mod_actions(B)根據特定的媒體類型或請求方法,激活特定的CGI腳本
mod_alias(B)提供從文件系統的不同部分到文檔樹的映射和URL重定向
mod_asis(B)發送自己包含HTTP頭內容的文件
mod_auth_basic(B)使用基本認證
mod_authn_default(B)在未正確配置認證模塊的情況下簡單拒絕一切認證信息
mod_authn_file(B)使用純文本文件為認證提供支持
mod_authz_default(B)在未正確配置授權支持模塊的情況下簡單拒絕一切授權請求
mod_authz_groupfile(B)使用純文本文件為組提供授權支持
mod_authz_host(B)供基於主機名、IP地址、請求特徵的訪問控制
mod_authz_user(B)基於每個用戶提供授權支持
mod_autoindex(B)自動對目錄中的內容生成列表,類似於"ls"或"dir"命令
mod_cgi(B)在非線程型MPM( prefork )上提供對CGI腳本執行的支持
mod_cgid(B)在線程型MPM( worker )上用一個外部CGI守護進程執行CGI腳本
mod_dir(B)指定目錄索引文件以及為目錄提供"尾斜杠"重定向
mod_env(B)允許Apache修改或清除傳送到CGI腳本和SSI頁面的環境變量
mod_filter(B)根據上下文實際情況對輸出過濾器進行動態配置
mod_imagemap(B)處理服務器端圖像映射
mod_include(B)實現服務端包含文檔(SSI)處理
mod_isapi(B)僅限於在Windows平台上實現ISAPI擴展
mod_log_config(B)允許記錄日誌和定制日誌文件格式
mod_mime(B)根據文件擴展名決定應答的行為(處理器/過濾器)和內容(MIME類型/語言/字符集/編碼)
mod_negotiation(B)提供內容協商支持
mod_nw_ssl(B)僅限於在NetWare平台上實現SSL加密支持
mod_setenvif(B)根據客戶端請求頭字段設置環境變量
mod_status(B)生成描述服務器狀態的Web頁面
mod_userdir(B)允許用戶從自己的主目錄中提供頁面(使用"/~username")
mod_auth_digest(X)使用MD5摘要認證(更安全,但是只有最新的瀏覽器才支持)
mod_authn_alias(E)基於實際認證支持者創建擴展的認證支持者,並為它起一個別名以便於引用
mod_authn_anon(E)提供匿名用戶認證支持
mod_authn_dbd(E)使用SQL數據庫為認證提供支持
mod_authn_dbm(E)使用DBM數據庫為認證提供支持
mod_authnz_ldap(E)允許使用一個LDAP目錄存儲用戶名和密碼數據庫來執行基本認證和授權
mod_authz_dbm(E)使用DBM數據庫文件為組提供授權支持
mod_authz_owner(E)基於文件的所有者進行授權
mod_cache(E)基於URI鍵的內容動態緩衝(內存或磁盤)
mod_cern_meta(E)允許Apache使用CERN httpd元文件,從而可以在發送文件時對頭進行修改
mod_charset_lite(X)允許對頁面進行字符集轉換
mod_dav(E)允許Apache提供DAV協議支持
mod_dav_fs(E)mod_dav訪問服務器上的文件系統提供支持
mod_dav_lock(E)mod_dav鎖定服務器上的文件提供支持
mod_dbd(E)管理SQL數據庫連接,為需要數據庫功能的模塊提供支持
mod_deflate(E)壓縮發送給客戶端的內容
mod_disk_cache(E)基於磁盤的緩衝管理器
mod_dumpio(E)將所有I/O操作轉儲到錯誤日誌中
mod_echo(X)一個很簡單的協議演示模塊
mod_example(X)一個很簡單的Apache模塊API演示模塊
mod_expires(E)允許通過配置文件控制HTTP的" Expires: "和" Cache-Control: "頭內容
mod_ext_filter(E)使用外部程序作為過濾器
mod_file_cache(X)提供文件描述符緩存支持,從而提高Apache性能
mod_headers(E)允許通過配置文件控制任意的HTTP請求和應答頭信息
mod_ident(E)實現RFC1413規定的ident查找
mod_info(E)生成Apache配置情況的Web頁面
mod_ldap(E)為其它LDAP模塊提供LDAP連接池和結果緩沖服務
mod_log_forensic(E)實現"對比日誌",即在請求被處理之前和處理完成之後進行兩次記錄
mod_logio(E)對每個請求的輸入/輸出字節數以及HTTP頭進行日誌記錄
mod_mem_cache(E)基於內存的緩衝管理器
mod_mime_magic(E)通過讀取部分文件內容自動猜測文件的MIME類型
mod_proxy(E)提供HTTP/1.1的代理/網關功能支持
mod_proxy_ajp(E)mod_proxy的擴展,提供Apache JServ Protocol支持
mod_proxy_balancer(E)mod_proxy的擴展,提供負載平衡支持
mod_proxy_connect(E)mod_proxy的擴展,提供對處理HTTP CONNECT方法的支持
mod_proxy_ftp(E)mod_proxy的FTP支持模塊
mod_proxy_http(E)mod_proxy的HTTP支持模塊
mod_rewrite(E)一個基於一定規則的實時重寫URL請求的引擎
mod_so(E)允許運行時加載DSO模塊
mod_speling(E)自動糾正URL中的拼寫錯誤
mod_ssl(E)使用安全套接字層(SSL)和傳輸層安全(TLS)協議實現高強度加密傳輸
mod_suexec(E)使用與調用web服務器的用戶不同的用戶身份來運行CGI和SSI程序
mod_unique_id(E)為每個請求生成唯一的標識以便跟踪
mod_usertrack(E)使用Session跟踪用戶(會發送很多Cookie),以記錄用戶的點擊流
mod_version(E)提供基於版本的配置段支持
mod_vhost_alias(E)提供大批量虛擬主機的動態配置支持

多路處理模塊(MPM)

必須有而且只能有一個MPM被靜態包含進核心,你可以使用下面的配置選項進行選擇:
--with-mpm=MPM
其中,MPM是你想要使用的多路處理模塊的名字。如果你不使用這個選項,那麼將會使用對應於各平台的默認MPM,可選的MPM如下:beos , mpmt_os2 , prefork , worker

第三方模塊

有至少兩種方法可以添加第三方模塊,最簡單的方法是作為配置參數提供,語法如下:
--with-module= module-type : module-file [, module-type : module-file ]
module-file是模塊的源代碼文件名 ​​,該文件必須位於Apahe源代碼目錄樹的" modules/ module-type "目錄下,如果configure沒有在那裡找到module-file,則將它看作一個絕對路徑名並嘗試將其複製到" modules/ module-type "目錄中,如果" modules/ module-type "目錄不存在,configure將新建一個" modules/ module-type "目錄並在其中放置一個標準的Makefile.in文件。這種方法有兩個明顯的缺陷:
  1. 模塊的源代碼必須是單一文件
  2. 模塊只能靜態連接進核心,而不能作為DSO模塊
所以一般並不使用此方法,而是使用apxs (Apache擴展工具)來添加第三方模塊支持。

雜項選項

--enable-http
啟用HTTP協議處理支持
--enable-v4-mapped
使用相同的套接字同時處理IPv4和IPv6的連接,也就是啟用地址映射。在FreeBSD、NetBSD、OpenBSD以外的平台上是默認值。
--disable-v4-mapped
使用不同的套接字分別處理IPv4和IPv6的連接,也就是禁用地址映射。在FreeBSD、NetBSD、OpenBSD上是默認值。
--enable-distcache
mod_ssl中啟用distcache支持
--enable-maintainer-mode
使用所有警告和調試符號編譯源代碼,請勿用於正式服務器,它會影響性能。
--enable-exception-hook
允許在子進程崩潰以後啟用一個鉤子來運行異常處理程序。參見EnableExceptionHook指令
--enable-pie
httpd編譯為位置獨立的(Position Independent)可執行程序
--with-port= PORT
設定httpd的默認的監聽端口[默認為:80 ],該值僅在生成默認配置文件httpd.conf時使用。
--with-program-name= NAME
指定可執行程序的名字[默認為:httpd ],若使用此選項則默認配置文件的名字將同時變成" NAME .conf"。

傳遞給apr-config腳本的選項

譯者註:下述選項並未出現在官方手冊中,譯者不保證其真實性,僅供有興趣的玩家參考。
--enable-nonportable-atomics
若只打算在486以上的CPU上運行Apache ,那麼使用該選項可以啟用更加高效的基於互斥執行的原子操作
--disable-threads
禁用線程支持,如果不使用線程化的MPM ,可以關閉它以減少系統開銷。
--disable-lfs
在32-bit平台上禁用大文件支持(large file support)
--enable-threads
啟用線程支持,在線程型的MPM上必須打開它
--disable-ipv6
禁用IPv6支持
--disable-dso
禁用DSO支持

特殊程序包選項

這些指令用於定義特殊程序包相關的選項。
--with-included-apr
在編譯時強制使用當前源代碼中綁定的APR版本,僅在2.2.3以後的版本中可用。
--with-apr= DIR | FILE
Apache可移植運行時(APR)是httpd源碼的一部分並會自動與httpd一起創建。如果你想使用一個已經存在的APR ,就必須在這裡指定apr-config腳本的路徑。可以使用此腳本的絕對路徑或已有的APR安裝目錄( apr-config必須位於此目錄或者其下的" bin "子目錄中)。
--with-apr-util= DIR | FILE
Apache可移植運行時工具包(APU)是httpd源碼的一部分並會自動與httpd一起創建。如果你想使用一個已經存在的APU ,就必須在這裡指定apu-config腳本的路徑。可以使用此腳本的絕對路徑或已有的APU安裝目錄( apu-config必須位於此目錄或者其下的" bin "子目錄中)。
--with-ssl= DIR
如果啟用了mod_sslconfigure腳本將會自動搜尋已經安裝的OpenSSL ,你可以在這裡指定OpenSSL SSL/TLS工具包的位置。
--with-sslc= DIR
使用RSA SSL-C SSL/TLS 工具包代替OpenSSL ,並指定RSA SSL-C SSL/TLS 的位置。
--with-z= DIR
如果你啟用了壓縮模塊(比如mod_deflate ),configure腳本將會自動搜尋已經安裝的zlib庫,你可以在這裡指定它的安裝路徑。
--with-perl= DIR
有些用Perl寫的支持腳本,如apxsdbmmanage,需要Perl5解釋器(5.003或以上的版本就足夠了)。如果系統中存在多個Perl解釋器,比如有系統提供的Perl 4 ,還有你自己安裝的Perl 5 ,推薦你使用該選項來指定正確的版本。如果沒有Perl 5也沒關係,這並不影響Apache httpd的編譯和安裝,只是相關的支持腳本不能使用而已。
--with-pcre= DIR
5.0版的Perl兼容正則表達式庫(PCRE)已經被包含進來了,如果你想使用系統中已經安裝好的PCRE ,就可以在這裡指定其安裝路徑。
--with-ldap= DIR
一些Apache模塊,比如mod_ldapmod_authnz_ldap需要APU支持LDAP(默認並不支持),只要使用其中之一,就要使用該選項指定LDAP的安裝路徑。
一些Apache模塊,比如mod_authn_dbmmod_rewrite需要使用DBM數據庫,APU中已經包含了SDBM ,所以這個數據庫總是可用的。如果你想使用其他類型的數據庫,就要使用以下選項:
--with-gdbm[= path ]
使用GNU DBM代替SDBM;如果不指定path,則configure腳本將會在默認路徑上搜索GNU DBM的包含文件和庫的位置。如果指定path,則configure腳本會在path /libpath /include目錄中搜索GNU DBM的包含文件和庫。還可以使用" inc-path:lib-path "的形式分別指定GNU DBM的包含文件和庫的位置。
--with-ndbm[= path ]
使用New DBM代替SDBM;如果不指定path,則configure腳本將會在默認路徑上搜索New DBM的包含文件和庫的位置。如果指定path,則configure腳本會在path /libpath /include目錄中搜索New DBM的包含文件和庫。還可以使用" inc-path:lib-path "的形式分別指定New DBM的包含文件和庫的位置。
--with-berkeley-db[= path ]
使用Berkeley DB代替SDBM;如果不指定path,則configure腳本將會在默認路徑上搜索Berkeley DB的包含文件和庫的位置。如果指定path,則configure腳本會在path /libpath /include目錄中搜索Berkeley DB的包含文件和庫。還可以使用" inc-path:lib-path"的形式分別指定Berkeley DB的包含文件和庫的位置。

注意

DBM數據庫選項是由APU提供並傳遞給APU配置腳本的。所以如果使用--with-apr-util指定一個已安裝的APU來代替,那麼這些選項便無效。你可以同時使用幾種不同的DBM實現,然後使用運行時配置動態選擇其中之一。

支持程序選項

--enable-static-support
使用靜態連接(默認為動態連接)編譯所有二進制支持程序。若不使用該選項也可以使用下面的選項分別指定每個支持程序:
--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配置選項

--enable-suexec
使用這個選項以啟用suexec,它可以允許你為CGI程序指定uid和gid 。如果你不精通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腳本的默認選擇,或者幫助configure腳本找到名字和/或位置不標準的庫和程序。
CC
C編譯器
CFLAGS
C編譯器的flags
CPP
C預處理程序
CPPFLAGS
C/C++預處理程序flags,比如使用" -I includedir "指定一個非標準的頭文件目錄includedir
LDFLAGS
連接器flags,比如使用"-L -L libdir "指定一個非標準的庫文件目錄libdir





沒有留言: