<-
Apache > HTTP 伺服器 > 文件 > 版本 2.4 > 程式

configure - 設定原始碼樹

提供的語言:  en  |  fr  |  ko  |  tr 

configure 指令碼設定原始碼樹,以便在特定平台編譯和安裝 Apache HTTP 伺服器。您可以使用多種選項編譯符合個人需求的伺服器。

此指令碼包含於原始碼發行版的根目錄中,僅供在 Unix 及類 Unix 系統編譯。如需其他平台,請參閱 平台 文件。

Support Apache!

另請參閱

top

簡介

您應該從發行版的根目錄呼叫 configure 指令碼。

./configure [選項]... [變數=]...

若要指定環境變數(例如 CCCFLAGS 等),請將其指定為 變數=。請參閱 下方,以了解一些有用的變數說明。

top

選項

設定選項

以下選項影響 configure 本身的行為。

-C
--config-cache
這是 --cache-file=config.cache 的別名
--cache-file=檔案
測試結果會快取在檔案 檔案 中。此選項預設停用。
-h
--help [簡短 |遞迴]
輸出說明並結束。使用引數 簡短時,只會顯示特定於此套件的選項。引數 遞迴會顯示所有包含套件的簡短說明。
-n
--no-create
configure 指令碼會正常執行,但不會建立輸出檔案。這有助於在產生編譯用的 makefile 之前查看測試結果。
-q
--quiet
設定程序執行期間不要列印 檢查中... 訊息。
--srcdir=目錄
定義目錄 目錄 為原始碼目錄。預設為 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 伺服器安裝內的每個檔案類型的存放位置。config.layout 檔案包含幾個範例設定檔,您也可以建立自己的自訂設定檔,並依循範例來操作。此檔案中的不同佈局會分組到 <Layout FOO>...</Layout> 區段內,並就像 FOO 一樣稱呼它們的名稱。預設的佈局為 Apache

微調安裝目錄

如需更進一步地調整安裝目錄,請使用下列選項。請注意目錄預設值是由 autoconf 設定,並會被對應的佈局設定覆寫。

--bindir=DIR
將使用者可執行檔安裝在 DIR。使用者可執行檔是支援程式,例如 htpasswddbmmanage 等等,它們對網站管理員很有用。預設值下,DIR 會設定為 EPREFIX/bin
--datadir=DIR
將唯讀、獨立於架構的資料安裝在 DIR。預設值下,datadir 會設定為 PREFIX/share。這個選項是由 autoconf 提供,目前並未被使用。
--includedir=DIR
將 C 標頭檔安裝在 DIR。預設值下,includedir 會設定為 EPREFIX/include
--infodir=DIR
將 info 文件安裝在 DIR。預設值下,infodir 會設定為 PREFIX/info。此選項目前並未被使用。
--libdir=DIR
將物件程式庫安裝在 DIR。預設值下,libdir 會設定為 EPREFIX/lib
--libexecdir=DIR
將程式可執行檔 (亦即共用模組) 安裝在 DIR。預設值下,libexecdir 會設定為 EPREFIX/modules
--localstatedir=DIR
將可修改的單一機器資料安裝在 DIR。預設值下,localstatedir 會設定為 PREFIX/var。這個選項是由 autoconf 提供,目前並未被使用。
--mandir=DIR
將 man 文件安裝在 DIR。預設值下,mandir 會設定為 EPREFIX/man
--oldincludedir=目錄
將非 gcc 之 C 標頭檔安裝至 目錄。通常會將 oldincludedir 設定為 /usr/include。此選項由 autoconf 提供,目前並未採用。
--sbindir=目錄
將系統管理員的可執行檔安裝至目錄。這些是伺服器程式,例如 httpdapachectlsuexec 等,這些程式是執行 Apache HTTP Server 所需。預設情況下,sbindir 會設定為 EPREFIX/sbin
--sharedstatedir=目錄
將可修改的與架構無關的資料安裝至 目錄。預設情況下,會將 sharedstatedir 設定為 PREFIX/com。此選項由 autoconf 提供,目前並未採用。
--sysconfdir=目錄
將唯讀的單一電腦資料 (例如伺服器設定檔 httpd.confmime.types 等) 安裝至 目錄。預設情況下,sysconfdir 會設定為 PREFIX/conf

系統類型

這些選項用於交叉編譯 Apache HTTP Server,以在其他系統執行。在一般情況下,當在同一系統編譯及執行伺服器時,並不會使用這些選項。

