錯誤代碼2186是一個很好的提示,說明你需要檢查"登陸為"選項,因為服務器不能訪問必要的網絡資源。
當啟動Apache服務時你可能會遇到一個來自Windows服務管理器的錯誤信息。 例如,如果你想使用控制面板中的服務小程序啟動Apache,可能會得到下面這條信息:
Could not start the Apache2 service on \\COMPUTER
Error 1067; The process terminated unexpectedly.
只要啟動Apache出錯你就會得到這個錯誤信息。為了弄清是什么引起了錯誤, 你應該遵循作為控制臺程序運行Apache中的建議。
對于讓Apache在Windows 9x下以類似Windows NT服務的方式運行有一些支持。都是高度試驗性的,即使能夠工作,Apache軟件基金會將不會證實其可靠性和未來的支持。繼續進行你自己的冒險吧!
這兩種"服務"有相當大的區別:
如果你輸入下列命令,Apache會嘗試啟動,如果成功他將在后臺運行:
Apache -n "服務名" -k start
例如,通過桌面的快捷方式運行,如果服務啟動成功一個控制臺窗口會快速閃過并立刻消失。如果啟動時Apache檢測到比如httpd.conf文件中有不正確的設置這樣的問題,則控制臺窗口會保持可見。這樣將顯示一個有助于追蹤錯誤原因的錯誤信息。
Windows 9x不支持NET START或者NET STOP命令,因此你在命令中必須使用Apache的服務控制選項。你可能希望為每個命令設置一個快捷方式以便你能夠只需要從開始菜單或者桌面一點就能執行所需的操作。
Apache和Windows 9x沒有提供讓Apache服務以特定的具有網絡權限的用戶身份運行的支持。實際上,Windows 9x在本地機器上根本沒有提供安全性。這就是Apache軟件基金會從不支持使用Windows 9x作為公用httpd服務器的原因。這個便利存在的唯一目的是協助用戶開發web內容和學習Apache服務器,或者也許在一個安全的、私有的網絡上充當intranet服務器。
◆作為控制臺程序運行Apache
雖然通常推薦將Apache作為服務來運行,但是在某些情況下從命令行運行反而更加容易。在Windows 9x上,從命令行運行Apache是推薦的方法,因為這些系統中缺乏可靠的服務支持。
可以使用下列命令將Apache作為控制臺程序從命令行運行:
apache
Apache將會一直保持運行,直到被Ctl+C組合鍵中斷。
你還可以在安裝后通過 開始按鈕 --> 程序 --> Apache HTTP Server 2.2.xx --> Control Apache Server 在控制臺中運行Apache 。這將會打開一個控制臺窗口并在其中啟動Apache 。如果你沒有將Apache安裝為服務,該窗口將一直保持打開,直到被Ctl+C組合鍵中斷,并在幾秒鐘后退出。如果你已經將Apache安裝為服務,那么那個快捷方式將會啟動服務,如果Apache服務已經啟動了,則什么也不做。
你可以在另外一個控制臺窗口中輸入以下命令停止正在運行的Apache服務:
apache -k shutdown
這種方法比使用Ctl+C組合鍵更好,因為它可以讓Apache完成所有當前的操作并且優雅的清理所占用的資源。
Apache可以被從新啟動,這將導致它重新讀取配置文件,重啟前所有正在進行的操作都將不被打斷的完成。可以使用下面的命令重啟Apache :
apache -k restart
請熟悉Unix版本Apache的用戶注意,這些命令對應于Unix命令 kill -TERM pid 和 kill -USR1 pid 。命令中之所以使用 -k 選項,就是為了提醒用戶這是源自Unix下的kill命令。
如果Apache控制臺窗口在啟動后出乎意料的立即關閉,請打開一個新的控制臺窗口,切換到Apache的安裝目錄下bin子目錄中,運行apache命令并讀取錯誤信息。然后再到日志目錄中查看error.log文件以尋找可能的配置錯誤。如果你的Apache采用的是默認安裝,這些命令應當是:
c:
cd "\Program Files\Apache Group\Apache2\bin"
apache
等候Apache停止,或者使用Ctl+C組合鍵,然后輸入下列內容:
cd ..\logs
more < error.log
可以在命令行中為Apache指定一個配置文件,有兩種方法可以在命令行中指定配置文件:
-f 可以指定一個絕對路徑或相對路徑的配置文件:
apache -f "c:\my server files\anotherconfig.conf"
或
apache -f files\anotherconfig.conf
-n 可以指定已安裝的Apache服務所使用的配置文件:
apache -n "服務名"
在這兩種情況下,必須在配置文件中設置正確的ServerRoot值。
如果你沒有使用 -f 或 -n 指定配置文件的路徑,Apache將會使用硬編碼在服務器內的路徑,比如:conf\httpd.conf 。這個內置的路徑是相對于安裝目錄的,要想檢查這個內置的路徑,你可以通過 -V 開關調用Apache ,查看名為SERVER_CONFIG_FILE的變量值:
apache -V
Apache將會按照下列順序檢查ServerRoot值:
1.)通過 -C 命令行開關指定的ServerRoot值。
2.)通過 -d 命令行開關指定的值。
3.)當前工作目錄。
4.)安裝二進制文件時在注冊表中登記的項目。
5.)編譯進二進制文件的值,該值默認為:/apache ,你可以使用 apache -V 命令查看顯示出來的HTTPD_ROOT變量的值。
在安裝過程中,將會在注冊表中新建一個版本特定的注冊表鍵。這個鍵的位置取決于安裝類型。如果你選擇的是"for all users",那么將位于HKEY_LOCAL_MACHINE分支下,如下所示:
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Group\Apache\2.0.43
如果你選擇的是"for the current user only",那么將位于HKEY_CURRENT_USER分支下,其中的內容取決于當前登陸的用戶,如下所示:
HKEY_CURRENT_USER\SOFTWARE\Apache Group\Apache\2.0.43
這個鍵已經被編譯進了服務器,使得你可以測試新版本而又不影響老版本。當然,你必須注意不要在同一個目錄中安裝兩個不同的版本。
如果你沒有使用二進制安裝,在某些情況下Apache將會抱怨注冊表鍵丟失。如果在這種情況下服務器仍然可以找到正確的配置文件,那么就可以安全的忽略它。
這個注冊表鍵其實就是包含conf子目錄的ServerRoot目錄。Apache將要從中讀取httpd.conf文件。如果該配置文件中又包含了一個ServerRoot指令,并且指向的目錄與注冊表中登記的不同,Apache將以配置文件中的指令為準。如果你復制了配置文件或者整個Apache目錄到一個新的位置,你要千萬記得修改httpd.conf中的ServerRoot指令,使其指向正確的位置。
◆安裝的測試
啟動Apache運行以后(不管是控制臺窗口還是作為服務), 它會在80端口上進行監聽(除非你改變了配置文件中的Listen指令。 要連接到服務器訪問默認頁面,啟動一個瀏覽器并輸入下列URL :
應該出現一個歡迎頁面,并且頁面上有到Apache用戶手冊的鏈接。 如果什么都沒有發生或是得到了一個錯誤,檢查logs子文件夾中的 error.log文件。如果你的主機沒有聯網或者DNS配置有嚴重問題,你也許需要輸入這樣的URL :
如果你將Apache配置為在非80端口監聽(比如:8080),你應當使用下面的URL明確指定端口:
一旦你的基本配置可以工作了,你應該編輯conf目錄下的文件來恰當地配置Apache 。 此外,如果你改變了作為NT服務運行的Apache的配置,你應該首先嘗試從命令行啟動來保證能夠正確地啟動Apache服務。
因為Apache不能與其他TCP/IP應用程序共享同一端口,你可能需要先停止或者卸載或者重新配置某些特定的服務。這包括(但不限于)別的web服務器和BlackIce那樣的防火墻。如果你只能在禁止其他服務的情況下啟動Apache ,那么需要重新配置Apache或者其他程序使它們不監聽同一個TCP/IP端口。