基于當前的Windows版本狀況,本文檔使用到的縮寫及其意義解釋包括:
Windows NT: 指所有基于NT核心的Microsoft Windows操作系統的版本,包括Windows NT, Windows 2000, Windows XP, Windows.NET Server 2003及后續版本。
Windows 9x: 指所有定位于家庭使用的Microsoft Windows操作系統的版本,包括 Windows 95 , Windows 98, Windows ME 。
◆對操作系統的要求
Apache 2.0被設計為在Windows NT上運行。它的二進制安裝程序只能在x86處理器上運行,比如Intel和AMD的芯片。Apache可能也能夠運行在Windows 9x上,但是并沒有經過測試, 也不建議在實際工作的系統上這樣使用。
任何情況下都必須確保TCP/IP網絡協議已經安裝。如果在Windows 95上運行,必須安裝"Winsock2"升級補丁。 "Winsock2" for Windows 95可以在這里下載。
如果在NT 4.0上運行,建議安裝Service Pack 6 ,因為Service Pack 4有眾所周知的TCP/IP和Winsock完整性的問題,在以后的Service Pack中解決了這些問題。
◆下載 Apache for Windows
關于Apache最新版本的有關信息可以在http://httpd.apache.org/download.cgi上找到。那里會列出當前發行版本、 所有最近的alpha和beta測試版本以及鏡像web站點和匿名ftp服務器的信息。
你應該下載帶有.msi擴展名的Apache for Windows版本。 這是一個單一的Microsoft Installer文件,包含了Apache ,可以立即安裝并運行。 還有一個單獨的.zip文件只打包了源碼, 可以用Microsoft Visual C++ (Visual Studio)工具來編譯。
◆安裝 Apache for Windows
Apache的安裝需要有Microsoft Installer 1.2或更高版本。 在Windows 9x中,你可以從這里升級Microsoft Installer到2.0 ,在Windows NT 4.0和2000中,2.0的升級版在這里。Windows XP/2003不需要這個升級。
注意,使用這個安裝包不能在同一個機器上安裝兩套Apache 2.0。 但是,在同一個機器上,安裝一個1.3系列和一個2.0系列的Apache則沒有問題。 如果你需要在同一個機器上安裝兩套不同的2.0版本, 則必須用代碼編譯和安裝Apache
運行已下載的上述Apache .msi文件。安裝程序會要求提供下列信息:
1.)Network Domain 你的服務器已經或者將要注冊的DNS域名。比如你的服務器的全稱DNS域名是server.mydomain.net ,你應當在這里輸入:mydomain.net
2.)Server Name 你的服務器的全稱DNS域名,如上情況你應當在這里輸入:server.mydomain.net
3.)Administrator's Email Address 服務器管理員的email地址。這個地址將會在默認的出錯頁面上顯示給客戶端。
4.)For whom to install Apache 如果你希望Apache在80端口監聽,并被安裝為服務(即使無人登陸,Apache仍將運行),就選擇"for All Users, on Port 80, as a Service - Recommended";如果你希望將Apache安裝為個人試驗使用,或者已經有一個運行于80端口的WWW服務器,就選擇"only for the Current User, on Port 8080, when started Manually"。
5.)The installation type 選擇Typical會安裝除開發模塊需要使用的源碼和庫以外的所有內容。選擇Custom可以自定義安裝哪些項目。完整安裝大約需要13MB磁盤空間,這其中并不包含你的網站文件所用空間。
6.)Where to install 安裝Apache的文件夾,默認為C:\Program Files\Apache Group文件夾下的Apache2子文件夾。
安裝期間,Apache將會配置你所選擇的安裝目錄下的conf文件夾中的文件。 但是如果那個目錄下已有同名文件存在,原有文件將不會被覆蓋, 而相應的新文件將會被加上.default擴展名。 所以,舉例來說,如果conf\httpd.conf已經存在,那么不會對它做任何改變, 而新版本conf\httpd.conf的內容將會被寫入文件conf\httpd.conf.default 。 安裝完成以后你應該檢查.default文件中的內容看看有沒有不同, 如果必要,更新你原有的配置文件。
而且,如果你已經有一個名為htdocs\index.html的文件,它不會被覆蓋掉 (也不會安裝index.html.default文件)。 這意味著你在一個舊版本Apache上安裝新版本是安全的 (但是你必須在安裝之前首先停掉原有服務器然后在安裝完成后重新啟動它)。
安裝Apache以后,你應該編輯conf目錄下的配置文件。這些文件已在安裝期間被配置好以便Apache能夠從安裝目錄運行,文檔目錄被配置為安裝目錄下的子目錄htdocs 。在你開始真正使用之前還有很多選項需要設置。但是為了盡快開始,可以使用安裝時自動配置的配置文件。
◆配置 Apache for Windows
與Unix系統下的版本一樣,Apache使用conf目錄下的文件進行配置,但是Windows版本有幾個不同的指令,參見指令索引察看全部可用指令。
Apache for Windows主要的不同點是:
1.)因為Apache for Windows是多線程的,它并不像Unix版本那樣為每個請求使用一個單獨的進程。 而是通常運行兩個Apache進程:一個父進程,和一個處理請求的子進程。在子進程內部由多個單獨的線程來處理每個請求。
因此與進程管理相關的指令是不同的:
MaxRequestsPerChild就像Unix版本中的指令一樣,這條指令控制一個進程退出前將為多少個請求提供服務。 然而,與Unix不同的是,一個進程將為所有請求而不是只為一個請求服務,因此如果設置這條指令,建議將它設為一個很大的值。默認設置 MaxRequestsPerChild 0 使得進程從不退出。
警告: 啟動新的子進程時將會重新讀入服務器配置文件。如果你修改了httpd.conf ,新的子進程將有可能不能啟動或者可能得到預期之外的結果。
ThreadsPerChild是一條新的指令,用來告訴服務器應該使用多少個線程,指明了服務器可以立刻處理的最大連接數;如果你的站點有大量的點擊,請確認你設置了足夠大的值。推薦的默認設置是 ThreadsPerChild 50 。
2.)接收文件名作為參數的指令必須使用Windows文件名而不是Unix文件名。 但是,因為Apache內部使用Unix風格的名字,你必須使用正斜杠而不是反斜杠。可以使用盤符;如果省略盤符,將假定使用Apache可執行文件所在盤符。
3.)Apache for Windows具有運行時裝入模塊的能力,不需要重新編譯。如果Apach在正常情況下編譯,它會在\Apache2\modules目錄下安裝許多可選模塊。 要激活它們或其他模塊,必須使用新的LoadModule指令。 舉例來說,要激活狀態模塊,使用下列指令(除了access.conf中的狀態激活指令以外):
LoadModule status_module modules/mod_status.so
也可使用創建可加載模塊中的信息。
4.)Apache也可以加載ISAPI(Internet Server Applications Programming Interface)擴展,例如被Microsoft IIS服務器和其他一些Windows服務器所使用的。這里有更多相關信息。注意Apache不能加載ISAPI 過濾器。
5.)當運行CGI腳本時,Apache查找腳本解釋器是由ScriptInterpreterSource指令配置的。
6.)由于在Windows下管理具有像.htaccess這樣名字的文件是很困難的,你會發現在配置文件中使用AccessFilename指令改變它的文件名是很有用的。
7.)在Windows NT上,Apache啟動時發生的錯誤將會記入Windows事件日志(event log)。這個機制將在Apache尚不能使用error.log文件的時候運作。你可以通過"事件查看器"的MMC接口查看Windows事件日志。
注意,在Windows 9x上不存在事件日志機制,因此無法記錄啟動錯誤。
◆以服務方式運行Apache for Windows
Apache僅能夠在Windows NT上作為服務運行。
你可以選擇在安裝Apache時自動將其安裝為一個服務。如果你選擇"for all users",那么Apache將會被安裝為服務。如果你選擇了"only for the Current User",你可以在安裝后手動將Apache注冊為服務。注意,你必須是Administrators組的成員才能成功注冊服務。
使用Apache Service Monitor工具,可以查看和管理你所在網絡上的所有機器上安裝的Apache服務的狀態。為了能夠使用這個工具管理Apache服務,你必須首先自動或手動安裝Apache服務。
你可以在Apache安裝目錄的bin子目錄下,使用如下命令將Apache安裝為Windows NT服務:
apache -k install
如果你想指定服務的名稱,可以使用下面的命令。當你在同一機器上安裝多個Apache服務時,你必須為它們指定不同的名字。
apache -k install -n "服務名"
如果你想為不同名稱的服務使用不同的配置文件,則安裝時需要指定配置文件:
apache -k install -n "服務名" -f "c:\files\my.conf"
如果你使用的是第一個命令,也就是除 -k install 外沒有其它命令行參數,那么被安裝的服務名稱將是:Apache2 ,配置文件將使用conf\httpd.conf 。
要移除一個Apache服務很簡單:
apache -k uninstall
或者使用下述命令移除特定名稱的Apache服務:
apache -k uninstall -n "服務名"
通常,啟動、重啟、關閉Apache服務的方法是使用Apache Service Monitor工具,另外也可以使用控制臺命令:NET START Apache2 和 NET STOP Apache2 或者通過Windows服務控制面板。在啟動Apache服務之前,你應當使用下面的命令檢查一下配置文件的正確性:
apache -n "服務名" -t
你可以通過命令行開關來控制Apache服務。要啟動一個已經安裝的Apache服務,可以使用:
apache -k start
要停止一個已經安裝的Apache服務,可以使用:
apache -k stop
或
apache -k shutdown
要重啟一個運行中的Apache服務,強制它重新讀取配置文件,可以使用:
apache -k restart
默認情況下,Apache服務將被注冊為以本地系統用戶(LocalSystem帳號)身份運行。LocalSystem帳號沒有網絡權限,不能通過任何Windows安全機制訪問網絡,包括文件系統、命名管道、DCOM或secure RPC ,但是它對于本地資源卻擁有廣泛的特權。
永遠不要把網絡權限授予LocalSystem帳號!如果你需要Apache能夠訪問網絡資源,最好按照下述方法為Apache另外建立一個單獨的帳號。
你應該建立一個單獨的帳號來運行Apache服務。特別是在必須通過Apache訪問網絡資源的時候,我們更加強烈建議你這樣做。
1.)創建一個普通域用戶帳號,并牢記對應的密碼。
2.)授予這個新建的帳號作為服務登陸和作為操作系統一部分運行權限。在Windows 2000/XP/2003上你可以使用"組策略"或通過"本地安全策略"的MMC接口來完成這個操作。
3.)確認新建的帳號是Users組的一個成員。
4.)確認新建的帳號具有讀取和執行(RX)所有文檔和腳本目錄(例如:htdocs和cgi-bin)的權限。
5.)確認新建的帳號對Apache的logs目錄具有讀/寫/刪除(RWD)的權限。
6.)確認新建的帳號對Apache.exe二進制文件具有讀取和執行(RX)的權限。
注意:一個很好的實踐經驗是賦予運行Apache服務的用戶讀取和執行(RX)整個Apache2目錄的權限,并且對logs子目錄具有讀/寫/刪除(RWD)的權限。