Blog Tomáše Zelenky

tz

Nadšence do informačních a komunikačních technologií

Začínajícího C# programátora

webdeploymsdeploy

Web Deploy – nasazení webových aplikací do Microsoft Azure a jiných hostingů

31.07.2017 | Kategorie: Microsoft

Dříve samostatný nástroj pro nasazení webových aplikací se stal součástí vývojového prostředí Microsoft Visual Studia 2010 a novějších.  Web Deploy neboli MSDeploy umožnuje synchronizaci položek projektu, externích souborů, přenos databáze a dalších drobností vůči serveru. Webová aplikace může být napsaná v ASP.NET nebo PHP.

Nejprve si optimálně nastavíme Web Deploy, podíváme se na bezpečnost při nasazení a na pár tipů k nasazení do Microsoft Azure nebo do českého webhostingu Active24 .

Optimální nastavení

Než vůbec můžeme začít používat Web Deploy, je vhodné zkontrolovat, zda cílový server využívá IIS a je správně nakonfigurován (návod pro správce serveru ZDE).

Vytvoření profilu

Před prvním použitím je nutné vytvořit profil, který bude obsahovat všechny nezbytné údaje k nasazení webové aplikace. Po otevření příslušného projektu ve Visual Studiu vybereme název požadovaného  projektu v Solution Explorer a zvolíme z kontextové nabídky Publish, což nám otevře průvodce pro vytvoření profilu (popř. můžeme nechat připnout správu Web Deploy do panelu nástrojů: View > Toolbar > Web One Click Publish).

createprofile

Vytvoření profilu

createprofile

Průvodce vytvořením profilu

Po vytvoření profilu vzniknou dva soubory s příponou .Pubxml a .Pubxml.user. První soubor slouží k uchování nastavení. Druhý soubor ukládá zapamatované heslo k serveru v zašifrované podobě. Oba soubory nalezneme ve složce PublishProfiles pod složkou Properties v adresáři otevřeného projektu.

pubxml

.Pubxml a .Pubxml.user

Odstranění souborů na serveru

V případě, že smažeme soubory v projektu, nedojde k smazání souborů na serveru. Toto chování lze změnit v nastavení profilu po zvolení volby: Remove additional files at destination.

deletefiles

Smazání souborů na serveru

Porovnání souborů k synchronizaci

Metoda pro porovnání souborů k synchronizaci je ve výchozím stavu založena na datu změny, což rozhodně nemusí být optimální. Doporučuji změnit metodu na kontrolní součet (checksum), která nám ověří, zda došlo k nějaké změně uvnitř souboru. V tomto případě musíme sáhnout do editace souboru název-profilu – Web Deploy.Pubxml, kde do sekce PropertyGroup přidáme:

  <MSDeployUseChecksum>true</MSDeployUseChecksum>
</PropertyGroup>

Vyloučení souborů k nasazení

Nejjednodušší řešení pro vyloučení souborů, které nechceme nasadit na server, ani s nimi nepracujeme v rámci Visual Studia, je zvolit Exclude From Project na vybraných souborech z kontextové nabídky. Dále můžeme vyloučit soubory na základě přípony nebo rovnou celé složky. Opět upravíme název-profilu – Web Deploy.Pubxml v tagu PropertyGroup:

  <ExcludeFilesFromDeployment>File1.aspx;Folder\File2.aspx;*.css</ExcludeFilesFromDeployment> 
  <ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment> 
</PropertyGroup>

V uvedeném příkladu nenajdeme žádné složitosti. Prvním zápisem vylučujeme soubory File1.apsx, File2.apsx ze složky, dále se nebudou synchronizovat veškeré soubory s příponou css. Jednotlivé definice je potřeba oddělit středníkem. Druhým zápisem vyloučíme složku na nejvyšší úrovni a podsložku.

Externí soubory k nasazení

dokumentaci k ASP.NET najdeme jednoduché řešení, které synchronizuje soubory mimo projekt. Před konec tagu Project v editaci profilu vložíme uvedený příklad:

  <Target Name="CustomCollectFiles">
    <ItemGroup>
      <_CustomFiles Include="..\ExtraFiles\**\*" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>
  <PropertyGroup>
    <CopyAllFilesToSingleFolderForMsdeployDependsOn>CustomCollectFiles;
      </CopyAllFilesToSingleFolderForMsdeployDependsOn>
  </PropertyGroup>
</Project>

Xml zápis říká, že bude nahlíženo do složky ExtraFiles, a to včetně podsložek, která je o jednu úroveň výše než je umístění projektu. Tag FilesForPackagingFromProject je nutný k tomu, aby Web Deploy s externím nasazením počítal. Vše ostatní je již zřejmé z anglického překladu.

Práce s databází

Jednou z možností v rámci profilu je práce s lokální databází, která je načítána z konfigurace connectionStrings. Při publikování je přenášeno schéma databáze. Pro zahrnutí obsahu je potřeba vytvořit vlastní SQL skript.

databasevisualstudio

Nenalezení databáze v projektu

databasevisualstudio

Možnost přidání vlastního SQL skriptu

Debug vs. Release

Výchozí a doporučená volba v profilu je Release, při té dojde k nasazení na server. Možnost Debug musí být podporována v cílovém prostředí, kde bude s největší pravděpodobností zakázána z důvodu nadměrného zatěžování.

releasevisualstudio

Nastavení volby Release

Precompiling during publishing

Jak už název napovídá, tato možnost se postará o to, že před nasazením budou veškeré zdrojové soubory (.cs nebo .vb) zkompilovány.

precompile

Nastavení volby Precompiling during publishing

Je Web Deploy bezpečné?

Ano, Web Deploy umožnuje šifrovaný přenos skrze protokol HTTPS.  Jen je potřeba se ujistit, že položka server je vyplněna ve tvaru https://mojedomena.cz nebo mojedomena.cz:443 . Navíc pokud máme plný přístup k IIS, tak doporučuji šifrovat connectionStrings pomocí nástroje ASP.NET IIS Registration Tool (návod ZDE)

httpswebdeploy

Nastavení šifrovaného přenosu

Nasazení webové aplikace do Microsoft Azure

Azure portál poskytuje pro Web Deploy hotový profil, jež obsahuje předvyplněné údaje, které lze ihned importovat do projektu ve Visual Studiu. Stačí jen kliknout na Get publish profile v rámci vybrané webové aplikaci a dostaneme soubor ve tvaru názevappservice.PublishSettings.

azurewebdeployprofile

Stáhnutí profilu

Následně již v průvodci pro vytvoření profilu vybereme Import profile.

msdeployimportprofile

Importování profilu

Nasazení webové aplikace do Active24

Po zaregistrování webhostingu dojde v adresáři wwwroot k vytvoření souboru web.PublishSettings, kde se nacházejí veškeré potřebné informace. Postup je dále stejný, jako v případě Microsoft Azure s jediným rozdílem, že heslo pro nasazení není generované.

Pokud jste uvedený soubor smazali, obraťte se na technickou podporu pro zaslání nového.

Závěr

Na první pohled jednoduchý nástroj, který lze do značné míry lehce přizpůsobit, což z něho dělá nepostradatelného pomocníka.

Nejedná se o sice žádnou novinku, ale i tak určitě stojí za vyzkoušení.

Úvodní foto: Pixabay

Další příspěvky: