IIS 7.0 架構詳解

概覽:

  • IIS 7.0 體系結構變化

  • 管理 IIS 7.0

  • 向後兼容

  • IIS 7.0 故障排除


每個 IT 商店均不同,它們具有其自身獨特的一組需求和目標,特別是在網站或服務託管方面。Web 服務器可能需要各種修補或更改以滿足組織的需求,但伴隨而來的挑戰是要將此方案

複製到多臺服務器上,同時對所有服務器進行有效的管理。IIS 7.0 中一些最大的變化旨在幫助 IT 商店在構建 Web 服務器或 Web 場時應對這些挑戰。

看過 IIS 7.0 中所有強大功能的列表後,我迫切地想與您一同分享這些功能的詳細信息。當我意識到不可能在此介紹所有這些信息後,我決定重點介紹 IIS 7.0 一些最重要的功能和最大的變化。如果希望瞭解更多信息,請訪問 IIS 社區網站 IIS.net。


新體系結構

IIS 7.0 中的核心變化與體系結構、請求處理、PHP 應用程序框架支持和配置存儲相關。在 IIS 6.0 中,功能基本上是要麼全有要麼全無的概念。您必須安裝所有功能,並且只能使用 ISAPI 來自定義 IIS。

IIS 構建在這樣一個假定基礎之上:Web 管理員希望從最基本的一組功能開始,然後分層添加所在環境中需要的其他功能。只有您才最瞭解自己所在的環境,因此 IIS 7.0 爲您提供了構建塊,以創建您自己的自定義 Web 服務器。這樣做可以降低您的管理開銷,因爲它減少了服務器的***面,而且無需更新未使用的組件。這種新方法的核心是 IIS 7.0 的模塊化體系結構。

IIS 7.0 採用的新設計使您能夠選擇將要安裝到服務器上的功能,也稱爲模塊。這些模塊直接插入到集成請求管道中。這種新的模塊化設計具有許多優勢,包括減少***面和 Web 服務器的佔用量。

IIS 目前包含 40 個默認模塊(例如,基本模塊、匿名模塊),而且 Windows 身份驗證現在已成爲能夠獨立添加到請求管道中的單獨模塊。爲簡化分類,所有模塊分成了八個子類別(請參閱圖 1)。

圖 1 IIS 7.0 模塊分爲八個功能區域 (單擊該圖像獲得較大視圖)

這意味着您現在可以構建與您的環境完全相符的自定義 Web 服務器。但是,如果 40 個默認模塊無法提供您需要的功能,比如某些種類的自定義身份驗證或內容修飾符,應該怎麼辦呢?沒關係。您可以通過本機或託管代碼編寫滿足需要的模塊,並將其插入到管道中。這也使 Microsoft 能夠獨立編寫和發佈新模塊,因此您不必等待下一個服務包或主要產品發佈。IIS 7.0 還賦予您使用自定義模塊覆蓋 40 個默認模塊中任意模塊的能力。有關如何構建您自己的模塊的詳細信息,請訪問 IIS.net。


集成請求管道

將集成請求管道想象成一組基本的線性步驟,每次提供頁面時都必須出現這些步驟(如圖 2 所示)。通常,必須進行某種身份驗證,然後才能授權檢索內容、確定和執行該內容所需的處理程序、執行任何必要的日誌記錄、最後發送響應。集成請求管道使 IIS 7.0 可以靈活地同時運行不同的應用程序框架。例如,您可以在 PHP 內容之上運行窗體身份驗證以及自定義的日誌記錄模塊,所有這些均在同一個管道內實現。

圖 2 IIS 7.0 集成管道和模塊 (單擊該圖像獲得較大視圖)

服務器上的每個網站都有集成請求管道,並且可通過兩種模式(集成模式和經典模式)之一運行。默認的集成模式允許將特定功能項插入到管道中,使您可以精細地控制請求過程。出於兼容性考慮,經典模式通過將 ISAPI 模塊插入管道來重現 IIS 6.0/ISAPI 功能。在將應用程序遷移到 IIS 7.0 時,此模式非常有用。


