建議你在閱讀本文之前,先閱讀IIS使用指南之一 :IIS 6 新特性一文,只有當(dāng)你了解IIS 6的新特性后,才能更好的使用它。如非特別說明,本文中所有涉及的IIS均指Windows Server 2003中提供的IIS 6。 安裝IIS 在安裝IIS之前,你需要考慮如何增強(qiáng)IIS服務(wù)器的安全性,首先的一點(diǎn)就是減少IIS服務(wù)器的攻擊面。在IIS服務(wù)器上你首先應(yīng)該安全配置Windows服務(wù)器;使用NTFS文件格式;盡可能少的安裝其他網(wǎng)絡(luò)服務(wù);停止不相關(guān)的服務(wù);并且只是安裝需要的IIS組件。 安裝IIS的過程很簡(jiǎn)單,點(diǎn)擊開始,指向控制面板,選擇添加或刪除程序,然后點(diǎn)擊添加/刪除Windows組件,在彈出的Windows組件向?qū)?/strong>對(duì)話框,勾選應(yīng)用程序服務(wù)器下的Internet信息服務(wù)(IIS)即可。需要注意的是,從安全性考慮,在Windows Server 2003中安裝IIS時(shí),默認(rèn)只會(huì)安裝IIS的部分組件而不是全部,安裝的組件如下表所示: 默認(rèn)安裝的IIS組件說明
默認(rèn)安裝的萬維網(wǎng)服務(wù)組件說明
如果你只是想提供Web服務(wù),那么IIS安裝的默認(rèn)組件已經(jīng)完全滿足你的需求。在此我僅安裝Web服務(wù)組件,所以勾選Internet信息服務(wù)(IIS)后依次點(diǎn)擊確定,然后在Windows組件向?qū)?/strong>對(duì)話框上點(diǎn)擊下一步,此時(shí)Windows服務(wù)器開始IIS組件的安裝,安裝過程中可能提示你插入安裝光盤,當(dāng)安裝完成后IIS就安裝好了。 配置IIS 通常情況下對(duì)于IIS本身我們需要做的配置不多,主要集中在以下幾個(gè)方面:
配置IIS的應(yīng)用程序隔離模式 我們?cè)?a href="http://www./info/info.php?sessid=&infoid=37" target=_blank>IIS使用指南之一 :IIS 6 新特性中介紹過,默認(rèn)情況下IIS 6工作在工作進(jìn)程隔離模式下,如果你的Web應(yīng)用程序不能兼容此模式,那么你需要將IIS 6配置為工作在IIS 5 隔離模式下,配置過程如下: 點(diǎn)擊開始,指向控制面板,然后選擇Internet信息服務(wù)(IIS)管理器,在彈出的Internet信息服務(wù)(IIS)管理器上右擊網(wǎng)站文件夾,選擇屬性,然后在彈出的網(wǎng)站屬性對(duì)話框上點(diǎn)擊服務(wù)標(biāo)簽,在隔離模式下勾選以IIS 5.0隔離模式運(yùn)行WWW服務(wù)即可,需要重啟整個(gè)IIS服務(wù)。
配置HTTP壓縮 如上圖中的配置,你可以看到IIS 6支持HTTP壓縮。HTTP壓縮是一種犧牲CPU性能來降低帶寬消耗的功能,如果IIS中啟用了HTTP壓縮并且客戶端瀏覽器支持HTTP壓縮,那么IIS在傳送文件之前,會(huì)對(duì)數(shù)據(jù)進(jìn)行壓縮后再進(jìn)行傳送。它的工作原理是這樣的: IIS接收到客戶端瀏覽器發(fā)送的請(qǐng)求時(shí),將檢查客戶端瀏覽器是否支持HTTP壓縮;然后IIS檢查客戶端瀏覽器請(qǐng)求的文件的擴(kuò)展名,以確定請(qǐng)求的文件為靜態(tài)文件或包含動(dòng)態(tài)內(nèi)容。
壓縮靜態(tài)文件所消耗的CPU性能較少,并且通常只需要壓縮一次,然后就保存在緩存的臨時(shí)目錄中;壓縮動(dòng)態(tài)內(nèi)容的代價(jià)要高一些,因?yàn)樗鼈儾⒉淮鎯?chǔ)在臨時(shí)目錄中,并且每次請(qǐng)求時(shí)都必須重新生成。推薦你只壓縮靜態(tài)文件,而不壓縮應(yīng)用程序文件。當(dāng)然,如果你認(rèn)為與CPU性能消耗相比你更在乎帶寬的利用率,那么也可以壓縮應(yīng)用程序文件;微軟建議在CPU利用率已經(jīng)達(dá)到80%以上時(shí),不對(duì)應(yīng)用程序文件進(jìn)行壓縮。 當(dāng)配置HTTP壓縮時(shí),根據(jù)你的需要選擇壓縮靜態(tài)文件和壓縮應(yīng)用程序文件,如果要壓縮應(yīng)用程序文件,則必需勾選壓縮靜態(tài)文件,然后輸入壓縮后的內(nèi)容的緩存臨時(shí)目錄,默認(rèn)為%windir%\IIS Temporary Compressed Files,然后輸入所存儲(chǔ)的壓縮內(nèi)容的最大容量即可,默認(rèn)為不受限制。
配置MIME類型 從安全性上考慮,IIS 6中只是定義了常見的MIME類型(文件擴(kuò)展名),而沒有和IIS 5一樣包含通配符MIME映射。這樣當(dāng)客戶端瀏覽器從IIS 6 Web服務(wù)器上請(qǐng)求某個(gè)文件時(shí),如果該文件的擴(kuò)展名并沒有在IIS的MIME類型中進(jìn)行定義,IIS 會(huì)返回404錯(cuò)誤-文件或目錄未找到。對(duì)于使用Access數(shù)據(jù)庫(kù)的站點(diǎn),為了防止別人下載Access數(shù)據(jù)庫(kù),有些文章中介紹了將Access數(shù)據(jù)庫(kù)改名為.asp來防止下載的方法,這并不安全,最好的辦法就是將Access數(shù)據(jù)庫(kù)的擴(kuò)展名修改為MIME類型中未定義的擴(kuò)展名,這樣別人就無法訪問此數(shù)據(jù)庫(kù)。 當(dāng)然,有時(shí)你需要添加MIME類型。你可以在IIS全局、網(wǎng)站、單個(gè)網(wǎng)站這三個(gè)級(jí)別上添加MIME類型,默認(rèn)的MIME類型定義在IIS全局屬性中,而網(wǎng)站屬性中定義的MIME類型可以覆蓋所有網(wǎng)站中的MIME類型定義,在單個(gè)網(wǎng)站上定義的MIME類型只會(huì)影響此站點(diǎn)。 在IIS全局上添加MIME類型的過程如下: 在IIS管理控制臺(tái)中右擊服務(wù)器名,然后選擇屬性;
在彈出的計(jì)算機(jī)屬性對(duì)話框上點(diǎn)擊MIME類型按鈕;
在MIME類型對(duì)話框中,你可以創(chuàng)建、修改、刪除MIME類型,在此我為ISO文件創(chuàng)建一個(gè)MIME類型,點(diǎn)擊新建按鈕;
在擴(kuò)展名欄中,鍵入對(duì)應(yīng)的文件擴(kuò)展名.iso,如果你不輸入“.”(例如只輸入ISO),那么IIS會(huì)自動(dòng)為你添加;如果你想添加通配符MIME映射,即允許訪問任何沒有MIME類型定義的文件,則在擴(kuò)展名欄輸入“*”,不過不推薦使用這種方式。然后在MIME類型欄,輸入application/octet-stream,最后點(diǎn)依次擊確定即可。
而在網(wǎng)站或單個(gè)網(wǎng)站上添加MIME類型定義則是右擊網(wǎng)站或單個(gè)網(wǎng)站,然后選擇屬性,點(diǎn)擊HTTP頭標(biāo)簽中的MIME類型按鈕即可進(jìn)行配置。
配置Web服務(wù)擴(kuò)展 Web服務(wù)擴(kuò)展是IIS中用于處理動(dòng)態(tài)內(nèi)容請(qǐng)求的擴(kuò)展組件,在IIS中支持以下兩種方式的Web服務(wù)擴(kuò)展:
它們之間的工作原理基本相同,主要是實(shí)現(xiàn)機(jī)制不同。ISAPI和CGI之間最大的區(qū)別在于ISAPI擴(kuò)展基本以動(dòng)態(tài)鏈接庫(kù)的形式存在,而CGI以可執(zhí)行程序形式存在;ISAPI方式運(yùn)行的Web服務(wù)擴(kuò)展可以在被用戶請(qǐng)求激活后長(zhǎng)駐內(nèi)存,從而減少加載DLL的時(shí)間,因此具有比CGI方式更高的效率。 從安全性上考慮,在安裝IIS時(shí),默認(rèn)情況下會(huì)安裝以下四個(gè)Web服務(wù)擴(kuò)展但是并不啟用,因此只能支持靜態(tài)內(nèi)容的訪問:
你可以根據(jù)你的需要添加或刪除自定義的Web服務(wù)擴(kuò)展,而對(duì)于IIS內(nèi)建的Web服務(wù)擴(kuò)展則只能禁用或啟用。 對(duì)于這些內(nèi)置的Web服務(wù)擴(kuò)展,IIS已經(jīng)為Web站點(diǎn)配置好了應(yīng)用程序映射,你只需要啟用這些Web服務(wù)擴(kuò)展,就可以在Web站點(diǎn)中啟用對(duì)相應(yīng)動(dòng)態(tài)內(nèi)容的訪問。 如果要啟用某個(gè)系統(tǒng)自帶的Web服務(wù)擴(kuò)展,則在IIS管理控制臺(tái)中點(diǎn)擊Web服務(wù)擴(kuò)展文件夾,然后在右側(cè)窗口中點(diǎn)擊對(duì)應(yīng)的Web服務(wù)擴(kuò)展,點(diǎn)擊允許即可,例如要啟用對(duì)ASP頁(yè)面的支持,則啟用Active Server Pages即可;
如果要添加自定義的Web服務(wù)擴(kuò)展,除了需要在Web服務(wù)擴(kuò)展文件夾中進(jìn)行添加外,還需要在Web站點(diǎn)中添加應(yīng)用程序映射,我將以后專文進(jìn)行描述。 配置應(yīng)用程序池 IIS 6的核心在于工作進(jìn)程隔離模式,而應(yīng)用程序池則是定義工作進(jìn)程如何進(jìn)行工作,因此,可以說應(yīng)用程序池是整個(gè)IIS 6的核心。 和IIS 5中只能使用單個(gè)應(yīng)用程序池不同,工作在工作進(jìn)程隔離模式的IIS 6可以創(chuàng)建多個(gè)應(yīng)用程序池,不同的應(yīng)用程序池之間是完全隔離的,某個(gè)應(yīng)用程序池停止服務(wù)時(shí)不會(huì)影響到其他應(yīng)用程序池。 在使用應(yīng)用程序池之前,你應(yīng)該確定你所需要的應(yīng)用程序池?cái)?shù)量??赡苡泻芏嗯笥褧?huì)認(rèn)為,既然不同的應(yīng)用程序池之間是完全隔離的,那么我只需要為每個(gè)Web站點(diǎn)創(chuàng)建一個(gè)應(yīng)用程序池就可以了。這個(gè)辦法在IIS服務(wù)器上具有較少的Web站點(diǎn)數(shù)量時(shí)可以使用,但是如果IIS服務(wù)器上具有很多Web站點(diǎn)數(shù)量,那么這個(gè)辦法就不適用了,因?yàn)椴煌膽?yīng)用程序池在被訪問時(shí)都會(huì)創(chuàng)建各自的工作進(jìn)程,當(dāng)大量的工作進(jìn)程并發(fā)工作時(shí)會(huì)消耗大量的系統(tǒng)資源和CPU利用率,反而會(huì)降低服務(wù)器性能。你應(yīng)該根據(jù)Web站點(diǎn)的重要性、隔離性、所運(yùn)行代碼的安全性和穩(wěn)定性等來對(duì)IIS服務(wù)器上所具有的Web站點(diǎn)進(jìn)行劃分,然后根據(jù)情況來決定所需要的應(yīng)用程序池?cái)?shù)量。對(duì)于那些非常重要的Web站點(diǎn)、需要單獨(dú)隔離的Web站點(diǎn)、所運(yùn)行代碼穩(wěn)定性和安全性并不可靠的Web站點(diǎn)配置為使用各自獨(dú)立的應(yīng)用程序池,而將其他普通的Web站點(diǎn)配置為使用一個(gè)公共的應(yīng)用程序池。 默認(rèn)情況下,在安裝IIS時(shí)會(huì)創(chuàng)建一個(gè)默認(rèn)網(wǎng)站并創(chuàng)建一個(gè)名為DefaultAppPool的應(yīng)用程序池為其使用;默認(rèn)配置下的應(yīng)用程序池已經(jīng)可以很好的進(jìn)行工作,建議你只有在特別需要時(shí)才對(duì)應(yīng)用程序池進(jìn)行配置。
配置應(yīng)用程序池屬性 在IIS管理控制臺(tái)中展開應(yīng)用程序池文件夾,然后右擊對(duì)應(yīng)的應(yīng)用程序池,點(diǎn)擊屬性,你可以在應(yīng)用程序池的屬性中進(jìn)行以下配置: 回收 在回收標(biāo)簽,你可以設(shè)置工作進(jìn)程的回收方式:
另外需要注意的是,應(yīng)用程序池具有以下兩種工作進(jìn)程回收方式,不過這兩種回收方式均不會(huì)造成Web服務(wù)的中斷:
如果Web應(yīng)用程序不支持多實(shí)例運(yùn)行,那么你必須配置應(yīng)用程序池禁止使用重疊回收方式。此配置無法在IIS管理控制臺(tái)中進(jìn)行修改,只能通過在metabase.xml中修改對(duì)應(yīng)應(yīng)用程序池的DisallowOverlappingRotation metabase屬性為true進(jìn)行。
性能 在性能標(biāo)簽?zāi)憧梢栽O(shè)置工作進(jìn)程的運(yùn)行方式:
運(yùn)行狀況 在運(yùn)行狀況標(biāo)簽?zāi)憧梢耘渲脩?yīng)用程序池監(jiān)視工作進(jìn)程的運(yùn)行狀況,
標(biāo)識(shí) 在標(biāo)識(shí)標(biāo)簽,你可以配置工作進(jìn)程所運(yùn)行的用戶賬戶。在IIS 5或者當(dāng)IIS 6運(yùn)行在IIS 5隔離模式時(shí),工作進(jìn)程運(yùn)行在本地系統(tǒng)賬戶,而運(yùn)行在工作進(jìn)程隔離模式下的IIS 6的工作進(jìn)程運(yùn)行在網(wǎng)絡(luò)服務(wù)賬戶下,這降低了系統(tǒng)被攻擊的可能性。 你可以配置工作進(jìn)程運(yùn)行在預(yù)定義的本地系統(tǒng)、本地服務(wù)或網(wǎng)絡(luò)服務(wù)賬戶下,也可以配置為使用某個(gè)自定義的用戶賬戶。建議使用默認(rèn)的網(wǎng)絡(luò)服務(wù)賬戶;不過如果為了更高的安全性,可以配置使用自定義的用戶賬戶,不過建議你只是將此自定義用戶加入到IIS_WPG用戶組中,因此IIS_WPG用戶組包含了可以啟動(dòng)和運(yùn)行工作進(jìn)程的最小權(quán)限。
創(chuàng)建應(yīng)用程序池 要新建應(yīng)用程序池,在IIS管理控制臺(tái)中右擊應(yīng)用程序池文件夾,指向新建,選擇應(yīng)用程序池;
然后在彈出的添加新應(yīng)用程序池對(duì)話框,在應(yīng)用程序池ID欄輸入應(yīng)用程序池名,然后選擇使用默認(rèn)設(shè)置還是繼承現(xiàn)有的應(yīng)用程序池設(shè)置,再點(diǎn)擊確定即可;
分配Web站點(diǎn)到應(yīng)用程序池中 在IIS管理控制臺(tái)中展開網(wǎng)站文件夾,右擊對(duì)應(yīng)的網(wǎng)站,然后選擇屬性,在彈出的網(wǎng)站屬性對(duì)話框上,點(diǎn)擊主目錄標(biāo)簽,然后在應(yīng)用程序池欄選擇不同的應(yīng)用程序池即可,默認(rèn)情況下所有網(wǎng)站所使用的應(yīng)用程序均名為默認(rèn)應(yīng)用程序,如果要想此網(wǎng)站使用不同的應(yīng)用程序名,則在應(yīng)用程序名欄修改即可,例如在此我就修改為winsvr,這主要是便于查看,然后點(diǎn)擊確定即可,
此時(shí),在對(duì)應(yīng)的應(yīng)用程序池下就顯示出了對(duì)應(yīng)網(wǎng)站的應(yīng)用程序,如下圖所示: |
|