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