默認安裝

現在,讓我們來討論設置您的新模塊化 Web 服務器。如果查看 IIS 7.0 的默認安裝,您會注意到它僅包含 10 個模塊(如果包含 Windows Process Activation Service)。安裝 Web 服務器角色時,IIS 7.0 安裝提供 IIS 的基本功能,特別是只有那些提供類似純 HTML 或經典 ASP 之類靜態內容所需的模塊。之後在服務器上安裝哪些模塊完全由您決定。以下是默認安裝中所包含的功能:

  • 常用 HTTP 功能,包括靜態內容、默認文檔、目錄瀏覽和 HTTP 錯誤

  • 運行狀況和診斷功能,例如 HTTP 日誌記錄和請求監視器

  • 安全功能,例如請求過濾

  • 性能功能,例如靜態內容壓縮

  • 管理工具,包括 IIS 管理控制檯

  • Windows Process Activation Service

如您所見,這只是最基本的服務器,不包括 ASP.NET 或其他 IIS 7.0 新功能,例如診斷和故障排除功能。在服務器上啓動其他功能—例如提供類似 ASP.NET 和 FastCGI (PHP) 之類動態內容的功能—非常簡單。從 Windows Server 2008 服務器管理器內的 Web 服務器角色的“添加角色服務”中,選擇一組要安裝的模塊。


新的配置存儲

IIS 7.0 中使您的生活變得更加輕鬆的另一項主要變化是新的配置存儲。元數據庫現在是爲向後兼容而提供的可選安裝組件,它已經由 XML 配置系統取代。我知道您會說“但元數據庫本來就是 XML 啊!”是的,確實如此。但它過於繁瑣,而且不易於閱讀(至少不易於人類閱讀)。它已由更爲靈活的 XML 系統所取代。與 ASP.NET 類似,IIS 7.0 使用 .config 文件—清晰、簡單、便攜且易讀的 .config 文件。

轉移到此格式意味着配置系統現在獨立於計算機,不再像元數據庫那樣依賴於單個計算機。因此,您現在可以輕鬆地將配置系統移動到其他服務器上,只需簡單地使用拖放或 xcopy 即可。

此新配置系統還利用 IIS 7.0 中稱爲“共享配置”的新功能解決了 Web 場的難題。由於此新配置系統便於攜帶,因此您可在場內的所有節點中共享一個主 .config 文件。“共享配置”允許您從已知工作情況良好的預生產服務器上導出配置,然後在生產或“實時”環境中共享該配置。

導出 .config 文件時,必須提供加密密鑰密碼。這樣做是爲了保護 .config 文件,防止惡意 Web 服務器在非經授權的情況下嘗試模仿您服務器的 .config。

啓用“共享配置”非常簡單。在 IIS 管理器的服務器節點中,選擇位於任務窗格“管理”部分下的“共享配置”。只需選中“啓用共享配置”,提供要共享(通常是 UNC 共享)的配置的物理路徑,然後輸入訪問該物理路徑所需的憑據並單擊“應用”即可。找到 .config 文件時,將提示您輸入加密密碼。完成該過程後,重新啓動 IIS 管理器以便其拾取新的 .config。

新配置系統的結構與過去所使用的結構不同,讓我們先了解一下基礎知識。如圖 3所示,IIS 7.0 的配置分爲兩個類別:服務器範圍設置和站點特定的設置。所有服務器範圍設置均存儲在 applicationhost.config 內,它位於 %systemroot%\windows\system32\inetsrv\config 中。其中包括所有已安裝的模塊、服務器上的站點等。站點特定的設置存儲在單獨的 web.config 文件中。

圖 3 服務器範圍設置使用一個 .config 文件,而此服務器上的每個網站都使用各自獨立的配置文件 (單擊該圖像獲得較大視圖)

如果您曾經使用過 ASP.NET,則可能熟悉 web.config 文件。IIS 7.0 使用 web.config 文件來存儲特定於各個網站的設置,例如站點的默認文檔和應用程序設置,以及 ASP.NET 設置。這意味着您需要爲服務器上的每個站點提供一個 web.config 文件。

