Co je IIS?

V tomto příspěvku se blíže podíváme na službu IIS (Internet Information Services). Podíváme se, co dělá a jak funguje. Dozvíte se, jak ji v systému Windows povolit. A poté, co si vytvoříme základ pro správu služby IIS pomocí grafického uživatelského rozhraní, uvidíte, jak s ní pracovat pomocí rozhraní CLI. Začněme!

Co je webový server IIS?

Webový server IIS běží na platformě Microsoft .NET v operačním systému Windows. IIS je sice možné provozovat i v systémech Linux a Mac s použitím jazyka Mono, ale nedoporučuje se to a pravděpodobně to bude nestabilní. (Existují i jiné možnosti, které představím později). Je univerzální a stabilní a již mnoho let se široce používá ve výrobě. Nejnovější je verze 10. Po instalaci se vám v prohlížeči zobrazí tato uvítací stránka. „Tervetuloa!“

Než se však pustíme do podrobností o systému IIS, začněme definicí webového serveru v obecném smyslu.

Co je to webový server?

Internet je dobrý. A internet nemůže existovat bez webových serverů. Ale co přesně je webový server? Definujme si to abstraktně, abychom měli nějaký kontext pro to, jak IIS tuto roli plní.

Webový server je proces pro hostování webových aplikací. Webový server umožňuje aplikaci zpracovávat zprávy, které přicházejí přes určité porty TCP (ve výchozím nastavení). Například výchozí port pro přenosy HTTP je 80 a port pro HTTPS je 443.

Při návštěvě webové stránky v prohlížeči obvykle nezadáváte číslo portu, pokud není webový server nakonfigurován pro příjem přenosů na jiných než výchozích portech. Při návštěvě http://www.example.com bude váš požadavek implicitně odeslán na port 80. Pokud chcete zadat číslo portu http://www.example.com:80 a https://www.example.com:443 pro zabezpečení TLS (Transport Layer Security), můžete zadat číslo portu

Předpokládáme-li výchozí konfiguraci a pro webovou aplikaci je nakonfigurováno zabezpečení TLS, bude webový server přijímat veškerý příchozí provoz na portech 80 a 443. V případě, že chcete zadat číslo portu http://www.example.com:80, můžete zadat číslo portu https://www.example.com:443. Záleží na tom, co webový server s provozem odtud provede. Existuje nespočet možností, jak může webový server tyto požadavky zpracovat.

Jak IIS zpracovává webové požadavky?

Dva hlavní procesní modely pro webové servery jsou buď zpracování všech požadavků v jednom vlákně, nebo vytvoření nového vlákna pro každý požadavek. Přestože jednovláknový model (například Node.js) má k dispozici některá pracovní vlákna, obvykle je používá pouze pro určité druhy práce, například pro přístup k souborovému systému. Model vlákno na požadavek, který používá služba IIS (a její odlehčený příbuzný IIS Express), pro každý požadavek uchopí vlákno z fondu vláken.

Webové servery obvykle zpracovávají požadavky pomocí vzoru požadavek-odpověď. Klient odešle požadavek a obdrží odpověď, pokud vše proběhne v pořádku. Protokol HTTP je všudypřítomnou volbou při komunikaci mezi klientem a webovým serverem přes internet.

Funkce

IIS je bohatý na funkce. Nejčastěji se IIS používá k hostování webových aplikací ASP.NET a statických webových stránek. Lze jej také použít jako server FTP, hostovat služby WCF a rozšířit o hostování webových aplikací vytvořených na jiných platformách, například PHP.

K dispozici jsou vestavěné možnosti ověřování, například Basic, ASP.NET a Windows auth. Poslední možnost je užitečná, pokud máte prostředí Windows Active Directory – uživatelé mohou být automaticky přihlášeni do webových aplikací pomocí svého doménového účtu. Mezi další vestavěné funkce zabezpečení patří správa certifikátů TLS a vazba pro povolení protokolů HTTPS a SFTP na vašich webech, filtrování požadavků pro zařazení provozu na bílou nebo černou listinu, autorizační pravidla, protokolování požadavků a bohatá sada možností zabezpečení specifických pro FTP.

