Web Deploy je šikovný nástroj pro tvorbu balíčků na jednoduchou instalaci webových aplikací. Podporuje několik režimů, z nichž nejzajímavější je tvorba balíků, které můžete na serveru několika kliky importovat, případně „one click publish“, kdy se správně nastaveným webovým serverem uděláte deployment pomocí několika málo kliknutí myší přímo z Visual Studia. A jak už to tak bývá, cesta k automatizaci je trnitá. Obzvláště pokud se snažíte použít příliš nové technologie, na které nejsou hezké návody. Proto po mém trápení s instalací jsem se rozhodl, že takový návod sepíšu.
Předem bych chtěl upozornit, že nejsem administrátor a pravděpodobně jsou některé kroky špatně a v praxi se to dělá jinak. Já to potřeboval na to, abych si nastavil „vývojový“ hosting pro sebe a pro předvádění aplikací. Druhak je třeba podotknout, že v průběhu rozchozování této technologie jsem zoufale klikal všude možně, takže je zde nenulová pravděpodobnost, že jsem na nějaký důležitý krok při psaní totoho návodu zapoměl. Kdyžtak to prosím zmiňte v komentářích. Díky.
Takže … jak nainstalovat a nakonfigurovat Web Deploy 3.0 na IIS 8?
Instalace základních součástí
Pomocí Web Platform Installeru nainstalujte následující součásti (samozřejmě včetně jejich prerekvizit):
- Web Deploy 3.0
- IIS: Management Service
- a pravděpodobně také Web Deploy 3.0 For Hosting Servers (bez toho mi to nechodilo)
Dále je třeba doinstalovat chybějící součásti Web Deploy 3.0. Než se mi povedlo objevit tento krok, tak v řece času uběhlo docela dost vody, je to pěkně skryté a neintuitivní. Nechápu, proč se ten WebPI na to prostě nezeptá. Pokud tento krok neuděláte, tak vám bude IISka při pokusu o deploy vracet 404.7. Takže v ovládacím panelu Programs and Features najděte položku Microsoft Web Deploy 3.0 a dejte Change
Po proklikání toho průvodce byste se měli dostat na záložku na následujícím obrázku, kde je potřeba zaškrtnout všechny položky:
¨
Následně průvodce doklikejte až na konec
Konfigurace serveru
Dále je třeba nastavit Management Service. Ta se nastavuje v IIS Manager konzoli v sekci Features, když máte rozkliknutý řádek se serverem. Zde je potřeba nejdříve pomocí Stop (vpravo) vypnout tu službu, následně je vám umožněno editovat nastavení té služby. Takže je třeba zapnout Enable remote connections a zbytek nastavit podle svých představ. Já používám následující nastavení:
Po nastavení služby je třeba zvolit Apply a službu zase spustit.
Pokud chcete používat mimo Windows Credentials i speciální Deploy účty (jako já), tak to lze v modulu IIS Manager Users. Zde jde jednoduše vytvářet uživatele, nastavovat jim hesla a povolovat a zakazovat je.
Konfigurace web site / web app
Tím by měla být konfigurace serveru hotová. Následně je třeba nastavit každou site nebo web aplikaci a povolit na ní deploy. Zde jsou dvě možnosti – ta jednodušší, automatická, která funguje jen na web sites, a ta složitější, ruční, která ale funguje i na web aplikace. Začneme tedy tou jednodušší:
V kontextové nabídce dané Web Site (right click myšitkem) jde nalézt položka Deploy\Configure Web Deploy Publishing:
Zde je několik zajímavých položek. Začněme hned tou první – uživatelem. Zde je třeba vybrat uživatele, který bude deploy provádět. 4. položka udává cestu k MsDeploy.axd, kterou sestavíte jednoduchým způsobem: https://<ip adresa nebo hostname>:<port nastavený v Management Service>/MsDeploy.axd. Poslední položka je pak cesta, kam se uloží vygenerovaný .pubxml soubor, který (bohužel) neobsahuje seznam hospod v okolí ale nastavení pro publikaci, které jde importovat ve Visual Studiu. Connection stringy pak slouží pro deployment databází. Po kliku na Setup se provede nastavení všech práv a vygenerování konfigurace.
A teď ta složitější cesta – prvně je třeba uživateli přiřadit deploy práva. To se dělá ve Features dané Web site nebo web aplikace, v modulu IIS Manager Permissions, kde napravo je odkaz Allow User. Dále je potřeba zajistit, aby Management Service měla práva zápisu do složky web aplikace. Ve výchozím nastavení běží pod účtem LOCAL SERVICE, takže je třeba na té složce nastavit práva pro LOCAL SERVICE na Full (aspoň já pro jistotu dal Full). Při tomto způsobu se vám nevygeneruje .pubxml soubor, ale musíte Visual Studio nastavit ručně.
Pokud jsem na nic nezapomněl, pak je server připravený na one-click deployment z Visual Studia.
Nastavení Visual Studia
Deployment z Visual Studia se provádí pomocí Publish v kontextovém menu projektu. Pokud máte z předchozího kroku vygenerovaný .pubxml soubor, tak ho zde můžete naimportovat. Pokud ne, tak vytvořte nový profil a na další záložce ho nastavte.
Nastavení je v celku intuitivní, do Service URL je třeba napsat cestu k MsDeploy.axd (https://<ip adresa nebo hostname>:<port nastavený v Management Service>/MsDeploy.axd), do Site/Application pak přijde název site, případně Site\Webová Aplikace (tak jak to mám na obrázku). Do username a hesla pak přihlašovací údaje pro deployovacího uživatele. Poslední položka pak obsahuje cestu k výsledné webové aplikaci. Nezjistil jsem její účel, snad jen pro to, aby se po publishi automaticky otevřel browser s onou aplikací. Při troše štěstí vám Validate Connection oznámí úspěch a tím je vše nastaveno a můžete si pogratulovat. Mě osobně to zabralo netriviální množství času – nepovedlo se mi vygooglit tak pěkný návod, jaký je tento J.
Vyhození souboru z deploymentu
Na závěr ještě jeden tip – pokud nechcete, aby se nějaký soubor deployoval na server (například web.config obsahující app settings nebo connection stringy, tak to lze buď složitě pomocí úprav jakéhosi XML souboru nebo jednodušeji – v properties daného souboru (jak se tam dostanete přes solution explorer) jde nastavit Build Action na None.
Závěr
Ukázali jsme si, jak nainstalovat Web Deploy 3.0, jako nakonfigurovat a také jak jednoduše provést deploy přímo z Visual Studia. Doufám, že si z tohoto návodu něco odnesete a že vám ušetří čas při rozběhávání tohoto zvířátka. Budu rád za každý feedback na toto téma, nejlépe formou komentářů u článku.
Pěkné odkazy na troubleshooting - http://learn.iis.net/page.aspx/1182/troubleshooting-web-deploy-problems-with-visual-studio/ a http://learn.iis.net/page.aspx/1023/web-deploy-error-codes/