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

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

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

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

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

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

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

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