Jednou z klíčových funkcí služby IIS je fond aplikací. Na fond aplikací se budeme muset podívat podrobněji, protože je kritickou součástí procesního modelu služby IIS.

Neocenitelnou funkcí je vzdálená správa. Službu IIS lze spravovat také prostřednictvím rozhraní CLI nebo pomocí prostředí PowerShell. Vše můžete skriptovat, což je skvělé, pokud se vám líbí moc, která je s touto možností spojena.

Teď už byste měli mít dobrý dojem o konfigurovatelnosti a všestrannosti služby IIS. Měli byste také vědět, že jej lze rozšířit tak, aby sloužil (slovní hříčka) k mnoha jiným účelům než k hostování aplikací ASP.NET. Díky rozšíření se IIS stává vysoce univerzálním a stabilním webovým serverem pro platformu Windows. Podívejme se, jak nainstalovat IIS v systému Windows 10. (Stejný postup platí i pro Windows 7 a 8.)

Nastavení IIS

Nazývat to „instalací“ by bylo trochu moc. IIS je přece funkce systému Windows. Ve skutečnosti je třeba tuto funkci povolit. V systému Windows 10 můžete stisknout klávesu Windows a napsat „zapnout win“. Měla by se zobrazit položka „Zapnout nebo vypnout funkce systému Windows“.

Zvolením této položky otevřete dialogové okno „Funkce systému Windows“. Zde můžete zapnout nejrůznější další funkce, včetně PowerShellu 2.0, hlubokého adresářového stromu možností pro Internetovou informační službu (IIS) a subsystému pro Linux. (Musím říct, že to poslední se mi mnohokrát hodilo, například když aplikace Node obsahuje nějaké shellové skripty jako součást sestavení npm).

Volba Internetové informační služby (IIS) je ta, kterou chceme!

Jediné kliknutí na její políčko vám poskytne dobrý výchozí bod. Možná však budete chtít pátrat hlouběji. World Wide Web Services > Funkce pro vývoj aplikací je místo, kde povolíte ASP.NET, CGI a protokol WebSocket. Vždy se k ní můžete vrátit, pokud budete potřebovat provést úpravy.

Chcete-li povolit službu IIS na serveru Windows, můžete pomocí prostředí PowerShell nebo Správce serveru nainstalovat „Webovou roli (IIS)“. Podrobnosti naleznete v tomto návodu.

Jakmile vyberete všechny požadované funkce IIS, klepněte na tlačítko OK a jděte si dát čerstvou kávu. Po dokončení instalace se do grafického uživatelského rozhraní služby IIS dostanete zadáním „IIS“ do vyhledávání systému Windows nebo spuštěním příkazu „inetmgr“.

Grafické uživatelské rozhraní

Než se dostaneme k podrobnostem, chtěl bych vás krátce seznámit se správcem služby IIS. Zvýraznil jsem oblasti, které mě zajímají, protože tahle věc je strašně nepřehledná. Je třeba si na ni zvyknout, ale mohu vám nabídnout několik věcí, které se týkají orientace v ní.

Především jsou zde tři panely. V levém jsou připojené servery. (Můžete se připojit i ke vzdáleným serverům.) Na prostředním panelu najdete všechny funkce, jako je zabezpečení aplikací, protokolování, filtrování a přesměrování. Nebo když vyberete možnost „Zobrazení obsahu“, uvidíte místo toho obsah zde uprostřed. Vpravo je podokno akcí. Ten se mění v závislosti na zvoleném kontextu.

Nejsem si jistý, proč je tam ta malá ikona navíc vpravo dole, ale i tam dole můžete měnit velikost okna.

TIP: na většinu ikon můžete kliknout pravým tlačítkem myši a pomocí kontextové nabídky provést nejběžnější akce.

Pokud rozbalíte „připojení“ v podokně připojení, první věc, kterou byste měli vidět, je „Aplikační pooly“, následované „Stránkami“. Na ty se zaměříme v následujících dvou částech.

Aplikační pooly… Co to je a jak fungují?

Podíváme se na aplikační pooly, které jsou ve službě IIS nastaveny jako výchozí. Jak vidíte, existují kombinace v2.0 a v4.0 a klasické a integrované.

