這幾天在客戶方服務(wù)器上(服務(wù)器為win2003,iis為iis6)部署了系統(tǒng),之前一直是部署在win2008的iis7下面,還未出現(xiàn)過問題,當(dāng)然,首次在iis6下部署也花了點時間,最終能夠正常訪問,但是部署完成之后第二天,客戶就給我打電話說,系統(tǒng)無法訪問,我打開一看,錯為:“Service Unavailable”,服務(wù)不可用??第一時間想到iis服務(wù)有問題,進(jìn)去一看,果然,系統(tǒng)所在應(yīng)用程序池關(guān)閉了?本來是啟動的,怎么好好關(guān)閉了?后來問了下那邊網(wǎng)管,是因為重啟了服務(wù)器,再看了下其他的應(yīng)用程序池,都能夠啟動,郁悶了,先給啟動吧,然后按照其他程序池的設(shè)置重新配置了一番,再重新啟動,好了。
本以為這樣就Ok了,誰知今天又給我打電話說之前的問題又出現(xiàn)了,尼瑪坑爹啊,仔細(xì)看了下系統(tǒng)的日志的詳細(xì):“來源:W3SVC,類型:錯誤,事件ID:1002,描述:應(yīng)用程序池 *** 被自動禁用,原因是為此應(yīng)用程序池提供服務(wù)的進(jìn)程中出現(xiàn)一系列錯誤”,被自動禁用?這個程序又得罪誰了,最后找了下資料,原來是程序池的啟動賬號權(quán)限不夠,按照下面的順序給配置起來,刷新下iis就好了。

給用戶NETWORK SERVICE加上訪問IIS服務(wù)的權(quán)限
開始 – 控制面板 – 管理工具 – 組件服務(wù) – 計算機(jī) – 我的電腦 – DCOM – IIS ADMIN SERVICE – 屬性 – 安全 – 啟動和激活權(quán)限 – 自定義 – 添 加賬號“NETWORK SERVICE”,給該賬號賦予“本地啟動”和“本地激活”的權(quán)限
在cmd下輸入“IISRESET”命令(不含引號)重新啟動IIS
當(dāng)然,造成 “Service unavailable”的問題肯定不僅僅這個一個原因,找了下資料,分享給大家:
原因一:網(wǎng)站超過了IIS連接數(shù)
解決辦法一:增加IIS連接數(shù)
備注一:Windows 2003的操作系統(tǒng)在提示IIS過多時并非像win2000系統(tǒng)提示“鏈接人數(shù)過多”,而是提示"Service Unavailable"
原因二:網(wǎng)站超過了IIS資源限制
解決辦法二:增加網(wǎng)站的資源
備注二:Winodws2003中網(wǎng)站占用了超過IIS對該網(wǎng)站系統(tǒng)資源的限制后直接提示"Service Unavailable"
原因三:網(wǎng)站的程序發(fā)生太多的錯誤
解決辦法三:修改程序錯誤
備注三:Winodws2003中網(wǎng)站錯誤太多,就會造成該網(wǎng)站所在的應(yīng)用程序池出錯,這個時候可以在Windows2003的日志中看到“應(yīng)用程序池 'xxx' 被自動禁用,原因是為此應(yīng)用程序池提供服務(wù)的進(jìn)程中出現(xiàn)一系列錯誤”,這個時候網(wǎng)站就會直接顯示"Service Unavailable"
以上三個原因造成的"Service Unavailable",一般現(xiàn)象是出現(xiàn)"Service Unavailable"后,多刷新幾次,就可以打開。
原因四:ACCESS引擎錯誤
解決辦法四:重啟IIS
備注四:有一些文件造成了ACCESS數(shù)據(jù)庫出現(xiàn)“災(zāi)難性故障”及“未將對象引用設(shè)置到對象的實例”的錯誤
原因四造成的"Service Unavailable",現(xiàn)象是所有該服務(wù)器上的使用Access數(shù)據(jù)庫的網(wǎng)站都出現(xiàn)錯誤,不能訪問。
以上四個原因是常見的造成了"Service Unavailable"的原因,其他還有一些問題造成了該問題,基本只要IIS重啟一下就可以的。
原因五:ISAPI篩選器沒有正常加載
1、打開該網(wǎng)站,直接顯示Service Unavailable,那就去看IIS,發(fā)現(xiàn)該網(wǎng)站所在的應(yīng)用程序池被禁用;
2、手動啟動該應(yīng)用程序池,再打開該網(wǎng)站,繼續(xù)提示Service Unavailable;
3、把該網(wǎng)站換了一個應(yīng)用程序池,再打開該網(wǎng)站,還是提示Service Unavailable;
從上面三點來看,問題不在網(wǎng)站,也不在應(yīng)用程序池,而在IIS本身,進(jìn)入下一個階段的排查。
- 打開“事件查看器”,先查看系統(tǒng)日志,里面出現(xiàn)了很多來自W3SVC的日志,如下圖所示。

- 任意點開錯誤日志,顯示如下圖內(nèi)容

- 再到應(yīng)用程序日志里面查看,也是有很多的錯誤日志,顯示如下圖內(nèi)容

- 任意點開錯誤日志,顯示如下圖內(nèi)容

- 已經(jīng)明白了錯誤之所在,是因為PHP的ISAPI沒有加載成功造成的,再到IIS中確認(rèn)一下,果然PHP的篩選器狀態(tài)前是紅色的向下箭頭,沒有加載成功,如下所示

