Jedním z velkých mýtů či nedorozumění o tom, jak funguje a co to přesně je Windows Azure, je chybná úvaha, že na Windows Azure běží jen a pouze aplikace napsané pro platformu .NET. To ale není pravda, Windows Azure vám stejně tak dobře poslouží i pro hostování webů psaných v PHP. Vytvoření cloudu je poměrně snadné, pro přípravu webové aplikace do podoby umístitelné do Windows Azure potřebujete několik zdarma dostupných nástrojů.
V tomto článku se podíváme na úplné základy práce s Windows Azure z pohledu vývojáře pracujícího s PHP. Zkusíme v cloudu zprovoznit zkušební účet s Windows Serverem, do kterého nahrajeme jednoduchou aplikace psanou v PHP. Také se podíváme, jak si připravit potřebné nástroje pro vývoj a tvorbu balíčků v počítači.
Windows Azure je cloud
Neustále slyšíme o cloudu, jak je super jej využívat, jak jsou moderní cloudové aplikace či jak je všechno, co běží v cloudu levnější. Cloudy můžeme rozdělit na několik typů, přičemž Windows Azure je cloudová služba typu PaaS - platform as a service.
V rámci PaaS uživatel dostává k dispozici síť, server a úložiště. Jiné typy cloudových služeb nabízejí třeba jen úložiště.
Proč jsou cloudy momentálně tak oblíbené? Jejich architektura umožňuje pohodlně navyšovat výkon dle potřeb aplikace, úložiště se může postupně rozrůstat a to všechno průběžně. Z finančního pohledu je zde tedy výhoda v tom, že jako provozovatel aplikace či služby běžící v cloudu můžete minimalizovat počáteční náklady - zaplatíte nějaký minimální vstup a postupně budete platit za výkonnější služby, tak jak bude vaše aplikace a počet zákazníků růst.
Z pohledu koncového uživatele může být cloud zajímavý v tom, že jeho jednotlivá úložiště mohou být rozmístěna různě po světě, vzájemně se synchronizovat a být tak k dispozici mnohem rychleji, než kdyby vše běželo z jednoho serveru. Nedávno jsem se setkal s tvrzením, že aplikace běžící v cloudu jsou zdarma, jsou kvalitnější, mají menší nároky na počítač a prakticky vystřídají běžné programy. To je samozřejmě tvrzení zcela liché. Vždy záleží na konkrétním scénáři, zda cloud bude vyhovovat.
V případě webové aplikace má dle mého názoru smysl sáhnou po cloudu poté, co začnete požadovat opravdu vysoký výkon, na který by jinak byla potřeba více serverů, vaše webová aplikace bude generovat velké množství dat procházejících sítí a vy zkrátka budete chtít optimalizovat náklady. Navíc v případě kvalitního cloudu máte zajištěnu neustálou dostupnost - synchronizované servery včetně úložiště e mohou při výpadku jednoho z nich automaticky nahrazovat.
Windows Server 2008 R2, výpočetní kapacita, databáze, úložiště
Windows Azure je cloud postavený na virtualizovaném operačním systému Windows Server 2008 R2. Když tedy pracujete s cloudem na Windows Azure, pracujete právě s Windows Serverem. Z toho vyplývá, že ve Windows Azure můžete provozovat téměř cokoli, co poběží na Windows Serveru a nevyžaduje nějaké hlubší zásahy do operačního systému.
Aby to nebylo tak jednoduché - při sestavování cloudu ve Windows Azure pracujete s několika komponentami. Nejdůležitější pro nás bude samotný systém, tedy položka Hosted Service. Ta reprezentuje operační systém, do kterého nakopírujete provozní soubory své aplikace. Těchto „virtuálů" můžete mít libovolný počet. Pro zachování neustálé dostupnosti je vhodné mít minimálně dva, aby se v případě výpadku mohly zastoupit.
Windows Azure zajišťuje také instalaci aktualizací do operačního systému a různé další úpravy. Své aplikace nahráváte do Windows Azure v podobě speciálního balíčku, který je pak rozkopírován do příslušných virtuálů. Při aktualizacích je většinou daný virtuál smazán a nahrazen jiným obrazem systému, do kterého je opět nakopírován balíček vaší aplikace. Z toho plyne jeden problém - provedete-li třeba přes vzdálenou plochu zásah do systému, Windows Azure nezaručí, že ty změny vám zůstanou navždy. Instalaci aktualizací můžete potlačit, ovšem změny image mohou nastat i při jiných situacích.
Další částí cloudu Windows Azure je Storage Account. To reprezentuje úložiště pro data vaší webové aplikace. Ty jsou tedy bokem balíčku s programovým kódem aplikace a nejsou nijak ovlivněny případnými aktualizacemi operačního systému nebo změnami ve virtuálu.
Třetí z hlavních částí Windows Azure je Database, ve které si definujete databázový server Microsoft SQL Azure. Ve Windows Azure najdete ještě i položky Data Sync, vytváření Content Delivery Network, nastavení cache a další položky. O nich podrobněji někdy příště.
Windows Azure SDK pro PHP a příprava pro vývoj na Windows Azure
V této části článku si nainstalujeme vše potřebné pro vývoj aplikací v PHP směřujících na Windows Azure. Návod předpokládá, že pracujete ve Windows 7, případně v jiné verzi Windows.
Až budete vytvářet novou Hosted Service ve Windows Azure, budete do ní kopírovat soubory svého webu zabalené do speciálního balíčku. Příslušné nástroje pro jeho sestavení najdete ve Windows Azure SDK for PHP. Než jej ale budete moci použít, zprovozněte si na počítači vše potřebné pro vývoj v kombinaci PHP a Windows Azure.
Doporučuji použít nástroj Web Platform Installer, který vám do počítače nainstaluje potřebné technologie a mimo jiné i povedený editor a nástroj pro vývoj webů WebMatrix.
Pomocí Web Platform Installeru si do systému doplňte následující:
Instalovat můžete buď ručně vyhledáním ve Web Platform Installeru, nebo kliknutím na tyto odkazy. Vedou přímo na soubor, který se vám ve Web Platform Installeru otevře a po potvrzení spustí instalaci potřebných komponent, včetně těch, které s daným prvkem souvisejí. Doporučuji vždy po instalaci jedné komponenty Web Platform Installer zavřít, jinak se vám znovu po kliknutí na další odkaz průvodce pro instalaci dané komponenty neotevře.
Ověřte si, zda máte vše správně nainstalováno tím, že z nabídky Start spustíte Compute Emulator nacházející se ve složce Windows Azure SDK. Po spuštění se usídlí v oznamovací oblasti a pravým tlačítkem myši na jeho ikonce můžete vyvolat okno programu. Podobným způsobem spusťte Storage Emulator, který by vám měl oznámit, že vývojové úložiště bylo bez problémů vytvořeno. Následně se také schová do systémové lišty.
Tím by mělo být připraveno základní vývojové prostředí pro test aplikací určených do Windows Azure. Přidáme tedy podporu sloužící k vytváření balíčků pro PHP. Z Codeplexu si stáhněte ZIP archiv Windows Azure SDK for PHP a rozbalte jej někam do počítače, řekněme do složky C:\Program Files\Windows Azure SDK for PHP. Najdete v něm nástroje příkazového řádku sloužící k sestavování balíčků, tvorbu certifikátů nebo pro práci s úložištěm.
Nyní je třeba přidat cestu k php.exe a k staženému SDK do proměnné PATH, tak aby systém věděl o těchto aplikacích a nemuseli jste vyplňovat celou cestu k jejich spuštění. Pokud jste instalovali PHP pomocí Web Platform Installeru na 64bitová Windows 7, bude jeho složka C:\Program Files (x86)\PHP\v5.3.
Klepněte na tlačítko Start a pravým tlačítkem na položku Počítač. Otevře se ovládací panel Systém, ve kterém pokračujte odkazem Upřesnit nastavení systému. V dalším okně na kartě Upřesnit stiskněte tlačítko Proměnné prostředí. V části Systémové proměnné poklepejte na položku Path a přidejte do ní následující řetězec:
;C:\Program Files\Windows Azure SDK for PHP\bin;C:\Program Files (x86)\PHP\v5.3
Všimněte si, že cesty jsou odděleny středníkem. Pokud jste SDK rozbalili jinam a PHP máte třeba v C:\Program Files, cesty si před vložením do Path upravte. Nastavení poté uložte.
Spusťte si příkazový řádek a ověřte, že všechno správně funguje a máte všechny cesty správně nastaveny. Zadejte příkaz package. Pokud se zobrazí seznam jeho parametrů, je vše v pořádku.
Jestliže systém zahlásí, že jej nezná, máte s největší pravděpodobností špatně nastaveny cesty v proměnné Path. Podotýkám, že po změně Path je třeba ještě příkazový řádek zavřít a znovu spustit, aby si změny všiml. Obsah proměnné Path můžete ověřit také příkazem path.
Příprava jednoduchá aplikace v PHP pro Windows Azure
Připravte si nějakou jednoduchou aplikaci napsanou v PHP. Pro vyzkoušení a eliminaci případných chyb spojených s překlepy ve skriptu můžete využít například známou funkci phpinfo(). Připravte si soubor index.php, který bude mít následující obsah:
<?php phpinfo(); ?>
Nezapomeňte na otevírací značky pro PHP ve tvaru <?php. Pokud ponecháte jen <?, pak s tím bude mít Windows Azure potíže.
Vytvořte si složku C:\projekty\AzurePHPapp, kterou budu ve zbytku článku považovat za pracovní složku s vaší webovou aplikací pro Windows Azure. Do příkazového řádku nyní zadejte následující:
scaffolder run -out="C:\projekty\AzurePHPapp"
V projektové složce nyní přibude sada dalších souborů tvořících kostru aplikace pro Windows Azure. Do složky PhpOnAzure.Web nakopírujte připravený soubor index.php, který dnes jako jediný bude tvořit vaši aplikaci.
Všimněte si dalších podsložek v PhpOnAzure.Web. Složka bin bude obsahovat startovací skripty pro vaši PHP aplikaci a pro zprovoznění PHP ve Windows Azure v okamžiku, kdy aplikaci do něj nakopírujete. Do složky php můžete umístit upravený php.ini pro případ, že potřebujete nějakou speciální konfiguraci. Rovněž sem vložte případná rozšíření PHP, která ve své aplikaci používáte.
Složka resources je kontejnerem pro další soubory používané při zveřejňování aplikace na Windows Azure. V projektové složce dále najdete několik konfiguračních souborů.
Vraťte se do příkazového řádku a zadejte následující:
package create -in="C:\projekty\AzurePHPapp" -out="C:\projekty\AzurePHPapp\build" -dev=true
Poprvé to zřejmě chvíli potrvá, ale nakonec by měla být spuštěna vaše jednoduchá aplikace a ve výchozím webovém prohlížeči byste měli vidět její výstup - v daném případě zobrazení konfigurace PHP, tak, jak jej vykreslí funkce phpinfo().
Pokud bylo vše v pořádku, tak jste právě úspěšně ověřili, že daná aplikace by měla bez problémů běžet ve Windows Azure a můžete přistoupit k sestavení balíčku pro nakopírování do cloudu.
Vytvoření balíčku PHP aplikace pro Windows Azure
Než spustíte příkaz vytvářející balíček pro Windows Azure, otevřete si ze systémové oblasti Windows Compute Emulator UI, najděte v něm položku PhpOnAzure a klikněte na tlačítko pro zastavení služby.
Přejděte do složky C:\projekty\AzurePHPapp a vymažte v ní složku bin. Pokud to nepůjde, služba s testováním aplikace na lokálním počítači zřejmě stále běží a nebudete moci vytvořit distribuční balíček do stejného umístění.
Pro sestavení balíčku pro nakopírování na Windows Azure použijte příkazový řádek s následujícím zadáním:
package create -in="C:\projekty\AzurePHPapp" -out="C:\projekty\AzurePHPapp\build" -dev=false
Ve složce C:\projekty\AzurePHPapp\build by vám měly vzniknout dva soubory: AzurePHPapp.cspkg a ServiceConfiguration.csfg.
Vytvoření účtu u Windows Azure, nakopírování aplikace v PHP a její spuštění
Od finále jsme jen krůček. Zbývá nám připravený balíček s aplikací v PHP nakopírovat do Windows Azure. Přejděte na webovou stránku windows.azure.com a přihlaste se s Live ID nebo si vytvořte nové. Vytvořte si zde nový trial účet, který bude funkční pro dobu tří měsíců. Proces registrace a vytvoření účtu je jednoduchý. Jediným zádrhelem je ověření pomocí kódu zaslaného na SMS nebo zavolaného telefonem.
Já zvolil druhou možnost, SMS s ověřovacím kódem mi totiž nedorazila. V telefonátu se vám ozve automat, který dvakrát zopakuje asi šestimístný číselný kód, jenž opíšete do formuláře na webu.
Jakmile budete do portálu vyžadujícího Silverlight přihlášeni, klikněte na tlačítko New Hosted Service. Z nabídky vyberte svůj účet (tedy například 3-Month Free Trial) a vložte libovolné jméno služby, pod kterým ji chcete na Windows Azure identifikovat. Poté ještě vyberte URL, pod kterou bude web dostupný ve webovém prohlížeči (později můžete samozřejmě na Windows Azure pomocí DNS nasměrovat svou doménu).
Vyberte si, ve kterém regionu chcete nový virtuál umístit - Windows Azure má po světě několik datacenter. V Deployment Options vyberte Deploy to stage environment, čili publikaci své aplikace do testovacího prostředí. Zadejte její název a tlačítky Browse Locally vyberte postupně balíček s kódem aplikace a konfigurační soubor z podsložky bin - vytvářeli jsme je před chvílí.
Po potvrzení tlačítkem OK se spustí proces vytvoření virtuálního počítače ve Windows Azure a po nějaké chvíli bude vše připraveno k tomu, abyste si svou první PHP aplikaci ve Windows Azure mohli otevřít. Po jejím označení uvidíte na boční straně v políčku DNS name odkaz pro její zobrazení ve webovém prohlížeči. Stačí na něj kliknout, otevře se do nového okna.
Poznámka: hlášení o tom, že byste měli vytvořit více jak dvě instance virtuálu ignorujte. Proč jsou třeba jsem zmínil na začátku, pro prvotní vývoj a vyzkoušení Windows Azure je nepotřebujete.
Stejným způsobem tedy můžete pro Windows Azure připravit balíček s jakoukoli další aplikací psanou v PHP a umístit ji do cloudu. Jakmile ji řádně otestujete v režimu Staging Deployment, můžete ji v seznamu označit a použít tlačítko Swap VIP. V ten moment se aplikace převede do produkčního režimu a bude dostupná pod URL, kterou jste zadali při vyváření Hosted Service.
Tolik tedy prvotní a nezbytný úvod k vývoji a umisťování aplikací v PHP na Windows Azure. Někdy příště se můžeme podívat na umístění nějakých složitějších aplikací na tento cloud, případně na provázání s databází a úložištěm.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Přidat komentář