Integrovaný zásobník se od klasického liší tím, že ASP.NET je integrován do zásobníku požadavků služby IIS. V klasickém režimu musely požadavky procházet jedním potrubím pro IIS a druhým pro ASP.NET. Integrovaný režim je upřednostňovaným režimem od vydání služby IIS 7 se systémem Windows Server 2008 a Vista. Nepoužívejte klasický režim, pokud nemusíte. Totéž platí pro verzi 2.0. Jsou určeny pouze pro podporu starších verzí. Ve skutečnosti, pokud tyto aplikační pooly nepotřebujete, můžete je rovnou odstranit. Nepotřebujeme, aby nám tu visel nějaký cruft!“

Jediný pool aplikací má v daném okamžiku spuštěno nula až mnoho pracovních procesů (w3wp.exe). Pracovní procesy spouštějí instance vaší aplikace.

Vytvoření fondu aplikací

V podokně „Akce“ na pravé straně okna služby IIS klikněte na tlačítko „Přidat fond aplikací…“, čímž vyvoláte dialogové okno. Je to poměrně jednoduché. Obvykle stačí zadat název a stisknout klávesu „enter“ nebo kliknout na tlačítko „OK.“

Skupinu aplikací můžete přidat také kliknutím pravým tlačítkem myši na uzel „Skupiny aplikací“ v podokně „Připojení“. Již dřívější tip dokazuje svou hodnotu!

Uživatelé fondu aplikací

IIS vytvoří pro každý fond aplikací virtuálního uživatele (běžné pojmenování pro fond aplikací). Tyto pracovní procesy běží ve výchozím nastavení jako virtuální uživatel fondu aplikací. Pokud potřebují zvláštní oprávnění, mohou běžet jako jiný uživatel (například doménový účet).

Přestože jsem ze serveru odstranil pooly aplikací, virtuální uživatelé žijí dál!

Tito virtuální uživatelé mají stále své vlastní standardní složky, například „Plocha“, „Hudba“ a „Obrázky“. Nezabírají tolik místa (110 MB), ale po odstranění fondu aplikací jsou tyto složky uživatelů zbytečné a lze je odstranit.

Recyklace fondu aplikací

Jednou z klíčových funkcí fondu aplikací je recyklace. Ve výchozím nastavení se pooly aplikací recyklují každých 1740 minut (29 hodin) a při změně konfiguračního souboru. Recyklaci můžete nakonfigurovat podle svých potřeb. Recyklace fondu aplikací uvolňuje paměť spotřebovanou aplikacemi spuštěnými ve fondu aplikací. Recyklace může zabránit tomu, aby zaběhnuté procesy sežraly veškerou paměť na serveru.

Jaké druhy věcí využívají paměť ve vašem procesu? Všechno na zásobníku a haldě – statické proměnné a vlastnosti, cokoli ve vyrovnávací paměti, všechny objekty, na které se odkazuje jiný objekt, všechny bloky paměti čekající na vysypání do koše, prostě všechno.

Můžete si vybrat, které události chcete zaznamenávat (nebo nezaznamenávat). Jak vidíte, v předchozím dialogu nejsou zobrazeny všechny možnosti – nezdá se, že by bylo možné nastavit „události recyklace za běhu“. Není to tak úplně pravda.

Recyklace spustí nový proces a poté roztočí aktuální proces. Nový proces bude mít podle očekávání nový PID. Toto chování, stejně jako další chování recyklace, můžete změnit v „Rozšířeném nastavení…“. V této nabídce můžete vlastně upravit jakoukoli konfiguraci recyklace. Dialogové okno „Recyklace…“ je v tomto ohledu zbytečné. Můžete zde však vypnout recyklaci pro změny konfigurace. Pravděpodobně to však nebudete chtít. Vaše běžící aplikace by nedostávala aktualizace konfigurace.

Všimněte si, že „překrytá recyklace“ znamená, že je možné mít více než jednu instanci aplikace. Tuto funkci byste měli zakázat pouze v případě, že to vaše aplikace vyžaduje. Překrývající se recyklace zabraňuje narušení, ke kterému by došlo, kdyby recyklace čekala na vyčerpání požadavků aktuálního procesu před spuštěním nového procesu. Jinými slovy, žádné nové požadavky by nebyly zpracovávány, dokud by aktuální požadavky nebyly dokončeny nebo dokud by neuplynula konfigurovatelná doba časového limitu (ve výchozím nastavení 90 sekund).