- 一般加載不成功都是因為NTFS權(quán)限造成的,就去看一下PHP目錄的NTFS權(quán)限,顯示只有管理員組和系統(tǒng)組可以訪問,如下圖所示

- 添加用戶組的權(quán)限到PHP目錄
- 設(shè)置完畢,單擊“開始”——“運行”,輸入iisreset重啟IIS
- IIS重啟完畢,再打開IIS管理器查看ISAPI篩選器狀態(tài),此時PHP已經(jīng)成功加載
- 最后,在瀏覽器中打開網(wǎng)站,發(fā)現(xiàn)已經(jīng)正常顯示出來了
原因六:NETWORK SERVICE用戶沒有權(quán)限啟動IIS Admin Service
因為是新裝的IIS服務(wù)器,一般來說問題不可能出在IIS本身,出現(xiàn)這樣的問題一般先從權(quán)限方面考慮,先考慮IIS服務(wù)的啟動帳戶沒有權(quán)限啟動IIS。
- 單擊“開始”——“設(shè)置”——“控制面板”——“管理工具”——“服務(wù)”,打開本地服務(wù)管理器,找到IIS Admin Service,雙擊打開IISADMIN屬性,選擇“登陸”選項卡,顯示登陸身份為本地系統(tǒng)帳戶,那IISADMIN服務(wù)就沒有權(quán)限問題。
- 單擊“開始”——“設(shè)置”——“控制面板”——“管理工具”——“服務(wù)”,打開本地服務(wù)管理器,找到World Wide Web Publishing Service,雙擊打開W3SVC服務(wù)屬性,選擇“登陸”選項卡,顯示登陸身份為本地系統(tǒng)帳戶,那W3SVC服務(wù)就沒有權(quán)限問題。(這里為了更加易操作,將打開“服務(wù)”的操作重新說了一遍)
從這里可以排除了服務(wù)啟動賬號沒有權(quán)限啟動的問題,下面還是回到終極解決方法中來。
- 現(xiàn)象:單擊“開始”——“設(shè)置”——“控制面板”——“管理工具”——“事件查看器”,打開事件查看器,單擊“系統(tǒng)”,看到很多警告和錯誤,主要是以下幾個:
1)來源是“W3SVC”、事件ID為“1002”的錯誤,描述是“應(yīng)用程序池 'DefaultAppPool' 被自動禁用,原因是為此應(yīng)用程序池提供服務(wù)的進(jìn)程中出現(xiàn)一系列錯誤。”
2)來源是“W3SVC”、事件ID為“1009”的警告,描述是“為應(yīng)用程序池 'DefaultAppPool' 提供服務(wù)的進(jìn)程意外終止。進(jìn)程 ID 是 '1756'。進(jìn)程退出代碼是 '0xffffffff'?!?br>
3)來源是“DCOM”、事件ID為“10016”的錯誤,描述是“應(yīng)用程序-特定 權(quán)限設(shè)置未將 COM 服務(wù)器應(yīng)用程序(CLSID 為{A9E69610-B80D-11D0-B9B9-00A0C922E750})的 本地 激活 權(quán)限授予用戶 NT AUTHORITY/NETWORK SERVICE SID (S-1-5-20)??梢允褂媒M件服務(wù)管理工具修改此安全權(quán)限?!?/li>
- 分析:通過這幾個事件可以判定應(yīng)該是第三個事件ID為“10016”的DCOM錯誤引起了事件ID為1009的應(yīng)用程序池意外退出,從而造成事件ID為1002的應(yīng)用程序池被自動禁用的W3SVC錯誤,下面就來解決。
- 問題確定:通過DCOM錯誤的提示,原因是NETWORK SERVICE用戶沒有權(quán)限啟動{A9E69610-B80D-11D0-B9B9-00A0C922E750},
找到了原因,下面就來解決這個問題
- 先查找這個CLSID{A9E69610-B80D-11D0-B9B9-00A0C922E750}對應(yīng)的服務(wù),單擊“開始”——“運行”,輸入“regedit”啟動注冊表編輯器,在注冊表編輯器的左側(cè)樹中選中“我的電腦”,再使用快捷鍵“Ctrl+F”打開查找對話框,在“查找目標(biāo)”后輸入剛才的CLSID:“{A9E69610-B80D-11D0-B9B9-00A0C922E750}”,“查看”的復(fù)選框中只保留“項”,回車執(zhí)行查找任務(wù)。
- 查找到該CLSID,在注冊表編輯器右側(cè)顯示了該CLSID的信息,從該信息得知,該CLSID對應(yīng)的服務(wù)是IIS Admin Service,現(xiàn)在就可以確定NETWORK SERVICE用戶沒有權(quán)限啟動IIS Admin Service。
- 打開“開始”-“控制面板”-“管理工具”-“組件服務(wù)”-“計算機(jī)”-“我的電腦”-“DCOM配置”選項,找到“IIS Admin Service”,右健選擇“屬性”,找到“安全”,在“啟動和激活權(quán)限”中編輯“自定義”,添加賬號“NETWORK SERVICE ”, 賦予“本地啟動”和“本地激活”的權(quán)限,重新啟動IIS。
- 重啟IIS,再次打開網(wǎng)頁,現(xiàn)在已經(jīng)正常顯示了。
第六種原因造成service unavailable圓滿解決。
|