站點的 web.config 文件位於該站點的物理路徑中,例如 %systemroot%\inetpub\wwwroot。此設計同樣具有前面所述的便攜優勢,但它在站點級別使用。例如,您可以在測試服務器上簡單地部署一個站點,然後通過拖放或 xcopy 將站點的 web.config 和應用程序文件移到生產服務器上。

無論何時導入或共享 .config 文件,均需注意特定於計算機的信息,如 IP 地址和驅動器盤符。IIS 7.0 通過支持 OS 環境變量(如 %systemroot%)解決了該潛在問題。此外,確保安裝在測試和生產服務器上的模塊組相同。這將有助於避免不可預料的應用程序錯誤。如果 web.config 引用了尚未安裝的模塊,或者默認模塊與自定義模塊衝突,也會發生錯誤。


管理您的 Web 服務器

現在,您已部署好了功能強大、自定義、靈活且便攜的新 Web 服務器。如何對其進行管理呢?管理是規劃和構建 IIS 7.0 的重要部分,有多種方法可以處理管理工作。

共有以下三種類別,管理首選項通常歸入到至少一種類別中:在 UI 中使用鼠標管理、在命令提示符處輸入命令,以及編寫腳本以儘可能地實現自動化。讓我們首先介紹 UI。

在 IIS 6.0 中,UI Microsoft 管理控制檯 (MMC) 管理單元有兩種熟悉的基本視圖:樹視圖和選項卡視圖。要詳細查看某項設置,需右鍵單擊並選擇“屬性”,然後您將看到一組選項卡(未涉及單選按鈕和複選框)。

令人高興的是,在 IIS 7.0 中,UI 已徹底改觀。此稱爲“IIS 管理器”的新 UI 旨在啓用面向任務的方法,如圖 4 所示。此外,還爲下級客戶端(如 Windows XP 和 Windows Server 2003)提供“遠程管理器”,該管理器可從 IIS.net/downloads 下載。

圖 4 IIS 7.0 中的新 UI (單擊該圖像獲得較大視圖)

新用戶界面由左側的“連接”窗格、右側的“操作”窗格,以及中間的任務窗格或工作區組成。左側的連接管理器樹與 IIS 6.0 樹視圖類似,其中包含許多父節點和子節點。樹視圖的新功能是可以創建新連接、保存當前連接或刪除現有連接。任務窗格是 UI 的最大改進,它提供了兩種工作視圖。功能視圖從原來的“選項卡”視圖中提取所有可配置的 IIS 屬性,並將它們按照管理區域(例如 IIS、管理和安全)分組。

ASP.NET 屬性也已集成到 IIS 管理器中,從而無需再使用額外的 MMC 管理單元。每個可配置屬性都具有它自己的圖標,因此便於查找。同時,因爲 IIS 管理器是作爲 Windows Forms 應用程序而構建的,所以您可以輕鬆地爲所編寫的任何自定義模塊或功能添加插件圖標。

任務窗格的第二種視圖是內容視圖,其與 IIS 6.0 非常相似,在此類視圖中,您可以看到站點內容目錄中的內容並可根據此內容執行操作。爲該視圖提供的新功能是選擇特定內容(例如特定網頁),然後切換到功能視圖以調用選定內容上的某些設置,該功能爲您提供了直至頁面級的精細控制。


其他管理方式

對於那些喜歡使用命令行的人而言,利用稱爲 APPCMD.exe 的功能強大的新工具,既能夠執行類似停止站點或備份當前 .config 文件之類的簡單任務,也能夠執行類似搜索配置架構之類的複雜任務。其語法十分簡單:

APPCMD (command) (object-type) <identifier> </parameter1:value1 ...>.


要列出可用於 APPCMD 的所有對象,請鍵入:

APPCMD /?


或者,如果您希望查看特定對象類型的可用命令,請輸入:

APPCMD (object-type) /?