Pokročilá konfigurace

Konfigurací fondu aplikací je příliš mnoho na to, abychom je v tomto příspěvku podrobně opakovali. Prozatím bude muset stačit stručný přehled. V rychlosti proberu několik bodů o jednotlivých oblastech „Rozšířeného nastavení“, jak je uvedeno níže.

  • Nastavení „Obecné“ vám umožní
    • Změnit .NET CLR verze
    • Povolit 32-.bitové aplikace
    • Změnit režim pipeline
    • Nastavit délku fronty (ve výchozím nastavení 1000 požadavků)
    • Nastavit spouštění vždy nebo na vyžádání
  • Volba „CPU“ zahrnuje
    • Throttling
    • Afinitu procesoru
  • „Model procesu“ umožní zvolit nastavení pro
    • Identitu
    • Idle timeout
    • Max worker processes
    • Health monitoring (Pro ladění byste jej měli lokálně vypnout, protože zastavený debugger nebude reagovat na ping)
  • „Process Orphaning“ je užitečné pro ladění nereagujících procesů
  • „Rapid-Fail Protection“ se hodí v případě, že chcete nakonfigurovat reakce load balanceru na selhání

Sites

„Sites“ je uzel vedle „Application Pools“ v uzlu serveru správce IIS. Zde se přidávají a spravují webové stránky a weby FTP (pokud jsou nainstalovány). Zatímco aplikační pooly mají dialogové okno pro pokročilé nastavení, weby mají mnohem více možností konfigurace! Weby mají mnoho funkcí, z nichž každá má vlastní konfiguraci.

Tyto funkce spadají ve správci IIS pod tři položky:

  • ASP.NET (pokud jej máte nainstalovaný)
  • IIS
  • Správa

Kontextová nabídka

Při výběru webu můžete přepínat mezi „Funkcemi“ a „Obsahem“. Na web můžete kliknout pravým tlačítkem myši a otevřít složku z kontextové nabídky výběrem možnosti „Prozkoumat“. Z této kontextové nabídky můžete provádět i další činnosti, například upravovat oprávnění.

Tím vlastně jen vyvoláte vlastnosti složky webu. Odtud se budete muset přepnout na kartu „Zabezpečení“, abyste mohli oprávnění skutečně upravit.

Typicky pro systém Windows existuje několik dalších způsobů, jak oprávnění upravit. Další informace o nastavení oprávnění složek najdete na oblíbených stránkách nápovědy systému Windows.

Z kontextové nabídky můžete provádět několik běžných úloh. Uvnitř položky „Spravovat webové stránky“ můžete spustit a zastavit webovou stránku, otevřít ji v prohlížeči a přejít do pokročilých nastavení. Na ty se určitě budeme chtít podívat, ale nejprve si řekneme, co se zobrazí, když vyberete možnost „Upravit vazby…“, která je k dispozici také v podokně „Akce“ jako „Vazby…“.

Vazby

Pokud pro svůj web povolíte protokol HTTPS, budete muset v dialogovém okně „Vazby…“ přidat vazbu webu. Můžete zde také nastavit název hostitele a čísla portů. Pokud máte pro svůj web další vazby, můžete je zde také přidat. Možná používáte vazby net.tcp nebo net.pipe (pokud jste tyto funkce přidali na server a povolili je pro web). Nebo zde můžete nastavit IP adresu.

Je možné provozovat více než jeden web naslouchající na stejném portu. K tomu použijete různé názvy hostitelů. Například můžete mít admin.example.com vázaný na web správce a blog.example.com vázaný na blog. Veškerý provoz na webu example.com by směřoval na stejnou IP adresu (load-balancer/server), ale služba IIS by použila hlavičku hostitele k přesměrování provozu na příslušný web. Ty jsou užitečné i pro aplikace white-label: acme.example.com, foo.example.com, bar.example.com.

Základní nastavení

