IIS a nastavení environment proměnné

06.02.2021

Pokud vyvíjíme aplikaci, 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á své 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 Manager a volbu "Add roles and features" 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 Features. 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. IIS můžeme také 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 připojit k námi vytvořeným stránkám, je nutné zprovoznit vybrané domény appdemo.cz a staging.appdemo.cz. Tyto domény musí být buď:

  • registrované a zpřístupněné na internetu prostřednictvím webového serveru,
  • nebo správně nastavené na DNS serveru, ke kterému máme přístup (například firemní nebo domácí DNS server).
V mém případě použiji jako alternativu soubor hosts, kterým si přeložím doménové adresy 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. 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, následně spustíme web deploy pro obě prostředí z Visual Studia a poté weby opět spustíme.

Závěr

Máme nakonfigurovaný IIS server a vytvořenou demo aplikaci. Pro tuto aplikaci jsme připravili dva publish profily: jeden pro produkční prostředí a druhý pro staging prostředí. Pomocí metody web deploy jsme aplikaci úspěšně nahráli do obou prostředí. Obě prostředí jsou dostupná na adresách appdemo.cz a staging.appdemo.cz, kde si můžeme ověřit, že aplikace funguje správně a načítá proměnnou ASPNETCORE_ENVIRONMENT z nastavení IIS. Tímto způsobem není nutné před publikováním upravovat a kontrolovat soubor web.config, což pomáhá předejít zbytečným chybám při nahrávání aplikace. Zároveň odpadá potřeba řešit, jak s proměnnou pracovat ve verzovacím systému.

Odkazy