W2K8: Web server a hosting

Možná trochu netradičně začneme s tím, co Windows Server 2008 (v článku stále ještě nazývaný LHS) přináší na poli hostování aplikací a webových stránek. Dlužno dodat, že IIS7 stojí na původním enginu webového serveru, který již ve verzi 6.0 vykazoval vynikající výsledky, ať už jde o výkon či bezpečnost. Nicméně IIS7 jde ještě dál. Už při instalaci LHS "bazíruje" na modulárnosti a nenainstaluje nic, co administrátor explicitně nepovolí. Je to rozdíl oproti starším verzím, kde buďto bylo vše nainstalováno a povoleno (IIS5.0), anebo nainstalováno, ale zakázáno (IIS6.0). Správci serverů tak mohou vytvořit přesně danou sadu funkcí, kterou potřebují. Samozřejmě kromě grafického rozhraní lze také instalovat přes příkazový řádek, popř. i přes tichou instalaci s pevně daným setem parametrů, což má výhodu při rozsáhlejším nasazení IIS7 v produkčním protředí. Jako poslední je nutno dodat, že jednotlivé role je možno posléze přidávat a odebírat za chodu serveru.

Když máme IIS7 nainstalováno, je v jakési základní konfiguraci. Umí tedy statické stránky, obrázky, klasické ASP, a má vytvořenu default web site (podpora .NET3.0 a dalších modulů  je volitelně k doinstalaci). Tím to také končí. Nicméně tady začíná ta pravá legrace. Pokud se podíváte na grafické rozhraní nové verze, pravděpodobně vám nebude připadat příliš známé. I tady proběhlo pár změn. Tradiční "strom" na levé straně zůstává, ovšem pravá strana jde v duchu nové konzole MMC (znáte třeba z Exchange 2007). Uprostřed máte nějaký ten informační panel, vpravo pak výpis nástrojů a příkazů, kterými můžete IIS ovládat. Konfigurace se standardně dělí na základní a pokročilou, přičemž každá část má svoje parametry. Zapomeňte na jeden dialog s několika záložkami, kde můžete konfigurovat všechno.

Konzola samozřejmě není jediným způsobem, jak IIS konfigurovat. K dispozici máte příkaz "appcmd.exe", kterým můžete konfiguraci libovolně měnit. Odpadá tedy zdlouhavé psaní VB skriptů a celý proces (když třeba hostujete více serverů) můžete urychlit tímto nástrojem. Typický příklad, jak vytvořit virtuální site a uvést základní parametry je potom třeba (parametry jsou v příkladu odřádkovány pro lepší přehlednost):

appcmd add site
/name:"nazev.cz"
/bindings:https://www.nazev.cz:80
/physicalpath:"c:\datoveuloziste\nazev.cz"

Tato dávka vytvoří virtuální server s host-headerem www.nazev.cz a nazev.cz, naváže je na port 80 (http) a jako úložiště souborů zadá cestu na pevný disk. Dále bychom v parametru mohli definovat automatický start webu, certifikáty, limity na síťová spojení, aplikační pool atd.

Výše uvedený příkaz tedy můžete používat prakticky k čemukoliv. Konfigurace (vytvoření, změna, výmaz) virtuálních serverů, zastavení/spuštění/restart IIS/virtuálu, monitoring worker procesu, exportovat/importovat IIS konfiguraci atd. Konečně! Zbývá dodat, že IIS obsahuje i administrační API, které můžete ovládat pomocí Powershellu.

Konfigurace se nově ukládá do čitelného souboru na bázi XML. Výhody jsou celkem zřejmé, připomeňme však alespoň tu, že se konfigurace dá dynamicky měnit přímo v daném souboru, popř. se obsah dá spravovat/číst aplikací, kterou si správce, popř. firma napíse. Odpadá tedy čtení metadatabáze a přichází textový soubor, jehož obsah přečte každý. Soubor najdete v c:\windows\system32\inetsrv\config.

Novinkou je také segmentace oprávnění a administrátorských účtů, které můžete používat ke správě IIS. Tři úrovně nyní zajišťují dostatečný prostor pro delegaci jednotlivých administrativních úkonů mezi několik správců. Role jsou Web Server Administrator, Web Site Administrator a Web Application Administrator. Podle názvů celkem jasně dokážete identifikovat, která oprávnění a která nastavení může jednotlivá role konfigurovat a spravovat.

K několika změnám došlo i v oblasti autentizace uživatelů, a to především anonymních userů, pod kterými obvykle webové servery fungují. Nová bezpečnostní skupina (security group) IIS_IUSRS nahrazuje lokální skupinu IIS_WPG. Navíc z IIS mizí notoricky známý uživatel IUSR_JmenoServeru (např. IUSR_SRV01) a je nahrazen novým vestavěným IUSR účtem (pro potřeby FTP serveru se však nadále IUSR_JmenoServeru bude používat). IUSR je nový účet, který běží s nejnižšími právy a může pouze do veřejně přístupných adresářů. Jeho možnosti můžete samozřejmě konfigurovat a za pomoci standardních ACL posléze rozšiřovat, popř. omezovat, jeho pohyb po disku. Administrátorům samozřejmě nic nebrání v tom vytvořit specifickou skupinu uživatelů a mapovat je na jednotlivé adresáře virtuálních serverů (typicky u webhostingu, kdy na serveru běží tisíce webů pod tisíci různými uživateli).

Nakonec zbývá v rychlosti zmínit vylepšení v aplikačních režimech pro jednotlivé virtuální servery. Application pool dostává při svém vzniku unikátní SID, který zajišťuje jedinečnost poolu i přesto, že v jednu chvíli jich může běžet libovolný počet v kontextu jednoho uživatele. V takovém případě na sebe pooly "nevidí". Dál samozřejmě můžete výkon serveru či zabezpečení "pitvat" tak, že poolu přidělíte specifický účet se specifickými oprávněními, stejně tak jako na cílové složce nastavíte patřičný ACL atd. Standardní kombinací uživatele pro virtuální server (IUSR), separátního uživatele pro aplikační pool a jedinečným SIDem pak dokážete zajistit bezpečný provoz i v prostředí se stovkami webových serverů.

Coby bývalý "webhoster" mohu říct jediné - IIS má konečně to, po čem se volalo dlouho. Jednoduchou obsluhu, dobré a škálovatelné zabezpečení, jeden příkaz na obsluhu celého serveru a tudíž jednodušší automatizaci, plus dostupný výkon a nepřeberné množství nastavení. Konfigurace v XML souboru, podpora Powershellu pro administraci, .NET2.0 i 3.0...zkrátka fajn!

- KFL