„Základní nastavení…“ je stejný dialog, jaký se zobrazí při prvním nastavení webu. Pravděpodobně tam nebudete muset jít, pokud nechcete změnit fond aplikací nebo umístění webu nebo pokud se nechcete připojit jako jiný uživatel, ale jako IUSR (pass thru). Pokud potřebujete pro přístup k adresáři webu použít účet služby, můžete v dialogovém okně „Upravit web“ zvolit možnost „Připojit jako…“.

Poznámka: měli byste dbát na zabezpečení všech adresářů, které používáte v systému IIS. Můžete využít informace o tom, jak je zabezpečen výchozí adresář inetpub.

Dílčí weby a virtuální adresáře

Pod jedním webem můžete hostovat několik aplikací a virtuálních adresářů. Aplikace mohou běžet ve vlastních aplikačních poolech, ale virtuální adresáře nikoli. Jak je znázorněno níže, pod webem Site2 jsem nastavil aplikaci správce a virtuální adresář blogu. Přístup k nim je možný pomocí http://localhost/admin a http://localhost/blog. Obě reagují vestavěnými chybovými stránkami, pokud v adresářích něco není.

Zdrojové adresáře pro dílčí aplikace a virtuální adresáře nemusí být podadresáři nadřazeného webu. Tyto adresáře můžete mít kdekoli chcete. Možná budete chtít namapovat některé běžné webové zdroje (obrázky nebo JS soubory) na relativní cestu pro více webů. Virtuální adresáře jsou pro to ideální.

Výchozí a chybové dokumenty

Když uživatel navštíví kořenový adresář vašeho webu (www.example.com/), zobrazí se mu výchozí dokument. Výchozí dokumenty jsou uvedeny níže. Můžete přidat vlastní dokumenty, odebrat dokumenty nebo je zcela zakázat. Pokud je zakážete, zobrazí se uživateli ošklivá chybová obrazovka 403, pokud jste mu neudělili oprávnění k výpisu obsahu složky (nedoporučuje se). Nejlepší je mít na místě výchozí dokument.

Dokument indexu jsem umístil do každého adresáře: webu, aplikace a virtuálního adresáře.

  • Site2
    • Admin
      • index.html
    • Blog
      • index.html
    • index.html
  • http://localhost/ načte výchozí dokument na adrese Site2/index.html
  • http://localhost/admin/ načte výchozí dokument na adrese Site2/Admin/index.html
  • http://localhost/blog/ načte výchozí dokument na adrese Site2/Blog/index.html

Pokud se obáváte, že IIS zabere paměť a procesor vašeho počítače, nemusíte. Pokud neběží pracovní procesy (a neobsluhují požadavky s náročným zpracováním), zůstává nečinný. Pokud zaznamenáváte velké vytížení procesoru, může vám pomoci tento průvodce řešením problémů za předpokladu, že používáte ASP.NET.

CLI a vzdálená správa

AppCmd.exe

AppCmd je integrovaný nástroj CLI pro konfiguraci a správu služby IIS. Můžete s ním vytvářet weby a fondy aplikací, propojovat virtuální adresáře a upravovat konfigurace. Podívejme se na několik věcí, které umí.

Nejprve přidejte do cesty %systemroot%\system32\inetsrv\, abyste mohli spustit appcmd z příkazového řádku v libovolném umístění.

Spustit příkazový řádek jako správce.

setx PATH "%PATH%;%systemroot%\system32\inetsrv\"

Zkuste prozkoumat appcmd následujícími příkazy:

  • Spustit appcmd /? pro zobrazení textu nápovědy
  • Zjistěte, jaké aplikace jsou spuštěny pomocí appcmd list app
  • Použijte appcmd list backup pro zobrazení záloh konfigurace IIS

Přidat web

