選擇 Web 部署的正確方法
演講者:Jason Lee
當您使用網際網路資訊服務 (IIS) Web 部署工具 (Web Deploy) 2.0 或更高版本時,可以使用三種主要方法將已封裝的 Web 應用程式放入 Web 伺服器上。 您可以:
- 透過定位目標伺服器上的 Web 部署代理服務 (也稱為「遠端代理」),從遠端位置部署應用程式。
- 使用隨選 Web 部署 (也稱為「暫存代理程式」) 從遠端位置部署應用程式。
- 透過定位目標伺服器上的 IIS Web 部署處理常式,從遠端位置部署應用程式。
- 透過手動將 Web 套件複製到目標伺服器並透過 IIS 管理器匯入來部署應用程式。
如何設定目標 Web 伺服器將取決於您要使用的部署方法。 本主題將協助您確定哪種部署方法適合您。
表格顯示了每種部署方法的主要優點和缺點,以及最適合每種方法的情境。
方法 | 優點 | 缺點 | 典型情境 |
---|---|---|---|
遠端代理 | 設定起來很容易。 它適合對 Web 應用程式和內容進行定期更新。 | 使用者必須是目標伺服器上的管理員。 使用者無法提供替代憑證。 | 開發環境。 測試環境。 |
暫存代理 | 無需在目標電腦上安裝 Web Deploy。 將自動使用最新版本的 Web Deploy。 | 使用者必須是目標伺服器上的管理員。 使用者無法提供替代憑證。 | 開發環境。 測試環境。 |
Web 部署處理常式 | 非管理員使用者可以部署內容。 它適合對 Web 應用程式和內容進行定期更新。 | 設定起來要複雜得多。 | 預備環境。 內網生產環境。 託管環境。 |
離線部署 | 設定非常簡單。 它適用於孤立的環境。 | 伺服器管理員每次都必須手動複製並匯入Web包。 | 面向網際網路的生產環境。 隔離的網路環境。 |
使用遠端代理
當您在目標伺服器上使用預設設定安裝 Web Deploy 時,將自動安裝並啟動 Web 部署代理服務 (「遠端代理」)。 預設情況下,遠端代理會在以下位址公開 HTTP 端點:
http://[server]/MSDEPLOYAGENTSERVICE
注意
您可以將 [server] 替換為 Web 伺服器的電腦名稱、Web 伺服器的 IP 位址或解析為 Web 伺服器的主機名稱。
伺服器管理員可以透過指定此端點位址從遠端位置 (例如開發人員電腦或建置伺服器) 部署 Web 套件。 例如,假設 Fabrikam, Inc. 的 Matt Hink 在他的開發電腦上建置了 ContactManager.Mvc Web 應用程式專案。 建置程序會產生一個 Web 套件以及一個 .deploy.cmd 檔案,其中包含安裝該套件所需的 Web 部署命令。 如果 Matt 是 TESTWEB1 伺服器上的伺服器管理員,他可以透過在其開發人員電腦上執行下列命令將 Web 應用程式部署到測試 Web 伺服器:
ContactManager.Mvc.deploy.cmd /y /m:http://TESTWEB1/MSDEPLOYAGENTSERVICE a/:NTLM
事實上,如果您提供電腦名稱,Web Deploy 可執行檔可以推斷出遠端代理程式的端點位址,因此 Matt 只需鍵入以下內容:
ContactManager.Mvc.deploy.cmd /y /m:TESTWEB1 /a:NTLM
注意
有關 Web 部署命令列語法和 .deploy.cmd 檔案的詳細資訊,請參閱「作法:使用 deploy.cmd 文件安裝部署套件」。
遠端代理提供了一種從遠端位置部署內容的簡單方法,並且這種方法可以很好地與一鍵部署或自動部署配合使用。 但是,執行部署命令的使用者也必須是網域管理員或目標伺服器上本機管理員群組的成員。 此外,遠端代理程式不支援基本驗證,因此您無法在命令列上傳遞替代憑證。
遠端代理提供了一種在開發或測試情境中進行部署的有用方法,在這種情況下,開發人員對測試伺服器環境具有完全的管理員控制權並不罕見,並且應用程式通常會非常頻繁地重新建置和重新部署。 然而,這種方法對於預備或生產環境通常不太可接受。
有關使用遠端代理程式方法的情境的端對端範例,請參閱「情境:設定 Web 部署的測試環境」。
使用暫存代理
暫存代理部署方法與遠端代理方法類似。 但是,與遠端代理方法相比,您不需要在目標 Web 伺服器上安裝 Web Deploy。 相反,當您執行部署時,Web 部署將在目標伺服器上安裝 Web 部署代理服務的暫存版本,並使用它將您的內容部署到 IIS。 部署完成後,所有暫存檔案將被刪除。
如果要使用暫存代理提供者設定,請將 /g 標幟新增至部署命令:
ContactManager.Mvc.deploy.cmd /y /m:TESTWEB1 /g:true
注意
如果目標電腦上安裝了 Web 部署代理服務,則無法使用暫存代理,即使該服務未執行也是如此。
此方法的優點是您無需在目標伺服器上維護 Web Deploy 的安裝。 此外,您無需確保來源電腦和目標電腦執行相同版本的 Web Deploy。 但是,此方法與遠端代理方法具有相同的主要限制,即您必須是目標伺服器上的本機管理員才能部署內容,並且僅支援 NTLM 驗證。 暫存代理方法還需要對目標環境進行更多初始設定。
有關使用暫存代理程式的詳細資訊,請參閱「作法:使用 deploy.cmd 檔案安裝部署套件」和「隨選 Web 部署」。
使用 Web 部署處理常式
對於 IIS 7 以上版本,Web 部署透過 IIS Web 部署處理常式提供了替代部署方法。 Web 部署處理常式與 IIS Web 管理服務 (WMSvc) 緊密整合,旨在允許使用者從遠端位置管理 IIS 網站。
預設情況下,遠端代理會在以下位址公開 HTTP 端點:
https://[server]:8172/MSDeploy.axd
注意
您可以將 [server] 替換為 Web 伺服器的電腦名稱、Web 伺服器的 IP 位址或解析為 Web 伺服器的主機名稱。
與遠端代理程式和暫存代理程式相比,Web 部署處理常式的一大優點是您可以將 IIS 設定為允許非管理員使用者將應用程式和內容部署到特定的 IIS 網站。 Web 部署處理常式也支援基本驗證,因此您可以在 Web 部署命令中提供替代憑證作為參數。 主要缺點是 Web 部署處理常式最初的設定和設定要複雜得多。
對於非管理員使用者,Web 管理服務 (WMSvc) 將只允許使用者使用網站級連線而不是伺服器級連線來連線到 IIS。 若要存取特定站點,您可以在端點位址中包含特定於站點的查詢字串:
https://[server]:8172/MSDeploy.axd?site=DemoSite
建議 例如,假設建置程序設定為在每次成功建置後自動將 Web 應用程式部署到預備環境。 如果您使用遠端代理方法,則需要使建置程序的身分成為目標伺服器上的管理員。 相反,使用 Web 部署處理常式方法,您可以向非管理員使用者 (在本例中為 FABRIKAM\stagingdeployer) 僅授予特定 IIS 網站的權限,並且建置程序可以提供這些憑證來部署 Web 套件。 請注意,以下範例使用的是 %ContactManagerPublishPassword%
,它從環境變數中提取密碼值。 要成功執行指令碼,必須使用正確的值定義 %ContactManagerPublishPassword%
變數。
msdeploy.exe
-source:package='…\ContactManager.Mvc.zip'
-dest:auto,
computerName='https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite',
userName='FABRIKAM\stagingdeployer',
password=%ContactManagerPublishPassword%,
authtype='Basic',
-verb:sync
-setParamFile:"…\ContactManager.Mvc.SetParameters.xml"
-allowUntrusted
注意
有關 Web 部署命令列操作和語法的更多資訊,請參閱「Web 部署命令列參考」。 有關使用 .deploy.cmd 檔案的詳細資訊,請參閱「作法:使用 deploy.cmd 檔案安裝部署套件」。
Web 部署處理常式提供了在預備環境、託管環境和內部網路型生產環境中進行部署的有用方法,在這些環境中可以遠端存取伺服器,但不能使用管理員憑證。
有關使用 Web 部署處理常式方法的情境的端對端範例,請參閱「情境:設定 Web 部署的預備環境」。
使用離線部署
在某些情況下,從遠端位置將應用程式和內容部署到 IIS 網站是不可能或不切實際的。 例如,來源電腦和目標電腦可能位於隔離的網路或網段中,或者防火牆原則可能不允許遠端存取。
像這樣的情境,您仍然可以使用Web Deploy的封裝和發佈功能;您只是無法從遠端位置使用它們。 相反,目標伺服器上的管理員必須將 Web 套件複製到伺服器上並透過 IIS 管理員匯入。
離線部署方法通常適用於面向網際網路的生產環境,其中外圍網路中的伺服器與內部網路中的電腦的連接可能受到限制。
有關使用離線部署方法的情境的端對端範例,請參閱「情境:為 Web 部署設定生產環境」。
深入閱讀
有關 Web 部署命令列操作和語法的更多資訊,請參閱「Web 部署命令列參考」。 有關使用 .deploy.cmd 檔案的詳細資訊,請參閱「作法:使用 deploy.cmd 檔案安裝部署套件」。
有關從遠端電腦部署 Web 套件的不同方式的更多一般指南,請參閱「遠端使用 Web 部署」。 有關使用隨選 Web 部署的更多資訊,請參閱「隨選 Web 部署」。