--build=建立
定義工具建立的系統類型。預設值會依照腳本 config.guess 的結果而定。
--host=主機
定義伺服器執行的系統類型。主機 預設為 建立
--target=目標
設定編譯 目標 系統類型編譯器的條件。它預設為 主機。此選項由 autoconf 提供,Apache HTTP Server 並不需要使用此選項。

選用功能

這些選項用來微調 HTTP 伺服器的功能。

一般語法

您通常可以使用下列語法來啟用或停用某項功能

--disable-功能
不含 功能。這等於 --enable-功能=否
--enable-功能[=參數]
包含 功能參數 的預設值為
--enable-模組=共用
對應的模組會建立為 DSO 模組。預設情況下,已啟用的模組會以動態方式連結。
--enable-模組=靜態
對應的模組會以靜態方式連結。

備註

configure 即使在 foo 不存在的情況下,也不會針對 --enable-foo 發出警告訊息,因此您必須小心輸入。

選擇要編譯的模組

大部分模組會在預設情況下編譯,並且必須明確停用或使用關鍵字 few (詳見下方的 --enable-modules--enable-mods-shared--enable-mods-static 以取得更多說明),或使用 --enable-modules=none 以群組方式移除。

預設情況下,其他模組不會編譯,且必須明確啟用或使用關鍵字allreallyall才能使用。

若要找出預設編譯的模組,請執行./configure -h./configure --help,並在Optional Features底下查看。假設你對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=<var>模組清單</var>

定義要啟用及建置為動態共用模組的模組清單。意即這些模組必須使用 LoadModule 指令動態載入。

<var>模組清單</var> 是以引號括住的,空白分隔的模組名稱清單。模組名稱不包含前置的 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=<var>模組清單</var>
此選項的運作方式類似於 --enable-mods-shared,但會以靜態方式連結指定的模組。意即在執行 httpd 時,這些模組將始終存在。它們不需要透過 LoadModule 載入。
--enable-modules=<var>模組清單</var>
此選項的運作方式類似於 --enable-mods-shared,它也會動態連結指定的模組。特殊關鍵字 none 會停用所有模組的建置。
--enable-v4-mapped
允許 IPv6 socket 處理 IPv4 連線。
--with-port=<var>埠</var>
此選項定義 httpd 將在上面監聽的埠。此埠號用於產生設定檔 httpd.conf 時。預設值為 80。
--with-program-name
定義其他可執行檔名稱。預設值為 httpd

選用套件

這些選項用於定義選用套件。

一般語法

一般來說,您可以使用下列語法定義選用套件

--with-<var>套件</var>[=<var>參數</var>]
使用套件 套件</var>。<var>參數</var> 的預設值為 yes
--without-<var>套件</var>
不使用套件 套件</var>。這與 --with-<var>套件</var>=no 相同。autoconf 提供此選項,但對 Apache HTTP Server 來說並不太好用。

特定套件

--with-apr=<var>目錄</var>|<var>檔案</var>
The Apache Portable Runtime (APR) 是 httpd 原始碼配發的一部分,並且會自動和 HTTP 伺服器一起建置。如果您想改用已安裝的 APR,則您需要告知 configure apr-config 腳本的途徑。您可以設定絕對路徑和名稱或已安裝 APR 的目錄。apr-config 必須存在於此目錄或子目錄 bin 中。
--with-apr-util=DIR|FILE
Apache Portable Runtime Utilities (APU) 是 httpd 原始碼配發的一部分,並且會自動和 HTTP 伺服器一起建置。如果您想改用已安裝的 APU,則您需要告知 configure apu-config 腳本的途徑。您可以設定絕對路徑和名稱或已安裝 APU 的目錄。apu-config 必須存在於此目錄或子目錄 bin 中。
--with-ssl=DIR
如果 mod_ssl 已啟用,configure 會搜尋已安裝的 OpenSSL。不過,您可以改設為 SSL/TLS 工具組的目錄路徑。
--with-z=DIR
如果您的原始碼設定需要,configure 會自動搜尋已安裝的 zlib 函式庫(例如,當 mod_deflate 啟用時)。不過,您可以改設為壓縮函式庫的目錄路徑。

包含 mod_authn_dbmmod_rewrite 的 DBM RewriteMap 在內的 Apache HTTP Server 的數項功能會使用簡單的鍵/值資料庫來快速查找資訊。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 時沒有用。

您可以同時與您的 HTTP 伺服器一起使用多個 DBM 實作。每次會在執行階段設定中設定適當的 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
定義環境變數 PATH 的值,由 suexec 所啟動程序設定。預設值為 /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),或傳送至我們的郵件列表