Nasazení webových balíčků
podle Jason Lee
Toto téma popisuje, jak můžete publikovat balíčky nasazení webu na vzdálený server pomocí nástroje pro nasazení webu Internetová informační služba (IIS) (Web Deploy) 2.0.
Webový balíček můžete nasadit na vzdálený server dvěma hlavními způsoby:
- Nástroj příkazového řádku MSDeploy.exe můžete použít přímo.
- Můžete spustit [název projektu].deploy.cmd soubor, který proces sestavení vygeneruje.
Konečný výsledek je stejný bez ohledu na to, který přístup použijete. V podstatě všechny .deploy.cmd soubor slouží ke spuštění MSDeploy.exe s některými předem určenými hodnotami, takže k nasazení balíčku nemusíte zadávat tolik informací. To zjednodušuje proces nasazení. Na druhou stranu použití MSDeploy.exe přímo poskytuje mnohem větší flexibilitu nad přesně tím, jak je balíček nasazen.
Který přístup použijete, bude záviset na různých faktorech, včetně toho, kolik kontroly nad procesem nasazení vyžadujete a jestli cílíte na službu Vzdáleného agenta nasazení webu nebo obslužnou rutinu nasazení webu. Toto téma vysvětluje, jak používat jednotlivé přístupy, a identifikuje, kdy je každý přístup vhodný.
Úlohy a názorné postupy v tomto tématu předpokládají, že:
- Vytvořili jste a zabalili webovou aplikaci, jak je popsáno v projektech vytváření a balení webových aplikací.
- Upravili jste soubor SetParameters.xml tak, aby poskytoval správné hodnoty parametrů pro cílové prostředí, jak je popsáno v části Konfigurace parametrů pro nasazení webového balíčku.
Spuštění souboru [název_projektu].deploy.cmd je nejjednodušší způsob, jak nasadit webový balíček. Konkrétně použití souboru .deploy.cmd nabízí tyto výhody oproti použití MSDeploy.exe přímo:
- Nemusíte zadávat umístění balíčku pro nasazení webu – soubor .deploy.cmd už ví, kde je.
- Nemusíte zadávat umístění souboru SetParameters.xml – soubor .deploy.cmd už ví, kde se nachází.
- Nemusíte zadávat zdrojové a cílové zprostředkovatele MSDeploy – soubor .deploy.cmd už ví, které hodnoty použít.
- Nemusíte zadávat nastavení operace MSDeploy – soubor .deploy.cmd automaticky přidá do příkazu MSDeploy.exe běžně požadované hodnoty.
Než k nasazení webového balíčku použijete soubor .deploy.cmd , měli byste se ujistit, že:
- Soubor .deploy.cmd [název projektu]. SetParameters.xml soubor a webový balíček ([název projektu].zip) jsou ve stejné složce.
- Nasazení webu (MSDeploy.exe) je nainstalováno v počítači, na kterém běží .deploy.cmd soubor.
Soubor .deploy.cmd podporuje různé možnosti příkazového řádku. Při spuštění souboru z příkazového řádku je to základní syntaxe:
[project name].deploy.cmd [/T | /Y]
[/M:<computer name>]
[/A:<Basic | NTLM>]
[/U:<user name>]
[/P:<password>]
[/L]
[/G:<true | false>]
[Additional MSDeploy.exe flags]
Je nutné zadat příznak /T nebo příznak /Y , abyste určili, jestli chcete provést zkušební spuštění nebo živé nasazení (nepoužívejte oba příznaky ve stejném příkazu). Tato tabulka vysvětluje účel každého z těchto příznaků.
Příznak | Popis |
---|---|
/T | Volá MSDeploy.exe příznakem –whatif , který označuje zkušební spuštění. Místo nasazení balíčku se vytvoří sestava o tom, co by se stalo, kdybyste balíček nasadili. |
/Y | Volá MSDeploy.exe bez příznaku –whatif . Tím se balíček nasadí do místního počítače nebo zadaného cílového serveru. |
/M | Určuje název cílového serveru nebo adresu URL služby. Další informace ohodnotách Pokud příznak /M vynecháte, balíček se nasadí do místního počítače. |
/A | Určuje typ ověřování, který má MSDeploy.exe použít k provedení nasazení. Možné hodnoty jsou Bearer, NTLM a Basic. Pokud příznak /A vynecháte, typ ověřování ve výchozím nastavení ntLM pro nasazení do služby Vzdáleného agenta nasazení webu a základní pro nasazení do obslužné rutiny nasazení webu. |
/U | Určuje uživatelské jméno. To platí jenom v případě, že používáte základní ověřování. |
/P | Určuje heslo. To platí jenom v případě, že používáte základní ověřování. |
/L | Označuje, že balíček by měl být nasazen do místní instance služby IIS Express. |
/G | Určuje, že se balíček nasadí pomocí nastavení zprostředkovatele tempAgent. Pokud příznak /G vynecháte, výchozí hodnota je false. |
Poznámka:
Pokaždé, když proces sestavení vytvoří webový balíček, vytvoří také soubor s názvem [název projektu].deploy-readme.txt , který vysvětluje tyto možnosti nasazení.
Kromě těchto příznaků můžete zadat nastavení operace nasazení webu jako další parametry .deploy.cmd . Všechna další nastavení, která zadáte, se jednoduše předávají podkladovému příkazu MSDeploy.exe. Další informace o těchto nastaveních najdete v tématu Nastavení operace nasazení webu.
Předpokládejme, že chcete nasadit projekt webové aplikace ContactManager.Mvc do testovacího prostředí spuštěním souboru .deploy.cmd . Testovací prostředí je nakonfigurované tak, aby používalo službu Vzdáleného agenta nasazení webu, jak je popsáno v tématu Konfigurace webového serveru pro publikování nasazení webu (vzdálený agent). Pokud chcete webovou aplikaci nasadit, musíte provést další kroky.
Nasazení webové aplikace pomocí souboru .deploy.cmd
Sestavte a zabalte projekt webové aplikace, jak je popsáno v tématu Vytváření a balení projektů webových aplikací.
Upravte soubor ContactManager.Mvc.SetParameters.xml tak, aby obsahoval správné hodnoty parametrů pro testovací prostředí, jak je popsáno v části Konfigurace parametrů pro nasazení webového balíčku.
Otevřete okno příkazového řádku a přejděte do umístění souboru ContactManager.Mvc.deploy.cmd .
Zadejte tento příkaz a stiskněte Enter:
ContactManager.Mvc.deploy.cmd /Y /M:TESTWEB1 /A:NTLM
V tomto příkladu:
- Příznak /Y označuje, že chcete balíček skutečně nasadit, a ne ke zkušebnímu spuštění.
- Příznak /M označuje, že chcete balíček nasadit na server s názvem TESTWEB1. Z této hodnoty se MSDeploy.exe pokusí nasadit balíček do služby Vzdáleného agenta nasazení webu na adrese
. http://TESTWEB1/MSDeployAgentService. - Příznak /A označuje, že chcete použít ověřování NTLM. Proto nemusíte zadávat uživatelské jméno a heslo.
Pokud chcete ukázat, jak použití souboru .deploy.cmd zjednodušuje proces nasazení, podívejte se na příkaz MSDeploy.exe, který se vygeneruje a spustí při spuštění ContactManager.Mvc.deploy.cmd pomocí výše uvedených možností.
msdeploy.exe
-source:package='C:\Users\matt.FABRIKAM\Desktop\ContactManager-03\ContactManager\
Publish\Out\_PublishedWebsites\ContactManager.Mvc_Package\ContactManager.Mvc.zip' -dest:auto,computerName='TESTWEB1.fabrikam.net', authtype='NTLM',
includeAcls='False'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-setParamFile:"C:\Users\matt.FABRIKAM\Desktop\ContactManager-03\ContactManager\
Publish\Out\_PublishedWebsites\ContactManager.Mvc_Package\
ContactManager.Mvc.SetParameters.xml"
Další informace o použití souboru .deploy.cmd k nasazení webového balíčku naleznete v tématu Postupy: Instalace balíčku pro nasazení pomocí souboru deploy.cmd.
Použití MSDeploy.exe
I když použití souboru .deploy.cmd obecně zjednodušuje proces nasazení, existují situace, kdy je vhodnější použít MSDeploy.exe přímo. Příklad:
- Pokud chcete nasadit obslužnou rutinu nasazení webu jako uživatele bez oprávnění správce, nemůžete použít soubor .deploy.cmd . Důvodem je chyba nasazení webu 2.0, jak je popsáno v části Důležité informace o koncových bodech.
- Pokud chcete ručně přepínat mezi různými SetParameters.xml soubory v různých umístěních, můžete raději použít MSDeploy.exe přímo.
- Pokud chcete přepsat několik MSDeploy.exe argumentů příkazového řádku, můžete raději použít MSDeploy.exe přímo.
Když používáte MSDeploy.exe, musíte zadat tři klíčové informace:
- Parametr –source , který označuje, odkud data pocházejí.
- Parametr –dest , který označuje, kam se vaše data budou chystají.
- Parametr –sloveso , který označuje operaci , kterou chcete provést.
MSDeploy.exe spoléhá na poskytovatele nasazení webu ke zpracování zdrojových a cílových dat. Nasazení webu zahrnuje mnoho poskytovatelů, kteří představují celou řadu aplikací a zdrojů dat, se kterými může pracovat – existují například poskytovatelé pro databáze SQL Serveru, webové servery IIS, certifikáty, sestavení GAC (Global Assembly Cache), různé různé konfigurační soubory a spoustu dalších typů dat. Parametr -source i parametr -dest musí určovat zprostředkovatele ve formuláři -source:[providerName]=[location]. Při nasazování webového balíčku na web služby IIS byste měli použít tyto hodnoty:
Poskytovatel –source je vždy balíček. Příklad:
-source:package='[path to web package]'
Poskytovatel –dest je vždy automatický. Například:
-dest:auto='[server name or service URL]'
Příkaz –se vždy synchronizuje.
-verb:sync
Kromě toho budete muset zadat různá další nastavení specifická pro zprostředkovatele a obecná nastavení operací. Předpokládejme například, že chcete nasadit webovou aplikaci ContactManager.Mvc do přípravného prostředí. Nasazení bude cílit na obslužnou rutinu nasazení webu a musí používat základní ověřování. Pokud chcete webovou aplikaci nasadit, musíte provést další kroky.
Nasazení webové aplikace pomocí MSDeploy.exe pomocí přístupového tokenu
MSDeploy V3 podporuje ověřování pomocí přístupového tokenu, označovaného také jako nosný token. Přístupové tokeny se doporučují, protože jsou nejbezpečnější.
Sestavte a zabalte projekt webové aplikace, jak je popsáno v tématu Vytváření a balení projektů webových aplikací.
Upravte soubor ContactManager.Mvc.SetParameters.xml tak, aby obsahoval správné hodnoty parametrů pro pracovní prostředí, jak je popsáno v části Konfigurace parametrů pro nasazení webového balíčku.
Otevřete okno příkazového řádku a přejděte do umístění MSDeploy.exe. Obvykle se jedná o
%PROGRAMFILES%\IIS\Microsoft Web Deploy {version}\msdeploy.exe
.Pokud přístupový token nemáte, vytvořte ho pomocí příkazu:
az account get-access-token --query accessToken
Zadejte tento příkaz a stiskněte Enter (ignorujte konce řádků):
MSDeploy.exe -source:package="[path]\ContactManager.Mvc.zip" -dest:auto, computerName="https://stageweb1:8172/MSDeploy.axd?site=DemoSite", username="FABRIKAM\stagingdeployer", $CREDENTIAL_PLACEHOLDER$, authtype="Bearer", includeAcls="False", Password="{token}" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"[path]\ContactManager.Mvc.SetParameters.xml" -allowUntrusted
V tomto příkladu:
- Parametr -source určuje zprostředkovatele balíčku a označuje umístění webového balíčku.
- Parametr -dest určuje automatického zprostředkovatele. Nastavení název_počítače poskytuje adresu URL služby obslužné rutiny nasazení webu na cílovém serveru. Nastavení typu ověřování označuje, že chcete pro ověřování použít přístupový token, a proto musíte jako heslo zadat hodnotu tokenu.
Bearer
Nastavení includeAcls="False" značí, že nechcete kopírovat seznamy řízení přístupu (ACL) souborů ve zdrojové webové aplikaci na cílový server. - Argument -verb:sync označuje, že chcete replikovat zdrojový obsah na cílovém serveru.
- Argumenty –disableLink označují, že nechcete replikovat fondy aplikací, konfiguraci virtuálního adresáře ani certifikáty SSL (Secure Sockets Layer) na cílovém serveru. Další informace naleznete v tématu Rozšíření odkazů nasazení webu.
- Parametr -setParamFile poskytuje umístění souboru SetParameters.xml .
- Přepínač –allowUntrusted označuje, že nasazení webu by mělo přijímat certifikáty SSL, které nebyly vydány důvěryhodnou certifikační autoritou. Pokud nasazujete do obslužné rutiny nasazení webu a k zabezpečení adresy URL služby jste použili certifikát podepsaný svým držitelem, musíte tento přepínač zahrnout.
Nasazení webové aplikace pomocí MSDeploy.exe a základního ověřování
Upozorňující
Základní ověřování se nedoporučuje, pokud jsou k dispozici bezpečnější metody (nosný token).
Sestavte a zabalte projekt webové aplikace, jak je popsáno v tématu Vytváření a balení projektů webových aplikací.
Upravte soubor ContactManager.Mvc.SetParameters.xml tak, aby obsahoval správné hodnoty parametrů pro pracovní prostředí, jak je popsáno v části Konfigurace parametrů pro nasazení webového balíčku.
Otevřete okno příkazového řádku a přejděte do umístění MSDeploy.exe. Obvykle se jedná o
%PROGRAMFILES%\IIS\Microsoft Web Deploy {version}\msdeploy.exe
.Zadejte tento příkaz a stiskněte Enter (ignorujte konce řádků):
MSDeploy.exe -source:package="[path]\ContactManager.Mvc.zip" -dest:auto, computerName="https://stageweb1:8172/MSDeploy.axd?site=DemoSite", username="FABRIKAM\stagingdeployer", $CREDENTIAL_PLACEHOLDER$, authtype="Basic", includeAcls="False" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"[path]\ContactManager.Mvc.SetParameters.xml" -allowUntrusted
V tomto příkladu:
- Parametr -source určuje zprostředkovatele balíčku a označuje umístění webového balíčku.
- Parametr -dest určuje automatického zprostředkovatele. Nastavení název_počítače poskytuje adresu URL služby obslužné rutiny nasazení webu na cílovém serveru. Nastavení typu ověřování označuje, že chcete použít základní ověřování, a proto potřebujete zadat uživatelské jméno a heslo. Nakonec nastavení includeAcls="False" značí, že nechcete kopírovat seznamy řízení přístupu (ACL) souborů ve zdrojové webové aplikaci na cílový server.
- Argument -verb:sync označuje, že chcete replikovat zdrojový obsah na cílovém serveru.
- Argumenty –disableLink označují, že nechcete replikovat fondy aplikací, konfiguraci virtuálního adresáře ani certifikáty SSL (Secure Sockets Layer) na cílovém serveru. Další informace naleznete v tématu Rozšíření odkazů nasazení webu.
- Parametr -setParamFile poskytuje umístění souboru SetParameters.xml .
- Přepínač –allowUntrusted označuje, že nasazení webu by mělo přijímat certifikáty SSL, které nebyly vydány důvěryhodnou certifikační autoritou. Pokud nasazujete do obslužné rutiny nasazení webu a k zabezpečení adresy URL služby jste použili certifikát podepsaný svým držitelem, musíte tento přepínač zahrnout.
Automatizace nasazení webového balíčku
V mnoha podnikových scénářích budete chtít nasadit webové balíčky jako součást rozsáhlejšího jednostupňového nebo automatizovaného nasazení. Bez ohledu na to, jestli se rozhodnete nasadit webové balíčky spuštěním souboru .deploy.cmd nebo přímo pomocí MSDeploy.exe, můžete příkazy parametrizovat a volat je z cíle v souboru projektu Microsoft Build Engine (MSBuild).
V ukázkovém řešení Contact Manageru se podívejte na cíl PublishWebPackages v souboru Publish.proj . Tento cíl se spustí jednou pro každý .deploy.cmd soubor identifikovaný seznamem položek s názvem PublishPackages. Cíl používá vlastnosti a metadata položek k vytvoření úplné sady hodnot argumentů pro každý .deploy.cmd soubor a pak pomocí úlohy Exec příkaz spustit.
<Target Name="PublishWebPackages" Outputs="%(PublishPackages.Identity)">
...
<PropertyGroup>
<_WhatIfSwitch>/Y</_WhatIfSwitch>
<_WhatIfSwitch Condition=" '$(_WhatIf)'=='true' ">/T</_WhatIfSwitch>
<_Cmd>
%(PublishPackages.FullPath) $(_WhatifSwitch) /M:$(MSDeployComputerName)
/U:$(MSDeployUsername) /P:$(Password) /A:$(MSDeployAuth)
%(PublishPackages.AdditionalMSDeployParameters)
</_Cmd>
</PropertyGroup>
<Exec Command="$(_Cmd)"/>
</Target>
Poznámka:
Širší přehled modelu souborů projektu v ukázkovém řešení a obecně úvod k vlastním souborům projektu najdete v tématu Principy souboru projektu a principy procesu sestavení.
Důležité informace o koncových bodech
Bez ohledu na to, jestli nasadíte webový balíček spuštěním souboru .deploy.cmd nebo přímo pomocí MSDeploy.exe, musíte zadat název počítače nebo koncový bod služby pro vaše nasazení.
Pokud je cílový webový server nakonfigurovaný pro nasazení pomocí služby Vzdáleného agenta nasazení webu, zadáte jako cíl adresu URL cílové služby.
http://[server name]/MSDeployAgentService
Alternativně můžete jako cíl zadat název serveru a nasazení webu odvodí adresu URL služby vzdáleného agenta.
[server name]
Pokud je cílový webový server nakonfigurovaný pro nasazení pomocí obslužné rutiny nasazení webu, musíte jako cíl zadat adresu koncového bodu Služba webové správy služby IIS(WMSvc). Ve výchozím nastavení má tento tvar:
https://[server name]:8172/MSDeploy.axd
Na některý z těchto koncových bodů můžete cílit buď pomocí .deploy.cmd souboru, nebo MSDeploy.exe přímo. Pokud ale chcete nasadit obslužnou rutinu nasazení webu jako uživatele bez oprávnění správce, jak je popsáno v tématu Konfigurace webového serveru pro publikování nasazení webu (obslužná rutina nasazení webu), musíte přidat řetězec dotazu na adresu koncového bodu služby.
https://[server name]:8172/MSDeploy.axd?site=[IIS website name]
Je to proto, že uživatel bez oprávnění správce nemá přístup na úrovni serveru ke službě IIS; má přístup pouze ke konkrétnímu webu SLUŽBY IIS. V době psaní kódu nemůžete kvůli chybě v kanálu publikování webu (WPP) spustit soubor .deploy.cmd pomocí adresy koncového bodu, která obsahuje řetězec dotazu. V tomto scénáři potřebujete nasadit webový balíček pomocí MSDeploy.exe přímo.
Poznámka:
Další informace o službě Vzdáleného agenta nasazení webu a obslužné rutině nasazení webu naleznete v tématu Volba správného přístupu k nasazení webu. Pokyny ke konfiguraci souborů projektu specifických pro prostředí pro nasazení do těchto koncových bodů najdete v tématu Konfigurace vlastností nasazení pro cílové prostředí.
Důležité informace o ověřování
Bez ohledu na to, jestli nasadíte webový balíček spuštěním souboru .deploy.cmd nebo přímo pomocí MSDeploy.exe, musíte zadat typ ověřování. Nasazení webu přijímá možné hodnoty: Bearer, NTLM nebo Basic. Pokud zadáte Bearer, musíte token zadat jako heslo a libovolnou hodnotu uživatelského jména. Pokud zadáte základní ověřování, musíte také zadat uživatelské jméno a heslo. Při výběru typu ověřování je potřeba mít na paměti různé faktory:
- Pokud nasazujete do služby Vzdáleného agenta nasazení webu, musíte použít ověřování NTLM. Služba vzdáleného agenta nepřijímá základní přihlašovací údaje pro ověřování.
- Pokud nasazujete do obslužné rutiny nasazení webu, můžete použít přístupový token (nosný token), PROTOKOL NTLM nebo základní ověřování. Výchozí nastavení je základní ověřování. Základní ověřování spoléhá na přenášená uživatelská jména a hesla ve formátu prostého textu. Vaše přihlašovací údaje jsou chráněny, protože obslužná rutina nasazení webu vždy používá šifrování SSL. Nejbezpečnější metodou je použití přístupového tokenu, který zabraňuje odeslání skutečného hesla.
- Pokud váš webový balíček obsahuje databázi a webový server a databázový server jsou samostatné počítače, nebudete moct databázi nasadit pomocí ověřování NTLM kvůli omezení typu double-hop ntLM. V nasazení musíte použít přihlašovací údaje SQL Serveru připojovací řetězec nebo zadat základní ověřovací údaje pro nasazení webu. Tento problém je podrobněji popsán v tématu Nasazení databází členství do podnikových prostředí.
Závěr
Toto téma popisuje, jak můžete nasadit webový balíček spuštěním souboru .deploy.cmd nebo pomocí MSDeploy.exe přímo. Vysvětluje, kdy může být každý přístup vhodný a popisuje, jak můžete parametrizovat a spustit příkaz nasazení jako součást většího procesu jednoho kroku nebo automatizovaného sestavení.
Další čtení
Pokyny k vytvoření a parametrizaci balíčku nasazení webu najdete v tématu Vytváření a balení projektů webových aplikací a konfigurace parametrů pro nasazení webového balíčku. Pokyny k sestavení a nasazení webových balíčků z instance SADY TFS (Team Foundation Server) najdete v tématu Konfigurace Team Foundation Serveru pro automatizované nasazení webu. Informace o tom, jak proces nasazení přizpůsobit a řešit potíže, najdete v tématu Vyloučení souborů a složek z nasazení.