簡介
IIS是Internet Information Server的縮寫,它是微軟公司主推的WEB伺服器,現在用戶一般常用的版本是Windows2003裡麵包含的IIS 6或更早的IIS 5,IIS與Window NT Server完全整合在一起,因而用戶能夠利用Windows NT Server和NTFS(NT File System,NT的檔案系統)內建的安全特性,建立強大、靈活且安全的Internet和Intranet網站。 IIS支援ISAPI,使用ISAPI可以擴展伺服器功能, IIS的設計目的是建立一套整合的伺服器服務,以支援HTTP、FTP和SMTP,它能夠提供快速且整合了現有產品,同時可擴展的Internet伺服器。
新的IIS7在Windows Server2008中加入了更多的安全性方面的設計,使用者現在可以透過微軟的。 Net語言來執行伺服器端的應用程式。除此之外,透過IIS7新的特性來創建模組將會減少程式碼在系統中的運行次數,將遭受駭客腳本攻擊的可能性降至最低。從安全的觀點來考慮,這是IIS所涉及的一個新領域。 如此多的新特性,讓我們對Windows Server2008中的IIS7充滿了渴望,以下就讓我們一起看看IIS中五個最為核心的增強特性:
完全模組化的IIS
如果你非常熟悉流行的Apache Web server軟體,那麼你會知道它最大的優勢就在於它的客製化,你可以把它配置為只能顯示靜態的HTML,也可以動態的載入不同的模組以允許不同類型的服務內容。而現在使用的IIS卻無法很好的實現這一特性,這樣就造成了兩方面的問題:其一,由於過多用戶並未使用的特性對於代碼的影響,性能方面有時不能讓用戶滿意;第二,由於預設的介面過多所造成的安全隱患。
新的IIS7則完全解決了這個問題,IIS7從核心層講被分割成了40多個不同功能的模組。像是驗證、快取、靜態頁面處理和目錄清單等功能全部被模組化。這意味著你的網路伺服器可以按照你的運作需求來安裝對應的功能模組。可能存在安全隱患和不需要的模組將不會再載入到記憶體中去,程式的受攻擊面減小了,同時效能方面也得到了增強。
透過文字檔案配置的IIS7
IIS7另一個主要功能就是管理工具使用了新的分散式web.config配置系統。 IIS7不再擁有單一的metabase 配置儲存,而將使用和ASP.NET支援的相同的web.config檔案模型,這樣就允許使用者把配置和web應用的內容一起儲存和部署,無論有多少站點,使用者都可以透過web.config文件直接配置,這樣當公司需要掛接大量的網站時,可能只需要很短的時間,因為管理員只需要拷貝之前做好的任意一個站點的web.config文件,然後把設置和web應用程式一起傳送到遠端伺服器就完成了,沒必要再寫管理腳本來客製化配置了。
同時管理工具支援“委派管理(delegated administration)”,使用者可以將一些可以確定的web.config檔通過委派的方式,委派給企業中其他的員工,當然在這種情形下,管理工具裡顯示的只是客戶自己網站的設置,而不是整個機器的設置,這樣IIS管理員就不用為站點的每一個微小變化而費心,版本控制同樣簡單,用戶只需要在組織中保留不同版本的文本文件,然後在必要的時候恢復它們就可以了。
微軟的產品向來以用戶界面友好引以為豪,然而作為為IT人士設計的IIS7伺服器這一點卻好像並不明顯,回想從IIS 4 到IIS 6 ,提供給用戶的管理控制台操作起來並不十分方便,而且由於技術等原因的限制,使用者很難透過一個統一的介面來實現全部的管理工作。
MMC 圖形模式管理工具
[Cut-Page]而在新的IIS 7中,這個問題得到了明顯的改觀,使用者現在可以用管理工具在Windows客戶機器上建立和管理任意數目的網站。而不再侷限於單一網站,同時相較於IIS之前的版本,IIS7的管理介面也更加的友善和強大,此外IIS7的管理工具是用.NET和Windows Forms寫成的,是可以被擴充的。這意味著使用者可以新增自己的UI模組到管理工具裡,為自己的HTTP 執行時期模組和設定設定提供管理支援。
IIS 7安全方面的增強
安全問題永遠是微軟被攻擊的重中之重,其實並非微軟對安全漠不關心,實在是因為微軟這艘巨型戰艦過於龐大,難免百密一失,好在微軟積極的響應著每一個安全方面的意見與建議。 IIS的安全性問題則主要集中在有關.NET程式的有效管理以及權限管理方面的問題。而IIS 7正是針對IIS 伺服器遇到了安全性問題做了相對應的增強。
在新版本中IIS 和ASP.NET 管理設定整合到了單一管理工具。這樣,使用者就可以在一個地方查看和設定認證和授權規則,而不是像以前那樣要透過多個不同的對話方塊來做。這為管理人員提供了一個更一致和清晰的使用者介面,以及web平台上統一的管理體驗。
在IIS7中,.NET應用程式直接透過IIS程式碼運作而不再傳送到Internet Server API擴充上,這樣就減少了可能的風險,並且提升了效能,同時管理工具內建對ASP.NET 3.0的成員和角色管理系統提供管理介面的支援。這意味著用戶可以在管理工具裡,創建和管理角色和用戶,以及給用戶指定角色,下面是IIS 7 完整的組件分報圖。
IIS 7 完整的組件分報圖
IIS 7的Windows PowerShell 管理環境
相信專注於腳本程式設計或Exchange Server 2007的朋友都不會對Windows PowerShell感到陌生, Windows PowerShell是一個特為系統管理員設計的Windows 命令列shell 。在這個shell 中包含一個互動提示和一個可以獨立,或是共同使用的腳本環境。對於熱愛腳本管理的IT pro們Windows PowerShell必將讓他們愛不釋手。而對於IIS伺服器,Windows PowerShell同樣可以提供全面的管理功能。
[Cut-Page]不過雖然PowerShell也可以管理運行在Windows Server 2003上的IIS6,但是IIS7才是特為透過PowerShell的命令列來進行管理的。它包含了新的APPCMD功能,APPCMD透過標準的命令列介面來建立和設定站點,這樣的命令列工具的應用場景也非常常見,當使用者的環境中用到例如腳本管理的時候,APPCMD就會發揮非常其極大的優勢。
IS 7.0是包含在Windows Vista客戶機上的,該作業系統的家庭版本也附帶IIS 7.0(而不像IIS 5.1,只有在XP Professional上才有)。伺服器的IIS 7.0版本將在今年稍後隨Windows Server2008伺服器發布,將添加一堆額外的部署特性,包括更豐富的主機支持,安全的FTP支持,以及內建的web farm部署支援等。
Web farm支援將是特別地酷,它將允許你在一個包含了運行一個伺服器所需的所有編碼,配置,內容和密鑰的文件共享上部署你的web應用。然後你可以添加任意數目的無狀態,無配置的web伺服器到一個web farm上,只需將它們指向那個文件共享,來動態裝載它們的配置設置(包括綁定,虛擬目錄,應用池設置等等)和應用內容即可。這使得在多個機器上擴縮一個應用程式簡直是小菜一碟,可避免使用複製方法來做配置和應用部署(只要把文件拷貝到文件共享上,web farm裡的所有機器就會馬上裝載變動過的文件)。
推出Windows Server2008伺服器的Beta3版本支援go-live許可,所以你不久就能利用這個功能。我們已經在用IIS 7.0叢集運行Windows Server2008 了,所以你不會寂寞的!
Windows PowerShell 管理圖
IIS7.0 遷移
IIS7.0 遷移網站比IIS6.0更方便,因為Apache Web server它最大的優勢就在於它的客製化管理,IIS7.0現在使用Apache概念,所以把網站的設定檔拷貝到另一台IIS7.0主機上即可以,詳情請了解上面《透過文字檔案設定的IIS7》,《IIS 7的Windows PowerShell 管理環境》。
[Cut-Page]ASP.NET與IIS 7.0之集成
在早期的IIS版本中,開發人員需要編寫ISAPI擴充/過濾器來擴充伺服器的功能。除了寫起來非常痛苦外,ISAPI在如何接入伺服器以及允許開發人員自訂方面也是非常有限。例如,你無法在ISAPI擴充中實作URL重寫程式碼(註:ASP.NET是以ISAPI擴充的方式實現的)。假如你把運行時間長的程式碼寫成ISAPI過濾器的話,結果是你將佔用web伺服器的I/O執行緒(這就是我們不讓託管程式碼在請求的過濾器執行階段運行的原因)。
我們在IIS7中對核心IIS處理引擎所做的一個重大的架構級變動是透過一個新的模組化的請求管道架構來促成極其豐富的擴展性。你現在可以透過與web伺服器註冊一個HTTP擴充模組(HTTP Extensibility Module),在任意一個HTTP請求的生命週期的任何地方編寫程式碼。這些擴充模組可以使用native的C++程式碼或.NET託管程式碼來寫(你可以使用現有的ASP.NET System.Web.IHttpModule介面來實作)。
所有「內建」的IIS7功能(認證,授權,靜態文件供應,目錄清單支持,經典的ASP,記錄日誌等),現在都是使用這個公開的模組化的管道API來實現的。這意味著你可以除去這些IIS7「內建」功能的任何一個,而以你自己的實作來替換/擴展這些功能。
[Cut-Page]IIS 7.0上的ASP.NET本身也從以ISAPI的實現形式變成直接接入IIS7管道的模組:
IIS6.0 和IIS7.0 比較圖
這帶來諸多好處:
1) 你現在可以對伺服器的所有請求(例如, .htm,.php,.jsp檔案)使用ASP.NET表單認證,成員/角色,以及任何其他特性。
2) 你現在可以輕鬆地重寫任何web請求的URL或以種種有趣的方式對請求做改動。
3) 你可以使用VB或C#來取代或擴充任何現有的IIS特性(例如,你可以除去內建的目錄清單模組,接取你自己的模組)。
這確實為.NET開發人員帶來了無限的擴展性機會。
IIS 7.0 六大新特性:
1)模組化的網路核心允許使用者增加和刪除特定的功能。如果要使用服務統計構件,只需幾個模組(不包括ISAPI)。
2)一個統一標準的HTTP管道,它對應於本地管理方面的應用程式。使用者可以對經典的ASP網頁使用基於窗體的認證系統。
3)使用者可以建立自己的IHttpModule以及IHttpHandlers,並且把它們插入到統一的管道。
4)新款分散式的XML設定係統,它利用了ASP.NET的設定係統的優點。
5)改善的診斷和問題解答機制,包括了新Runtime狀態以及追蹤功能。
6)新型可擴展,面向任務的管理員使用者介面。
總而言之,IIS 7將為Web管理員以及Web愛好者提供更豐富,更容易使用的管理工具。在新的IIS7中,無論是管理方面還是安全方面都得到了全新的設計,而從用戶群的角度上講,利用IIS7, 個人用戶可以更快,更簡便的建立自己的站點,而企業用戶則可以更全面,更安全的維護和管理自己的WEB環境。隨著Windows Server2008的日益臨近,相信有關IIS7管理的相關介紹也會越來越多,究竟新版本有沒有帶給我們實質的變革,還是只是一個IIS伺服器功能的增強,讓我們拭目以待吧。
[Cut-Page]而在新的IIS 7中,這個問題得到了明顯的改觀,使用者現在可以用管理工具在Windows客戶機器上建立和管理任意數目的網站。而不再侷限於單一網站,同時相較於IIS之前的版本,IIS7的管理介面也更加的友善和強大,此外IIS7的管理工具是用.NET和Windows Forms寫成的,是可以被擴充的。這意味著使用者可以新增自己的UI模組到管理工具裡,為自己的HTTP 執行時期模組和設定設定提供管理支援。
IIS 7安全方面的增強
安全問題永遠是微軟被攻擊的重中之重,其實並非微軟對安全漠不關心,實在是因為微軟這艘巨型戰艦過於龐大,難免百密一失,好在微軟積極的響應著每一個安全方面的意見與建議。 IIS的安全性問題則主要集中在有關.NET程式的有效管理以及權限管理方面的問題。而IIS 7正是針對IIS 伺服器遇到了安全性問題做了相對應的增強。
在新版本中IIS 和ASP.NET 管理設定整合到了單一管理工具。這樣,使用者就可以在一個地方查看和設定認證和授權規則,而不是像以前那樣要透過多個不同的對話方塊來做。這為管理人員提供了一個更一致和清晰的使用者介面,以及web平台上統一的管理體驗。
在IIS7中,.NET應用程式直接透過IIS程式碼運作而不再傳送到Internet Server API擴充上,這樣就減少了可能的風險,並且提升了效能,同時管理工具內建對ASP.NET 3.0的成員和角色管理系統提供管理介面的支援。這意味著用戶可以在管理工具裡,創建和管理角色和用戶,以及給用戶指定角色,下面是IIS 7 完整的組件分報圖。
IIS 7 完整的組件分報圖
IIS 7的Windows PowerShell 管理環境
相信專注於腳本程式設計或Exchange Server 2007的朋友都不會對Windows PowerShell感到陌生, Windows PowerShell是一個特為系統管理員設計的Windows 命令列shell 。在這個shell 中包含一個互動提示和一個可以獨立,或是共同使用的腳本環境。對於熱愛腳本管理的IT pro們Windows PowerShell必將讓他們愛不釋手。而對於IIS伺服器,Windows PowerShell同樣可以提供全面的管理功能。