對於所有編碼員而言,IIS 7.0 中已增加了稱爲 Microsoft.Web.Administration 的託管代碼 API,以及一個新的 Windows Management Instrumentation (WMI) 提供程序。這兩種方法爲腳本、自動化和編寫工具管理 IIS 7.0 提供了大量選項。它們均可與 Windows PowerShell 配合使用,並且 WMI 提供程序還可與 VBScript 和 JScript 配合使用。有關其他信息,請參閱blogs.msdn.com/carlosag/archive/2006/04/17/MicrosoftWebAdministration.aspx


遠程管理和委派管理

IIS 7.0 提供了多種新方法來遠程管理服務器、站點、Web 應用程序,以及非管理員的安全委派管理權限。首先,讓我們討論一下新的遠程管理功能,以及它們如何使您的生活變得更加輕鬆。

過去,遠程管理 IIS 服務器的方法有兩種:通過使用遠程管理網站或使用遠程桌面/終端服務來訪問 UI。但是,如果您在防火牆之外或不在現場,則這些選項作用有限。IIS 7.0 通過在 UI 中直接構建遠程管理功能(通過不受防火牆影響的 HTTPS 工作)來對此進行補救。

IIS 7.0 中的遠程管理可以在多個方面簡化工作。首先,您可以獲得與本地登錄相同的 UI 體驗。其次,由於使用 HTTPS 協議進行通信,因此無需在防火牆上開放端口。最後,您現在可以在單個 UI 中管理多臺服務器,而不必同時打開多個遠程桌面或遠程網站窗口。

IIS 7.0 中的實際遠程管理服務在本質上是一個小型 Web 應用程序,它作爲單獨的服務、在名爲 NT Service\WMSVC 的 Windows NT 本地服務賬戶下運行。此設計使得即使在 IIS 服務器自身無響應的情況下仍可維持遠程管理功能。

與 IIS 7.0 中的大多數功能類似,出於安全性考慮,遠程管理並不是默認安裝的。要安裝遠程管理功能,請將 Web 服務器角色的角色服務添加到 Windows Server 2008 的服務器管理器中,該管理器可在“管理”工具中找到。安裝此功能後,還必須啓用遠程連接並啓動 WMSVC 服務,因爲該服務在默認情況下處於停止狀態。

WMSVC 服務的默認啓動設置爲手動。如果希望該服務在重啓後自動啓動,則需要將設置更改爲自動。可通過在命令行中鍵入以下命令來完成此操作:

sc config WMSVC start=auto


當通過管理服務啓用遠程連接時,您將看到一個設置列表,其中包含如“身份憑據”、“連接”和“IPV4 地址限制”之類的設置。此時,唯一的關鍵決策是確定爲哪組身份憑據授予連接到 IIS 7.0 的權限:僅限 Windows 憑據,還是 Windows 和 IIS 管理器憑據。

第一個選項比較直觀,指出您希望僅允許 Windows 用戶帳戶,本地和域帳戶均可。第二個選項包括 Windows 用戶和 IIS 7.0 中全新提供的一種與 Windows 用戶帳戶不關聯的帳戶類型:IIS 管理器用戶。有了 IIS 管理器用戶,管理員可以創建僅在 IIS 7.0 的上下文中已知、但無法訪問 OS 的用戶帳戶。最後,在默認情況下,IIS 會在開始時提供一個自簽名證書,但建議您添加有效簽名的 SSL 證書。現在只需應用您的設置並啓動服務即可。

爲了獲取更多控制和安全性,IT 管理員可以安全地將各個站點或 Web 應用程序的管理任務委派給非管理員。

委派管理實質上是遠程管理,但它限制對各個站點或 Web 應用程序的訪問範圍。IIS 管理器用戶功能此時顯得尤爲方便。您可以爲那些一次性站點所有者創建 IIS 用戶,並委派他們管理自己的站點或應用程序的權限。他們無法訪問服務器範圍設置,僅限於訪問其特定站點或 Web 應用程序的設置。

