Apache HTTP 伺服器版本 2.4
在開始編譯 Apache HTTP 伺服器 (httpd) 之前,有許多重要事項需要考量。開始之前,請參閱 在 Microsoft Windows 上使用 Apache HTTP 伺服器。
httpd 可使用 httpd 開發人員維護的基於 cmake 的建置系統或 Visual Studio 專案檔案在 Windows 上建置。基於 cmake 的建置系統直接支援更多版本的 Visual Studio,但目前有相當多的功能限制。
編譯 Apache 需要已正確安裝下列環境
磁碟空間
請確定至少有 200 MB 以上的可用磁碟空間。安裝後,Apache 大約需要 80 MB 的磁碟空間,另外還有日誌和快取檔案的空間,而這些檔案會快速地增加。實際磁碟空間需求會根據您選擇的設定和任何協力廠商模組或函式庫而有很大的不同,特別是在建置 OpenSSL 時。由於許多檔案是文字檔且非常容易壓縮,因此 NTFS 檔案系統壓縮技術可將這些需求減半。
適當的修補程式
httpd 二進位檔案使用許多已套用的修補程式建置,其中包含協力廠商套件,確保發行的原始碼可建置且可除錯。這些修補程式可從 http://www.apache.org/dist/httpd/binaries/win32/patches_applied/ 取得和散佈,建議套用這些修補程式,以取得與 ASF 散佈的「官方」二進位檔案相同的結果。
Microsoft Visual C++ 6.0 (Visual Studio 97) 或更新版本
可以使用命令列工具或從 Visual Studio IDE 工作台中建置 Apache。命令列建置需要環境反映 PATH
、INCLUDE
、LIB
等變數,以及可以使用 vcvars32.bat
腳本来設定的其他變數。
更新 Microsoft Windows 平台 SDK,2003 年 2 月或後續版本。
已在 Visual C++ 7.1 (Visual Studio 2002) 及後續版本中,針對完整的 (非 express/lite) 版本預設納入適當的 Windows 平台 SDK,這些使用者可以忽視這些步驟,除非明確選擇較新或不同版本的平台 SDK。
為了使用 Visual C++ 6.0 或 7.0 (Studio 2000 .NET),在開始命令列建置或是啟動 msdev/devenv GUI 環境前,必須使用 (由平台 SDK 安裝的) setenv.bat
指令碼來準備平台 SDK 環境。安裝 Visual Studio Express 版本 (2003 年或後續版本) 的平台 SDK,應適當地調整預設環境。
"c:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32"
"c:\Program Files\Platform SDK\setenv.bat"
Perl 和 awk
在建置準備過程中,這裡建議的幾個步驟需要一個 perl 解譯器,但否則就不需要。
要在建置系統中安裝 Apache,會使用awk.exe
工具來修改許多檔案。選擇 awk 是因為它是一個非常小的下載檔 (相較於 Perl 或 WSH/VB),而且在安裝時可以順利修改組態檔。Brian Kernighan 的 http://www.cs.princeton.edu/~bwk/btl.mirror/ 網站有一個已編譯的原生 Win32 二進位檔案,http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe 而您必須將其儲存為名稱 awk.exe
(而非 awk95.exe
)。
awk.exe
。請確保 awk.exe 出現在系統路徑中。gawk.exe
,而檔案 awk.exe
實際上會鏈結到 gawk.exe
檔案。Windows 命令殼層無法辨識鏈結,基於這個原因,建立 InstallBin 時會失敗。解決方法是從 cygwin 安裝程式中刪除 awk.exe
,然後將 gawk.exe
複製到 awk.exe
。另外請注意,cygwin/mingw 埠的 gawk 3.0.x 有錯誤,請先升級到 3.1.x,再嘗試使用任何 gawk 埠。[選用] zlib 函式庫 (針對mod_deflate
)
必須將 Zlib 安裝到名為「zlib」的 srclib
子目錄。這必須直接內嵌。可從 mod_deflate
取得 Zlib http://www.zlib.net/ – 已確認其可正確和 1.2.3 版本相容。
nmake -f win32\Makefile.msc
nmake -f win32\Makefile.msc test
[選用] OpenSSL 函式庫(適用於 mod_ssl
以及支援 ssl 的 ab.exe
)
設定與建置 OpenSSL 需要安裝 perl。
必須將 OpenSSL 安裝到名為「openssl」的 srclib
子目錄,從 http://www.openssl.org/source/ 取得,以編譯 mod_ssl
或 abs.exe
專案,這是已啟用 SSL 支援的 ab.c。若要準備 OpenSSL 以連結到 Apche mod_ssl 或 abs.exe,並停用 OpenSSL 中受專利保護的功能,您可以使用以下建構命令
perl Configure no-rc5 no-idea enable-mdc2 enable-zlib VC-WIN32 -I路徑/至/srclib/zlib -L路徑/至/srclib/zlib
ms\do_masm.bat
nmake -f ms\ntdll.mak
[選用] 資料庫函式庫(適用於 mod_dbd
和 mod_authn_dbm
)
apr-util 函式庫會對 httpd 伺服器及其模組公開 dbm(鍵值資料庫)和 dbd(以查詢為導向的資料庫)客戶端功能,例如身分驗證和授權。sdbm dbm 和 odbc dbd 提供者無條件編譯。
dbd 支援包含 Oracle instantclient 套件、MySQL、PostgreSQL 和 sqlite。例如,若要同時建置所有支援,請設定 LIB 以包含函式庫路徑、INCLUDE 以包含標頭路徑,以及 PATH 以包含所有四個 SDK 的 dll bin 路徑,並設定 DBD_LIST 環境變數,以告知建置作業哪些客戶端驅動程式 SDK 已正確安裝,例如;
設定 DBD_LIST=sqlite3 pgsql oracle mysql
同樣地,可以在 dbm 支援中延伸 DBM_LIST,以建置 Berkeley DB 提供者(db)和/或 gdbm 提供者,方式是先對應地設定 LIB、INCLUDE 和 PATH,以確保客戶端函式庫 libs 和標頭可用
設定 DBM_LIST=db gdbm
請參閱 README-win32.txt 檔案,了解有關取得各種資料庫驅動程式 SDK 的其他提示。
Apache HTTP Server 專案的政策僅釋出 Unix 來源。Windows 來源套件由志工提供,並且可能不會在每個版本中提供。您仍然可以針對 Windows 從 Unix 來源 tarball 組建伺服器,只需幾個額外步驟。
perl srclib\apr\build\lineends.pl
您現在可以使用 IDE,透過 Visual Studio 開發環境組建伺服器。除非您如下方說明匯出 .mak 檔案,否則無法從 Unix 來源組建伺服器命令列。
Makefile.win
是最上層的 Apache makefile。若要在 Windows 上編譯 Apache,只需使用下列任一命令即可組建 release
或 debug
版本
nmake /f Makefile.win _apacher
nmake /f Makefile.win _apached
任一命令都可編譯 Apache。後者將停用對產生檔案的最佳化,讓您更輕鬆地單獨執行程式碼,找出錯誤並追蹤問題。
您可以透過額外的 make(環境)變數 DBD_LIST 和 DBM_LIST 新增您的 apr-util dbd 和 dbm 提供者選項,請參閱上述 [可選項目] 資料庫函式庫中的註解。檢閱 Makefile.win 中的初始註解,了解在呼叫組建時可提供的其他選項。
Apache 也可搭配 VC++ 的 Visual Studio 開發環境來編譯。為了簡化此程序,我們提供了一個 Visual Studio 工作區 Apache.dsw
。此工作區顯示所有作業中 .dsp
專案的清單,這些專案是完成 Apache 二進制版本所必須的。其中包含專案之間的相依性,確保專案能夠在正確順序中建置完成。
開啟 Apache.dsw
工作區,並選擇 InstallBin
(可依需要選擇 Release
或 Debug
建置)作為「Active Project」。InstallBin
會導致所有相關專案都建立,然後呼叫 Makefile.win
來移動編譯的可執行檔與 DLL。您可以透過變更 InstallBin
的「設定」、變更「一般」索引標籤、建立命令列條目,自訂 INSTDIR=
選擇。INSTDIR
的預設值為 /Apache2
目錄。如果您只需要測試編譯(不包含安裝),您可以改建置 BuildBin
專案。
.dsp
專案檔案以 Visual Studio 6.0 (98) 格式發行。Visual C++ 5.0 (97) 會識別這些檔案。Visual Studio 2002(.NET) 及後續版本使用者必須將 Apache.dsw
加上 .dsp
檔案轉換成 Apache.sln
加上 .msproj
檔案。如果原始的 .dsp
檔案有任何變更,務必再次轉換 .msproj
檔案!這真的很簡單,只要再次使用 VC++ 7.0 IDE 開啟 Apache.dsw
,然後進行轉換即可。
perl srclib\apr\build\cvtdsp.pl -2005
perl srclib\apr\build\cvtdsp.pl -ossl11
Visual Studio 2002 (.NET) 及後續版本使用者還應該使用建置功能表、設定管理員對話方塊取消勾選 Debug
和 Release
Solution 模組(abs
、mod_deflate
和 mod_ssl
元件)、以及所有從 apr_db*
開始的元件。這些模組會透過呼叫 nmake
或 IDE 直接搭配 BinBuild
目標來建置,如果 srclib
目錄(openssl
和/或 zlib
)存在,且根據 DBD_LIST
和 DBM_LIST
環境變數設定,這些模組就會有條件地建置完成。
匯出的 .mak
檔案會造成更多麻煩,但 Visual C++ 5.0 的使用者要建置 mod_ssl
、abs(搭配 SSL 支援的 ab
)和/或 mod_deflate
時需要這些檔案。.mak 檔案也會支援更廣泛的 C++ 工具鏈發行,例如 Visual Studio Express。
您必須先建立所有專案,才能建立所有動態自動產生目標,如此一來才能正確解析相依性。在 Visual Studio 6.0 (98) IDE 中使用 BuildAll
目標進行整個專案的建立,然後使用專案功能表來匯出所有 makefile(勾選「with dependencies」。執行下列命令,將絕對路徑修正為相對路徑,以讓它們無處可建
perl srclib\apr\build\fixwin32mak.pl
您必須從 httpd 原始碼樹的頂層目錄中輸入此命令。目前目錄及下方的每個 .mak
和 .dep
專案檔案都將修正,而且時間戳記會調整,以反映 .dsp
。
隨時檢閱產生的 .mak
及 .dep
檔案是否有 Platform SDK 或其他本機特定檔案路徑。DevStudio\Common\MSDev98\bin\
(VC6)目錄包含一個 sysincl.dat
檔案,其中列出所有例外。更新這個檔案(包含正斜線及反斜線路徑,例如 sys/time.h
及 sys\time.h
),以忽略這些較新的相依性。在已散發的 .mak
檔案中包含本機安裝路徑會導致建置完全失敗。
如果您回饋修正專案檔案的修正程式,我們必須以 Visual Studio 6.0 格式提交專案檔案。變更應盡量簡單,並包含所有 Visual Studio 環境都能辨識的極少量編譯和連結旗標。
完成 Apache 編譯後,需要將它安裝到其伺服器根目錄中。預設值為同一個磁碟機的 \Apache2
目錄。
若要自動編譯並安裝所有檔案到所需的資料夾 dir,請使用下列其中一個 nmake
命令
nmake /f Makefile.win installr INSTDIR=dir
nmake /f Makefile.win installd INSTDIR=dir
傳遞至 INSTDIR
的 dir 參數提供安裝目錄;若 Apache 將安裝到 \Apache22
(目前磁碟機)中,則可以省略它。
.dsp
檔案會在發佈
建置之間維持。不會重新產生 .mak
檔案,因為這極浪費審查員的時間。因此,除非您稍後自行從專案匯出所有 .mak
檔案,否則無法依賴上述 NMAKE
命令來建置經修改的 .dsp
專案檔案。如果您從 Microsoft Developer Studio 環境中進行建置,這將不必要。此建置機制的首要文件位於原始碼散佈中的 README.cmake
檔案中。請參閱該檔案以取得詳細說明。
使用 cmake 建置 httpd 需要分別建置 APR 及 APR-util。請參閱其 README.cmake
檔案以取得指示說明。
基於 cmake 的建置的主要限制會從 APR-util 專案繼承下來,且由於它們對 httpd 的影響,如下列出
mod_charset_lite
以及部分協力廠商的模組可能無法使用。