共用方式為


將應用程式部署到 Web 伺服陣列/同步處理 Web 伺服陣列中的所有電腦

此範例示範如何撰寫命令列指令碼,以在 Web 伺服陣列案例中執行下列工作:

  1. 將開發人員提供之套件中的應用程式部署到 Web 伺服陣列中的多部電腦。

    在多部電腦中部署新的應用程式套件或將應用程式升級至較新版本,可能是一項冗長而乏味的工作。 可在遠端電腦上傳送套件與執行部署的指令碼將可簡化這項工作。

  2. 將 Web 伺服陣列中所有電腦上的內容與組態與單一模型電腦同步。

    對 Web 伺服陣列進行多個變更時,必須以相同方式將所有變更套用到所有電腦。 若以指令碼來進行變更,此工作將會非常簡單。 否則,您必須記錄所有變更,然後在 Web 伺服陣列的所有電腦上進行相同的變更。 另一個解決方案是將所有變更套用到單一電腦,然後將該電腦複寫到整個 Web 伺服陣列中的所有其他電腦。

此範例顯示如何使用 Web Deployment Tool (MSDeploy) 部署應用程式套件,或將單一伺服器的內容與組態複寫到 Web 伺服陣列中的所有電腦。 此範例可搭配任何 MSDeploy 應用程式套件使用。 我們建議通用 Windows Server AppFabric 範例應用程式,它是建立來搭配 Windows Server AppFabric 範例使用。 如果要尋找此應用程式套件,請瀏覽至 <範例>\ Samples\Management\MultiMachineSyncAndDeploy \Code\CalculatorService.zip 檔案,其中 <範例> 是您安裝 AppFabric 範例的路徑。 您可以修改指令碼以符合特定需求,例如重新命名部署的應用程式,或僅同步單一站台。

注意

提供的範例僅適用於教學用途。 請勿將範例用於生產環境,因為這些範例並未在生產環境中測試。 Microsoft 不對這些範例提供技術支援。

必要條件

此範例需要兩部或多部符合下列需求的電腦:

  1. 所有電腦都必須安裝並執行 Web Deployment Tool 的 Remote Agent Service (遠端代理程式服務),又稱為 Deployment Agent Service (部署代理程式服務)。 AppFabric 預設會安裝 Web Deployment Tool,但該工具的 Remote Agent Service (遠端代理程式服務) 並非預設安裝的一部分。 將 Remote Agent Service (遠端代理程式服務) 新增到您的安裝:

    1. 開啟 [控制台] 中的 [程式和功能],選取 [Web Deployment Tool],然後按一下 [變更]。

    2. 當系統提示時,請按一下 [下一步],然後按一下接下來顯示之畫面中的 [變更]。

    3. 顯示功能清單之後,確定 [Remote Agent Service] (遠端代理程式服務) 標示為 [Will be installed on the local hard drive] (將會被安裝到本機硬碟),然後完成安裝精靈。

    4. 當精靈完成時,請在命令視窗中輸入 net start msdepsvc 以啟動服務。 若要讓服務在 Windows 啟動時自動啟動,請在命令視窗中輸入 sc config msdepsvc start=auto

    如需安裝與設定 Web Deployment Tool 或在未安裝 AppFabric 的電腦上安裝 Web Deployment Tool 的詳細資訊,請參閱 http://learn.iis.net/page.aspx/421/installing-the-web-deployment-tool/ (可能為英文網頁)。

  2. 將在同步期間修改的所有電腦都必須允許 World Wide Web 服務 (HTTP) 通過防火牆。

  3. Web 伺服陣列的所有電腦都必須加入網域,而且用來同步陣列的帳戶必須在所有電腦上具有系統管理權限。

如果使用自訂提供者,有時判斷 Remote Agent Servie (遠端代理程式服務) 是否能識別它會很有幫助。 有兩個方法可以判斷哪一個提供者可用。

  1. 使用 IIS - 在 IIS Manager 中,在應用程式上按一下滑鼠右鍵,選取 [部署],然後選取 [匯出應用程式]。 在 [匯出應用程式] 對話方塊中,按一下 [管理元件]。 在 [提供者] 欄中,按一下上一個空白行,然後按一下向下箭頭。 這樣會顯示可用提供者清單,包括由 Remote Agent Servie (遠端代理程式服務) 識別的任何自訂提供者。

  2. 使用命令列 – 在 Web Deploy Tool (Web 部署工具) 命令列的命令提示中輸入 MSDEPLOY.EXE。 顯示的部分資訊將是可用的自訂提供者。 如需有關安裝 Web Deploy Tool (Web 部署工具) 的資訊,請參閱安裝 Web Deployment Tool

