Lukáš Beran
Lukáš Beran

Vítejte na mém blogu! Pokud hledáte návody, tipy a triky ze světa IT, jste tu správně. Najdete zde primárně články k produktům a službám Microsoftu, jako například operační systémy, servery, virtualizace, sítě, správa, ale také cloud. Občas přidám i nějaké další zajímavé články.

Říjen 2019
PoÚtStČtSoNe
« Zář  
 123456
78910111213
14151617181920
21222324252627
28293031 

Rubriky


WordPress jako webová aplikace v Azure

Lukáš BeranLukáš Beran

Webové stránky včetně WordPress můžete mít na běžném serveru, tedy v rámci infrastrukturních služeb (IaaS – Infrastructure as a Service). Mnohem lepší variantou je ale posunout se o úroveň výš do platformních služeb (PaaS – Platform as a Service). V platformních službách se nemusíte starat o operační systém, aplikace, aktualizace, zabezpečení, upgrade apod., to vše za vás řeší poskytovatel. Navíc automaticky získáváte vysokou dostupnost a možnost snadného škálování výkonu. Výrazně to tedy zjednodušuje správu.

Služby v Azure pro webové aplikace

WordPress je aplikace psaná v jazyce PHP využívající MySQL databázi. Budeme tedy potřebovat Azure App Service (linuxová webová aplikace s podporou PHP) a Azure Database for MySQL (MySQL databáze jako služba).

Vytvoření služeb v Azure pro WordPress

Jak jsem již zmínil, budeme potřebovat vytvořit dvě služby v Azure – webovou aplikaci a databázi.

Vytvoření webové aplikace v Azure pro WordPress

Jako první si vytvoříme novou webovou aplikaci. Vybereme Create a resource a následně ve vyhledávání najdete Web App. Vybereme subskripci, ve které službu zakládáme. Vytvoříme novou resource group, do které webovou aplikaci vytvoříme. Dále musíme zadat název instance aplikace, což je vlastně doménové jméno na doméně azurewebsites.net, tudíž jméno musí být globálně unikátní. Pomocí této adresy pak bude webová aplikace i dostupná (včetně HTTPS), samozřejmě následně můžete používat libovolné vlastní doménové jméno. Jako Runtime stack vybereme PHP 7.3, operační systém Linux a region doporučuji západní Evropa nebo severní Evropa.

V části Linux plan vytvoříme nový plán. Plán je v podstatě SKU, tedy velikost dané instance. Pro malé weby nebo nějaké testování bez problému stačí velikost B1. Pro produkční prostředí nebo větší aplikace doporučuji Standard nebo Premium plány. I základní B1 plán má ale garanci dostupnosti 99,95 %, což je typicky víc, než vám je schopný nabídnout běžný lokální provider v rámci webhostingu, kteří obvykle uvádí běžnou dostupnost, ale bez jakýchkoliv garancí. Samozřejmě i tento základní plán podporuje vlastní domény, HTTPS, manuální škálování apod.

Vytvoření databáze v Azure pro WordPress

Stejně jako v případě webové aplikace vytvoříme i databázi. Najdeme ji v dostupných službách pod názvem Azure Database for MySQL. Vybereme opět subskripci a zvolíme stejnou resource group, jakou jsme použili pro webovou aplikaci. Nastavíme jméno databázového serveru, uživatelské jméno admina a zadáme dvakrát heslo. Lokaci pro databázi zvolte stejnou jako u webové aplikace kvůli latenci. Verzi databáze zvolte 8.0.

Velikost databázového serveru by pro běžné aplikace měla stačit základní, tedy Basic s jedním procesorovým jádrem a 5 GB kapacitou databáze. Volitelně můžete nastavit dobu uchovávání záloh databáze.

Konfigurace Azure Web App pro WordPress

Když máme webovou aplikaci již vytvořenou, podíváme se na možnosti konfigurace. Můžete si všimnout, že vytvořením první aplikace nám vznikly dva zdroje – App Service plan a App Service.

Nastavení Azure App Service plan

Azure App Service plan je SKU, kterou platíte. Je to v podstatě zakoupený výkon v Azure. V rámci tohoto výkonu si můžete založit libovolné množství aplikací – záleží jen na tom, jak moc zakoupených zdrojů vaše aplikace využívají. Jedná se především o kapacitu úložiště a výpočetní výkon v podobě procesorového času (v Azure Web App označované jako ACU – Azure Compute Unit) a operační paměti.

V nastavení App Service plan vidíte jednak všechny aplikace přiřazené k tomuto plánu a využitý prostor úložiště v rámci všech aplikací. Máte ale také možnost změnit nastavení škálování jak do šířky (počet instancí), tak i do výšky (velikost instancí) obsluhujících daný App Service plan.

Nastavení Azure App Service

Azure App Service jsou již jednotlivé aplikace, které v Azure běží. Typicky jsou to jednotlivé weby, které v Azure máte hostované. Nastavení je zde mnoho, popsat vše by bylo na samostatný článek, tak snad někdy příště 🙂 Zaměřím se tedy na nastavení, které je důležité nebo nutné pro běh WordPress.

Deployment Center

V záložce Deployment Center je potřeba nakonfigurovat možnosti nasazení webové aplikace. Nejuniverzálnější je FTP, pro které musíme nastavit přihlašovací údaje. Dále je k dispozici Azure DevOps Service (dříve známé jako VSTS), GitHub, BitBucket nebo Local Git.