appcmd add site /name:"Dummy Site" /id:10 /bindings:http/*:81:

Nyní opět seznam aplikací. Přidaný nový web se nezobrazí, protože není považován za aplikaci. Pokud přejdete do grafického uživatelského rozhraní a obnovíte stránky, nový web tam uvidíte, ale bude nefunkční. Musíme přidat aplikaci pomocí příkazu appcmd.

appcmd add app /site.name:"Dummy Site" /path:"/"

Tím se přidá aplikace pouze do kořenového webu. Vytvoří aplikaci s názvem „Dummy Site/“. Ještě musíme aplikaci propojit s virtuálním adresářem a ten pak nasměrovat na fyzickou cestu.

appcmd add vdir /app.name:"Dummy Site/" path:"/"appcmd set vdir "Dummy Site/" /physicalPath:"c:\inetpub\wwwroot"

Toto je slovní způsob, jak pomocí appcmd vytvořit web IIS. Existuje i jednodušší způsob.

Způsob EZ

Při vytváření webu můžete ušetřit spoustu stisků kláves, pokud v prvním příkazu nastavíte parametr physicalPath. Tím se vše provede najednou:

appcmd add site /name:"Dummy Site" /id:10 /bindings:http/*:81: /physicalPath:"c:\inetpub\wwwroot"

Znalost ostatních příkazů vám však umožní lépe pochopit, jak aplikace IIS pod kapotou skutečně funguje. V minulosti jsem používal appcmd ve skriptu po sestavení proj souborů ASP.NET, abych zajistil lokální nastavení webu na nových vývojářských počítačích. Pomocí appcmd můžete také provést zálohu a obnovu konfigurace IIS.

Deploying updates

Abyste měli ještě jednu představu o použití appcmd, zvažte následující postup:

  1. Vytvořte složku „sites“.
  2. Vytvořte podsložku pro každou stránku.
  3. Vysílejte verze do podsložek v každé z nich.
  4. Stavte nové verze.
  5. Pomocí appcmd aktualizujte stránky tak, aby používaly novou složku.

Dejte aplikaci s názvem „Hello World“ ukazující na C:\Sites\HelloWorld\1.0.0 a nové sestavení „1.0.1“, které bylo umístěno do složky C:\Sites\HelloWorld\1.0.1 , až přijde čas na spuštění, můžete použít následující příkaz k překlopení webu na novou verzi:

appcmd set vdir "Dummy Site/" /physicalPath:"c:\Sites\HelloWorld.0.1"appcmd recycle apppool /apppool.name:defaultapppool

A pokud potřebujete web vrátit zpět, spusťte následující příkaz:

appcmd set vdir "Dummy Site/" /physicalPath:"c:\Sites\HelloWorld.0.0"appcmd recycle apppool /apppool.name:defaultapppool

Tady je skvělý průvodce od společnosti Microsoft s dalšími informacemi o používání AppCmd.

IIS reset

„iisreset“ je samostatný spustitelný soubor, který slouží k zastavení, spuštění, restartování služby IIS nebo události k restartování počítače (/REBOOT). Můžete mu předat parametr „computername“, aby ovládal IIS na jiném počítači. Budete jej muset spustit jako správce. Mnoho vývojářů a správců systému jej rádo používá po nasazení a ani to není špatný nápad!“

PowerShell

PowerShell má výkonnou sadu nástrojů pro správu služby IIS. Příkaz iisreset můžete také odeslat vzdáleně pomocí příkazu Invoke-Command -ComputerName „computername“ -ScriptBlock {iisreset} za předpokladu, že povolíte vzdálené vyvolání libovolných příkazů na serverech – a to obecně není dobrý nápad!

Přes mé vlastní bezpečnostní obavy z odesílání libovolných vzdálených příkazů pomocí prostředí PowerShell jsou rutiny pro správu IIS opravdu užitečné pro správu webových serverů ve stylu DevOps. Můžete se podívat na tuto dokumentaci ke správě IIS pomocí prostředí PowerShell, abyste získali představu o tom, co všechno umí.

Vypnutí

Přes všechny funkce, konfigurace a příkazy, které jsme v tomto příspěvku popsali, jsme se jen poškrábali na povrchu. Každá funkce má své vlastní konfigurace a existuje mnoho rozšíření, která lze přidat instalací rozšíření Web Platform Installer.

A tím tento příspěvek a server IIS uzavřeme:

iisreset /stop

Pomocí APM, metrik stavu serveru a integrace protokolů chyb zlepšete výkon svých aplikací pomocí nástroje Stackify Retrace. Vyzkoušejte si dvoutýdenní zkušební verzi zdarma ještě dnes

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.