您還可以指定用戶可以更改哪些功能和設置,甚至指定 UI 中應該出現哪些內容。例如,如果您不希望某人更改其站點所使用的身份驗證類型,則可將此功能設置爲只讀或非繼承。當某項功能爲只讀時,用戶仍然可以訪問該功能並確定設置,但無法進行更改;如果設置爲非繼承,則該功能的圖標將不會出現在委派用戶的 IIS 管理器視圖中。此類功能委派可以讓您提供對其他內容的嚴格受控訪問,而無需提供對 Web 服務器的管理控制。


IIS 7.0 的發展

設計 IIS 7.0 時,設計團隊希望通過允許使用管理工具中的某些現有投資和 IIS 6.0 的腳本來確保遷移到 IIS 7.0 的過程儘可能地平穩。他們爲 IIS 7.0 的向後兼容性付出了許多努力,從而使其能夠繼續運行 IIS 6.0 所使用的腳本。您可在安裝中的 IIS 6.0 管理兼容性節點下安裝一整套工具—範圍從 IIS 6.0 元數據庫兼容性到實際的 IIS 6.0 管理控制檯。

IIS 6.0 元數據庫兼容性基礎結構使用稱爲 ADOMapper 的組件。它允許您根據新配置系統運行 IIS 6.0 管理基礎對象 (ABO) 和 ADSI(Active Directory 服務接口)元數據庫腳本,但僅限於使用 IIS 6.0 中提供的功能。因此,它不能讀寫新的 IIS 7.0 屬性、訪問新的運行時數據,或者讀寫 ASP.NET 屬性或 web.config 文件。


故障排除和診斷

故障排除和診斷一直是最耗時的工作。深入分析日誌並嘗試重現大型 Web 場,甚至單個服務器中的問題都是非常棘手的工作。IIS 7.0 中包含一個稱爲“失敗請求跟蹤”的工具,可幫助您從枯燥而費時的工作中解脫出來。它在許多情況下非常有用,包括請求掛起或程序出錯,以及調查身份驗證和授權問題。

“失敗請求跟蹤”使用跟蹤規則作爲條件來搜索錯誤。可以創建跟蹤規則,以通過指定希望跟蹤的內容類型(例如,服務器上的所有內容、僅 ASP.NET 內容或諸如 PHP 等自定義內容),以及在何種條件下應開始跟蹤(例如,特定的返回狀態代碼、提供頁面所用的時間、事件嚴重性或組合條件)來搜索行爲或錯誤的類型。

例如,假設用戶報告某站點的加載時間過長。在任何情況下,此情形都難以重現,特別是當每小時有數千次點擊時更是如此。使用“失敗請求跟蹤”,您只需添加跟蹤規則,指定當頁面加載時間超過某個指定時間量(例如,對於本例爲兩秒)時開始記錄,之後便可以等待服務器自己去重現問題(請參閱圖 5)。

圖 5 使用“失敗請求跟蹤”進行故障排除 (單擊該圖像獲得較大視圖)

“失敗請求跟蹤”與傳統日誌記錄的不同之處在於:前者僅在檢測到特定的失敗請求條件時纔會進行記錄。日誌文件本身是具有 XML 樣式表的 XML,從而使其清晰、易讀。與大多數其他 IIS 7.0 功能類似,此功能在默認情況下不會安裝,但可在安裝的運行狀況和診斷部分下找到。您還必須在 IIS 管理器中啓用該功能。

對於所有管理員而言,IIS 7.0 是一大飛躍。它的新體系結構和功能爲適應不斷變化的環境提供了所需的敏捷性和靈活性。有了管理功能、向後兼容性工具和故障排除功能,您如今可以對其進行部署並在您的現有環境中使用它。


Isaac Roybal 是 Microsoft Windows Server 的產品經理。他負責 Windows Server 中與 Web 相關的所有事宜。Isaac 從 Windows NT 3.51 和 IIS 4.0 開始就從事 Windows Server 方面的工作。在此之前,他是 Office Internet 平臺和運營組的運營項目經理。他已獲得 Windows NT 4.0、Windows 2000 和 Windows Server 2003 的 MCSE 認證。 


http://technet.microsoft.com/zh-cn/magazine/2008.03.iis7.aspx


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章