IIS a nastavení environment proměnné
06.02.2021Pokud vývíjíme aplikaci tak máme k dispozici obvykle více než jedno prostředí. Například development prostředí pro lokální vývoj, staging pro testování a production pro produkci. Každé prostředí má svoje specifické nastavení, například používá jinou databázi apod. Aplikace tedy musí vědět v jakém prostředí běží a podle toho použít správný konfigurační soubor. V ASP.NET Core k tomuto účelu slouží proměnná ASPNETCORE_ENVIRONMENT.
Slovníček
Internet Information Services (IIS) | Webový server od Microsoftu. |
ASP.NET Core | Open-source webový framework od Microsoftu (první release 2016). |
Obsah
Nastavení IIS
Instalace
Pokud spravujete windows server, pravděpodobně instalaci budete provádět přes Server Managera a Add roles and features volbu nebo pomocí příkazové řádky. Pokud instalujete IIS Express na Windows 10 nebo nižší, můžete instalaci provést přes control panel pomocí windows feautures. Je potřeba všechny komponenty projít a zaškrtnout dle potřeb.
Po instalaci se vytvoří zástupce Control Panel\System and Security\Administrative Tools\Internet Information Services (IIS) Manager nebo můžeme IIS otevřít ze start panelu, pokud dáme hledat IIS :-)
Příprava prostoru pro web
Zvolíme a vytvoříme si složku, která bude sloužit jako úložiště pro naše webové stránky, například C:\websites a v ní dvě složky pro produkční a staging prostředí naší aplikace C:\websites\AppDemo a C:\websites\AppDemoStaging. Přesuneme se do IIS a nastavíme jednotlivé webové prostředí. Vybereme možnost Sites > Add Website a vyplníme dialogové okno pro produkci a obdobně poté i pro staging.
Nyní máme základní nastavení připravené.
Nastavení DNS
Abychom se mohli na naše vytvořené stránky připojit, musíme zprovoznit námi zvolené domény appdemo.cz a staging.appdemo.cz. Domény musí být buď registrované (a webový server zpřístupněný do internetu) nebo nastavené na DNS serveru, ke kterému se připojujeme (například firemní DNS server). V mém případě jako alternativu použiju hosts soubor, kterým si doménové adresy přeložím na localhost.
Spustíme si pod admin oprávněním nějaký textový editor, otevřeme soubor C:\Windows\System32\drivers\etc\hosts a nastavíme překlad. Poté už můžeme adresy zadat do prohlížeče, ale dostaneme HTTP Error, protože zatím nemáme nahraný žádný obsah.
127.0.0.1 appdemo.cz
127.0.0.1 staging.appdemo.cz
Nastavení environment proměnné
Aby ASP.NET Core aplikace poznala v jakém běží prostředí, používá k tomu proměnnou ASPNETCORE_ENVIRONMENT, kterou nastavíme v konfiguračním editoru. Pokud bychom potřebovali proměnnou změnit za běhu, tak není potřeba restart webu ani IIS služby, ale proměnná začne platit okamžitě a stránka si podle ní rovnou načte správný appSettings.json config.
Pro staging prostředí pak
Nasazení webové aplikace
Nyní již máme připravený a nakonfigurovaný IIS server, ale musíme na něho ještě nahrát naší aplikaci. Testovací aplikaci si vytvoříme a pro publikování pak použijeme web deploy volbu.
Příprava demo aplikace
Vytvoříme aplikaci pomocí příkazů
\appdemo> dotnet new sln
\appdemo> dotnet new mvc
\appdemo> dotnet sln add AppDemo.csproj
a do souboru AppDemo\Views\Home\Index.cshtml přidáme následující kód, který nám vypíše prostředí, které si aplikace načetla.
<environment names="Staging">
<p class="alert alert-success">Staging</p>
</environment>
<environment names="Production">
<p class="alert alert-danger">Production</p>
</environment>
Web Deploy
Vše již máme připraveno a zbývá už pouze nahrát aplikaci na obě prostředí. Otevřeme si aplikaci ve Visual Studiu (pod admin účtem) a vytvoříme si dva publish profily (klikneme pravým tlačítkem na projekt > Publish, vybereme web server a poté web deploy možnost a nastavíme konfiguraci)
Před publikováním naše weby na IIS pozastavíme, pustíme web deploy na obě prostředí z visual studia a poté weby znova spustíme.
Závěr
Máme nakonfigurovaný IIS server a vytvořenou demo aplikaci. V aplikaci máme vytvořené dva publish profily pro produkční a staging prostředí, které jsme spustili a metodou web deploy se nám nahrála aplikace na obě prostředí. Obě prostředí jsou přístupné na adresách appdemo.cz a staging.appdemo.cz kde si můžeme vyzkoušet, že aplikace běží a správně si načítá ASPNETCORE_ENVIRONMENT proměnnou z nastavení IIS. Díky tomu nemusíme před publikováním nastavovat a kontrolovat web.config čímž můžeme předejít zbytečné chybě při nahrávání aplikace a zároveň nemusíme řešit jak s proměnnou pracovat ve verzovacím systému.