Configuration – Application settings

Důležité nastavení se nachází na záložce Configuration. Zde v rámci Application Settings musíme nastavit cestu k certifikátu autority, která vydala certifikát pro šifrování spojení k MySQL serveru. Související informace lze najít v článku Šifrované spojení k databázi v Admineru. Jméno daného nastavení je MYSQL_SSL_CA, hodnota pro nastavení je absolutní cesta ke staženému certifikátu autority, takže například /site/wwwroot/bin/cert.pem. Bez této konfigurace by nefungovalo šifrované spojení k databázi, které budeme vynucovat v konfiguraci databázového serveru.

Níže pak nastavíme Connection string pro připojení k databázi. Tohle není nezbytně nutné – je možné to nastavit přímo v souboru wp-config.php ve zdrojových souborech WordPressu, ale ukládat přihlašovací údaje k databázi v čitelné podobě v konfiguračních souborech je velmi nevhodné z pohledu bezpečnosti. Každý, kdo získá přístup k souborům, se dostane i čitelným přihlašovacím údajům do databáze, což je velké bezpečnostní riziko. Proto nastavíme údaje do proměnných v rámci connection stringu a ze souboru wp-config je jenom načteme, což je výrazně bezpečnější. Úplně optimální by bylo využít Azure KeyVault, ale o tom zase jindy 🙂 Vytvoříme tedy nový Connection string a libovolně ho pojmenujeme. Typ connection stringu je MySQL. Hodnota connection stringu bude mít následující podobu:

Database je jméno databáze v rámci daného databázového serveru. Data source je adresa databázového serveru. User Id je uživatelské jméno uživatele, který má práva pro potřebné operace s definovanou databází a Password je heslo daného uživatele. Postup, jak vytvořit databázi, popisuji níže v tomto článku.

Configuration – General settings

Na záložce General settings můžeme změnit verzi PHP, pokud by aktuálně nastavená verze způsobovala nějaké problémy. Dále musíme nastavit FTP, abychom to mohli použít pro kopírování dat – doporučuji vynutit šifrované FTPS. HTTP verzi doporučuji nastavit na 2.0 (modernější verze umožňující paralelní zpracovávání požadavků). Always on nastavte na On (nechceme službu pozastavit v případě neaktivity).

Custom domains

Pokud chcete používat vlastní doménu, je potřeba ji přidat v nastavení Custom domains. Můžete přidat více domén, případně subdomén. U každé domény je před přidáním nutné potvrdit její vlastnictví prostřednictvím TXT záznamu.

Dále je zde možné také vynutit HTTPS (nastavení HTTPS Only na On), což doporučuji.

TLS/SSL settings

Na této stránce není nutné nic měnit, ale doporučuji nastavit HTTPS Only na On a Minimum TLS Version na 1.2 (starší nejsou již považované za zcela bezpečné).

Konfigurace Azure Database for MySQL pro WordPress

U nastavení databáze není potřeba velkých změn. Nejdůležitější je povolit připojení do databáze ze služeb Azure, protože jinak se ani naše webová aplikace nepřipojí.

Connection security

V části Firewall rules je potřeba změnit nastavení Allow access to Azure services na On. Tím povolíme přístup ze všech Azure služeb na firewall našeho databázového serveru, což ale není nijak velký problém, protože přístup je chráněný silným heslem a provoz na server je monitorován.

V SSL settings doporučuji vynutit šifrování spojení nastavením Enforce SSL connection na Enabled.

Vytvoření databáze pro WordPress

Máme připravený databázový server, ale nemáme žádnou databázi. Databázi můžeme vytvořit jednoduše například přes Adminer, viz můj předchozí článek. V něm do SQL příkazu zadáme následující příkazy

Nastavení WordPress pro Azure

Tím máme hotové nastavení samotných služeb v Azure. Zbývá jen nakopírovat zdrojové soubory WordPress přes FTP a upravit soubor wp-config.php tak, aby se dokázal připojit bezpečně k naší databázi v Azure.

Na FTP musíme nakopírovat i certifikát certifikační autority, která vydala certifikát pro šifrování spojení do Azure MySQL. Postup je popsaný přímo v dokumentaci. Cesta k certifikátu na FTP musí odpovídat cestě definované v Configuration – Application settings.

Nastavení wp-config pro Azure webové aplikace

Protože jsem měl při prvním pokusu problém s nekonečným přesměrováním, dal jsem do wp-config.php souboru následující

Aby fungovalo šifrované spojení do databáze, je potřeba do souboru wp-config.php přidat následující

Aby fungovalo samotné spojení do databáze, je potřeba definovat údaje pro připojení, tedy název databáze, uživatelské jméno, heslo a adresa databázového serveru

Díky kódu výše jsme definovali parametry pro připojení k databázi, aniž bychom je museli psát v čitelné podobě přímo do zdrojového kódu.

Azure Web App ve výchozím stavu umožňuje upload souborů o velikosti maximálně 2 MB. Nejjednodušším způsobem, jak můžete nastavit upload větších souborů pro jedno aplikaci, je přes .htaccess soubor, do kterého vložíme následující

Nadšenec do nových technologií se zájmem primárně o technologie a služby společnosti Microsoft. Občasný blogger a cestovatel.

Komentáře 0
Nejsou zde žádné komentáře.