您可以修改範例指令碼,讓它可以在非網域環境執行。 如需 Web Deploy Tool 之驗證選項的詳細資訊,請參閱 https://technet.microsoft.com/en-us/library/dd569001(WS.10).aspx (可能為英文網頁) 中的 authType 選項。

範例位置與檔案

執行此範例所需的所有檔案位於 <範例>\Samples\Management\MultiMachineSyncAndDeploy\Code:

  • machines.txt

  • sync.cmd

  • syncOne.cmd

  • deployOne.cmd

設定並執行此範例

工作 1: 部署套件。

  1. 將 [<範例>\Samples\Management\SyncConfigFromModelMachine\Code] 中的所有檔案複製到系統管理電腦。

  2. 編輯 machines.txt 檔案,以包含要在單一批次中修改之所有陣列電腦的名稱。 每一行只能輸入一個電腦名稱。

  3. 執行 sync.cmd -fromPackage <package file path> 命令。

  4. 檢查記錄檔中是否有錯誤。 每部電腦都會有自己的記錄檔 (名為 sync-MACHINE.log,其中 MACHINE 部分會被電腦名稱取代)。

工作 2: 同步到模型電腦。

  1. 確認陣列中的所有電腦都符合上述需求之後,您可以開始在其中一部電腦上變更應用程式或網站組態。 我們將該電腦稱為「模型電腦」。

  2. 變更組態之後,請將 [<範例>\Samples\Management\SyncConfigFromModelMachine\Code] 中的所有檔案複製到模型電腦。

  3. 編輯 machines.txt 檔案,以包含要在單一批次中修改之所有陣列電腦的名稱。 每一行只能輸入一個電腦名稱。

  4. 執行 sync.cmd -fromLocalServer 命令,按 Y 確認。

  5. 檢查記錄檔中是否有錯誤。 每部電腦都會有自己的記錄檔 (名為 sync-MACHINE.log,其中 MACHINE 部分會被電腦名稱取代)。

了解此範例

sync.cmd 指令碼會先驗證使用者提供的命令列引數:

if "%1"=="" goto print_syntax
if "%1"=="-fromLocalServer" goto sync_server
if "%1"=="-fromPackage" goto sync_package
goto print_syntax

依據提供的引數而定,指令碼會針對 machines.txt 中指定的每部電腦呼叫 deployOne.cmd 或 syncOne.cmd 指令碼一次。 此動作是透過使用 for 命令與 start 命令來叫用後續的指令碼所完成,所以工作會在所有目標電腦上同時執行。

for /f %%i in ('type machines.txt') do (start deployOne.cmd %%i %2 %3 )

for /f %%i in ('type machines.txt') do ( start syncOne.cmd %%i %1) 

SyncOne.cmd/DeployOne.cmd 指令碼會使用 Web Deploy 命令列介面 (稱為 msdeploy.exe 的命令),將遠端 IIS Web 伺服器與本機電腦上的套件或整個 IIS Web 伺服器同步。

msdeploy.exe -verb:sync -source:package=%2 -dest:auto,computername=%1 %3

msdeploy.exe -verb:sync -source:webServer -dest:webServer,computername=%1 %2

第一個參數是從 sync.cmd 傳遞的電腦名稱,而 deployOne.cmd 指令碼需要封裝檔案路徑做為第二個參數。 最後一個參數 (選擇性) 是您想傳遞至 msdeploy 的任何參數。 若要在不修改指令碼的情況下將其他參數傳遞給 Web Deploy,此方式非常實用。 例如,您可能會想要傳遞 -whatif 參數:

sync.cmd -whatif

當 Web Deploy 搭配 -whatif 參數執行時,它只會檢查執行指定命令期間可能產生的錯誤,而不會實際執行該命令。 建議您在生產環境搭配 -whatif 執行 sync 命令,以檢視可能會發生的錯誤。 採取此預防措施可避免發生不一致的狀態。

移除此範例

若要移除此範例,請從系統管理/模型電腦刪除所有範例檔案。

其他資源

如需 Web Deployment Tool 的詳細資訊,請參閱 http://learn.iis.net/page.aspx/346/web-deployment-tool/ (可能為英文網頁)。

如需如何使用 Web Deploy 同步兩部執行 IIS 7.0 之伺服器的詳細資訊,請參閱 http://learn.iis.net/page.aspx/446/synchronize-iis-70/ (可能為英文網頁)。

如需安裝與設定 Web Deployment Tool 的詳細資訊,請參閱 http://learn.iis.net/page.aspx/421/installing-the-web-deployment-tool/ (可能為英文網頁)。

  2011-12-05