Sdílet prostřednictvím


Kurz: Nasazení aplikace PHP, MySQL a Redis do služby Aplikace Azure Service

V tomto kurzu se dozvíte, jak vytvořit zabezpečenou aplikaci PHP ve službě Aplikace Azure, která je připojená k databázi MySQL (pomocí flexibilního serveru Azure Database for MySQL). Nasadíte také Azure Cache for Redis, abyste ve své aplikaci povolili kód ukládání do mezipaměti. Aplikace Azure Service je vysoce škálovatelná služba samoobslužných oprav, která umožňuje snadné nasazování aplikací ve Windows nebo Linuxu. Až budete hotovi, budete mít aplikaci Laravel spuštěnou ve službě Aplikace Azure Service v Linuxu.

Snímek obrazovky s příkladem aplikace Azure s názvem Seznam úkolů zobrazující přidané nové úkoly

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Ukázková aplikace

Pokud chcete postupovat podle tohoto kurzu, naklonujte nebo stáhněte ukázkovou aplikaci Laravel z úložiště:

git clone https://github.com/Azure-Samples/laravel-tasks.git

Pokud chcete aplikaci spustit místně, postupujte takto:

  • V souboru .env nakonfigurujte nastavení databáze (například DB_DATABASEDB_USERNAME, aDB_PASSWORD) pomocí nastavení v místní databázi MySQL. Ke spuštění této ukázky potřebujete místní server MySQL.

  • V kořenovém adresáři úložiště spusťte Laravel následujícími příkazy:

    composer install
    php artisan migrate
    php artisan key:generate
    php artisan serve
    

1. Vytvoření prostředků App Service a MySQL

V tomto kroku vytvoříte prostředky Azure. Kroky použité v tomto kurzu vytvoří konfiguraci služby App Service a Azure Database for MySQL, která je ve výchozím nastavení zabezpečená. Pro proces vytváření zadáte:

  • Název webové aplikace. Jedná se o název, který se používá jako součást názvu DNS pro webovou aplikaci ve formě https://<app-name>.azurewebsites.net.
  • Modul runtime aplikace. Tady vyberete verzi PHP, kterou chcete použít pro vaši aplikaci.
  • Skupina prostředků pro aplikaci. Skupina prostředků umožňuje seskupovat (v logickém kontejneru) všechny prostředky Azure potřebné pro aplikaci.

Přihlaste se k webu Azure Portal a podle těchto kroků vytvořte prostředky služby Aplikace Azure Service.

Krok 1: Na webu Azure Portal:

  1. Do vyhledávacího panelu v horní části webu Azure Portal zadejte "databáze webové aplikace".
  2. Vyberte položku s popiskem Web App + Database pod nadpisem Marketplace . Můžete také přejít přímo do průvodce vytvořením.

Snímek obrazovky znázorňující použití vyhledávacího pole v horním panelu nástrojů k vyhledání průvodce vytvořením webové aplikace a databáze

Krok 2: Na stránce Vytvořit webovou aplikaci a databázi vyplňte formulář následujícím způsobem.

  1. Skupina prostředků → Vyberte vytvořit novou a použijte název msdocs-laravel-mysql-tutorial.
  2. Oblast → Libovolná oblast Azure blízko vás.
  3. Názevmsdocs-laravel-mysql-XYZ , kde XYZ je libovolný tři náhodné znaky. Tento název musí být v rámci služby Azure jedinečný.
  4. Zásobník modulu runtime → PHP 8.2.
  5. Přidat Azure Cache for Redis? → Ano.
  6. Plán hostování → Basic. Až budete připraveni, můžete později vertikálně navýšit kapacitu na cenovou úroveň produkčního prostředí.
  7. Flexibilní server MySQL je ve výchozím nastavení vybraný jako databázový stroj. Azure Database for MySQL je plně spravovaná databáze MySQL jako služba v Azure, která je kompatibilní s nejnovějšími komunitními edicemi.
  8. Vyberte Zkontrolovat a vytvořit.
  9. Po dokončení ověření vyberte Vytvořit.

Snímek obrazovky znázorňující, jak nakonfigurovat novou aplikaci a databázi v průvodci webovou aplikací a databází

Krok 3: Dokončení nasazení trvá několik minut. Po dokončení nasazení vyberte tlačítko Přejít k prostředku . Přejdete přímo do aplikace App Service, ale vytvoří se následující prostředky:

  • Skupina prostředků → Kontejner pro všechny vytvořené prostředky.
  • Plán služby App Service → Definuje výpočetní prostředky služby App Service. Vytvoří se plán Linuxu na úrovni Basic .
  • → App Service Představuje vaši aplikaci a běží v plánu služby App Service.
  • Virtuální síť → integrovaná s aplikací App Service a izoluje back-endový síťový provoz.
  • Privátní koncové body → koncových bodů přístupu pro databázový server a mezipaměť Redis ve virtuální síti.
  • Síťová rozhraní → Představuje privátní IP adresy, jednu pro každý privátní koncový bod.
  • Flexibilní server Azure Database for MySQL → přístupný pouze ze svého privátního koncového bodu. Databáze a uživatel se pro vás vytvoří na serveru.
  • Azure Cache for Redis → Přístupná pouze ze svého privátního koncového bodu.
  • Privátní DNS zón → Povolit překlad DNS databázového serveru a mezipaměti Redis ve virtuální síti.

Snímek obrazovky znázorňující dokončení procesu nasazení

2. Nastavení připojení k databázi

Krok 1: Na stránce služby App Service v nabídce vlevo vyberte Konfigurace.

Snímek obrazovky znázorňující, jak otevřít stránku konfigurace ve službě App Service

Krok 2:

  1. Vyhledejte nastavení aplikace, která začínají AZURE_MYSQL_. Vygenerovaly se z nové databáze MySQL průvodce vytvořením.
  2. Vyhledejte také nastavení aplikace, která začínají AZURE_REDIS_. Byly generovány z nové mezipaměti Redis průvodcem vytvořením. K nastavení aplikace je tento název vše, co potřebujete.
  3. Pokud chcete, můžete vybrat tlačítko Upravit napravo od každého nastavení a zobrazit nebo zkopírovat jeho hodnotu. Později změníte kód aplikace tak, aby používal tato nastavení.

Snímek obrazovky znázorňující, jak vytvořit nastavení aplikace

Krok 3: Na kartě Nastavení aplikace na stránce Konfigurace vytvořte CACHE_DRIVER nastavení:

  1. Vyberte Nové nastavení aplikace.
  2. Do pole Název zadejte CACHE_DRIVER.
  3. Do pole Hodnota zadejte redis.
  4. Vyberte OK. CACHE_DRIVER je již používán v kódu aplikace Laravel. Toto nastavení říká Laravelu, aby jako mezipaměť používal Redis.

Snímek obrazovky znázorňující, jak zobrazit automaticky vygenerovaný připojovací řetězec

Krok 4: Pomocí stejných kroků v kroku 3 vytvořte následující nastavení aplikace:

  • MYSQL_ATTR_SSL_CA: Jako hodnotu použijte /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem. Toto nastavení aplikace odkazuje na cestu certifikátu TLS/SSL, který potřebujete pro přístup k serveru MySQL. Je součástí ukázkového úložiště, které vám usnadní práci.
  • LOG_CHANNEL: Jako hodnotu použijte stderr. Toto nastavení říká Laravelu, aby směrovat protokoly do stderru, což zpřístupňuje protokoly služby App Service.
  • APP_DEBUG: Jako hodnotu použijte true. Jedná se o laravelovou ladicí proměnnou, která umožňuje stránky režimu ladění.
  • APP_KEY: Jako hodnotu použijte base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= . Jedná se o šifrovací proměnnou Laravel.
  1. V řádku nabídek v horní části vyberte Uložit.
  2. Po zobrazení výzvy vyberte Pokračovat.

Snímek obrazovky znázorňující, jak uložit nastavení na stránce konfigurace

Důležité

Tato APP_KEY hodnota se zde používá pro usnadnění. V produkčních scénářích by se měla generovat speciálně pro vaše nasazení pomocí php artisan key:generate --show příkazového řádku.

3. Nasazení ukázkového kódu

V tomto kroku nakonfigurujete nasazení GitHubu pomocí GitHub Actions. Je to jen jeden z mnoha způsobů nasazení do služby App Service, ale také skvělý způsob, jak mít kontinuální integraci v procesu nasazení. Ve výchozím nastavení spustí každá git push z vašich úložišť GitHub akci sestavení a nasazení. Pomocí editoru Visual Studio Code provedete určité změny přímo v prohlížeči a pak necháte GitHub Actions nasadit automaticky za vás.

Krok 1: V novém okně prohlížeče:

  1. Přihlaste se k účtu GitHub.
  2. Přejděte na https://github.com/Azure-Samples/laravel-tasks.
  3. Vyberte Fork.
  4. Vyberte Vytvořit fork.

Snímek obrazovky znázorňující, jak vytvořit fork ukázkového úložiště GitHub

Krok 2: Na stránce GitHubu otevřete Visual Studio Code v prohlížeči stisknutím klávesy . .

Snímek obrazovky znázorňující, jak otevřít prostředí prohlížeče editoru Visual Studio Code na GitHubu

Krok 3: V editoru Visual Studio Code v prohlížeči otevřete konfiguraci/database.php v průzkumníku. mysql Najděte oddíl a proveďte následující změny:

  1. Nahraďte DB_HOST AZURE_MYSQL_HOST.
  2. Nahraďte DB_DATABASE AZURE_MYSQL_DBNAME.
  3. Nahraďte DB_USERNAME AZURE_MYSQL_USERNAME.
  4. Nahraďte DB_PASSWORD AZURE_MYSQL_PASSWORD.
  5. Nahraďte DB_PORT AZURE_MYSQL_PORT. Nezapomeňte, že tato AZURE_MYSQL_ nastavení pro vás vytvořil průvodce vytvořením.

Snímek obrazovky znázorňující Visual Studio Code v prohlížeči a otevřený soubor s upravenými proměnnými MySQL

Krok 4: V konfiguraci/database.php přejděte do oddílu Redis cache a proveďte následující změny:

  1. Nahraďte REDIS_HOST AZURE_REDIS_HOST.
  2. Nahraďte REDIS_PASSWORD AZURE_REDIS_PASSWORD.
  3. Nahraďte REDIS_PORT AZURE_REDIS_PORT.
  4. Nahraďte REDIS_CACHE_DB AZURE_REDIS_DATABASE.
  5. Ve stejné části přidejte řádek s 'scheme' => 'tls',. Tato konfigurace říká Laravelu, aby používal šifrování pro připojení k Redisu. Nezapomeňte, že tato AZURE_REDIS_ nastavení pro vás vytvořil průvodce vytvořením.

Snímek obrazovky znázorňující Visual Studio Code v prohlížeči a otevřený soubor s upravenými proměnnými Redis

Krok 5:

  1. Vyberte rozšíření správy zdrojového kódu .
  2. Do textového pole zadejte zprávu potvrzení, například Configure DB & Redis variables.
  3. Vyberte Potvrdit a nasdílení změn.

Snímek obrazovky znázorňující potvrzené a nasdílené změny do GitHubu

Krok 6: Zpět na stránce služby App Service v nabídce vlevo vyberte Deployment Center.

Snímek obrazovky znázorňující, jak otevřít centrum nasazení ve službě App Service

Krok 7: Na stránce Deployment Center:

  1. Ve zdroji vyberte GitHub. Ve výchozím nastavení je jako zprostředkovatel sestavení vybrán GitHub Actions .
  2. Přihlaste se ke svému účtu GitHub a postupujte podle pokynů k autorizaci Azure.
  3. V organizaci vyberte svůj účet.
  4. V úložišti vyberte laravel-task.
  5. Ve větvi vyberte hlavní.
  6. V horní nabídce vyberte Uložit. App Service potvrdí soubor pracovního postupu do zvoleného úložiště GitHub v .github/workflows adresáři.

Snímek obrazovky znázorňující, jak nakonfigurovat CI/CD pomocí GitHub Actions

Krok 8: Na stránce Deployment Center:

  1. Vyberte Protokoly. Spuštění nasazení je již spuštěno.
  2. V položce protokolu pro spuštění nasazení vyberte Sestavit/Nasadit protokoly.

Snímek obrazovky znázorňující, jak otevřít protokoly nasazení v centru nasazení

Krok 9: Přejdete do úložiště GitHub a zjistíte, že je spuštěná akce GitHubu. Soubor pracovního postupu definuje dvě samostatné fáze, sestavení a nasazení. Počkejte na spuštění GitHubu, aby se zobrazil stav Dokončeno. Trvá to asi 15 minut.

Snímek obrazovky znázorňující probíhající spuštění GitHubu

4. Generování schématu databáze

Průvodce vytvořením umístí databázový server MySQL za privátní koncový bod, takže je přístupný jenom z virtuální sítě. Vzhledem k tomu, že aplikace App Service je už integrovaná s virtuální sítí, nejjednodušší způsob, jak spouštět migrace databází s vaší databází, je přímo z kontejneru služby App Service.

Krok 1: Zpět na stránce služby App Service v nabídce vlevo vyberte SSH.

Snímek obrazovky znázorňující, jak otevřít prostředí SSH pro vaši aplikaci z webu Azure Portal

Krok 2: V terminálu SSH:

  1. Spusťte cd /home/site/wwwroot. Tady jsou všechny vaše nasazené soubory.
  2. Spusťte php artisan migrate --force. Pokud proběhne úspěšně, služba App Service se úspěšně připojuje k databázi MySQL. Kromě restartování aplikace se můžou zachovat jenom změny v /home souborech. Změny mimo /home jiné se neuchovávají.

Snímek obrazovky znázorňující příkazy pro spuštění v prostředí SSH a jejich výstup

5. Změna kořenového adresáře webu

Životní cyklus aplikace Laravel začíná v adresáři /public . Výchozí kontejner PHP pro App Service používá Nginx, který se spouští v kořenovém adresáři aplikace. Pokud chcete změnit kořen webu, musíte změnit konfigurační soubor Nginx v kontejneru PHP (/etc/nginx/sites-available/default). Pro usnadnění vašeho pohodlí obsahuje ukázkové úložiště vlastní konfigurační soubor s názvem výchozí. Jak už jsme uvedli dříve, nechcete tento soubor nahradit pomocí prostředí SSH, protože změna je mimo /home a po restartování aplikace se ztratí.

Krok 1:

  1. V nabídce vlevo vyberte Konfigurace.
  2. Vyberte kartu Obecné nastavení.

Snímek obrazovky znázorňující, jak otevřít kartu Obecné nastavení na stránce konfigurace služby App Service

Krok 2: Na kartě Obecné nastavení:

  1. Do pole Spouštěcí příkaz zadejte následující příkaz: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.
  2. Zvolte Uložit. Příkaz nahradí konfigurační soubor Nginx v kontejneru PHP a restartuje Nginx. Tato konfigurace zajistí, že při každém spuštění se v kontejneru provede stejná změna.

Snímek obrazovky znázorňující, jak nakonfigurovat spouštěcí příkaz ve službě App Service

6. Přejděte do aplikace.

Krok 1: Na stránce služby App Service:

  1. V nabídce vlevo vyberte Přehled.
  2. Vyberte adresu URL aplikace. Můžete také přejít přímo na https://<app-name>.azurewebsites.net.

Snímek obrazovky znázorňující, jak spustit službu App Service z webu Azure Portal

Krok 2: Přidejte do seznamu několik úkolů. Blahopřejeme, ve službě Aplikace Azure Service spouštíte zabezpečenou aplikaci PHP řízenou daty.

Snímek obrazovky s aplikací Laravel spuštěnou ve službě App Service

Tip

Ukázková aplikace implementuje model doplňování do mezipaměti. Při opětovném načtení stránky po provedení změn dat se doba odezvy na webové stránce zobrazí mnohem rychleji, protože načítá data z mezipaměti místo databáze.

7. Streamování diagnostických protokolů

Aplikace Azure Služba zaznamenává všechny zprávy protokolované do konzoly, aby vám pomohla při diagnostice problémů s vaší aplikací. Ukázková aplikace vypíše zprávy protokolu konzoly ve všech jejích koncových bodech, aby tuto funkci ukázala. Ve výchozím nastavení funkce protokolování Laravelu (například Log::info()) vypíše do místního souboru. Nastavení vaší LOG_CHANNEL aplikace z dřívějších verzí zpřístupňuje položky protokolu ze streamu protokolu služby App Service.

Krok 1: Na stránce služby App Service:

  1. V nabídce vlevo vyberte protokoly služby App Service.
  2. V části Protokolování aplikace vyberte Systém souborů.

Snímek obrazovky znázorňující povolení nativních protokolů ve službě App Service na webu Azure Portal

Krok 2: V nabídce vlevo vyberte Stream protokolu. Zobrazí se protokoly pro vaši aplikaci, včetně protokolů platformy a protokolů z kontejneru.

Snímek obrazovky znázorňující, jak zobrazit stream protokolu na webu Azure Portal

Vyčištění prostředků

Po dokončení můžete odstranit všechny prostředky z předplatného Azure odstraněním skupiny prostředků.

Krok 1: Na panelu hledání v horní části webu Azure Portal:

  1. Zadejte název skupiny prostředků.
  2. Vyberte tuto skupinu prostředků.

Snímek obrazovky znázorňující, jak hledat a přejít na skupinu prostředků na webu Azure Portal

Krok 2: Na stránce skupiny prostředků vyberte Odstranit skupinu prostředků.

Snímek obrazovky znázorňující umístění tlačítka Odstranit skupinu prostředků na webu Azure Portal

Krok 3:

  1. Potvrďte odstranění zadáním názvu skupiny prostředků.
  2. Vyberte Odstranit.

Snímek obrazovky s potvrzovací dialog pro odstranění skupiny prostředků na webu Azure Portal :

Nejčastější dotazy

Kolik stojí toto nastavení?

Ceny pro prostředky vytvoření jsou následující:

  • Plán služby App Service se vytvoří na úrovni Basic a dá se vertikálně navýšit nebo snížit. Podívejte se na ceny služby App Service.
  • Flexibilní server MySQL se vytvoří na úrovni B1ms a dá se vertikálně navýšit nebo snížit. S bezplatným účtem Azure je úroveň B1ms bezplatná po dobu 12 měsíců až do měsíčních limitů. Podívejte se na ceny služby Azure Database for MySQL.
  • Azure Cache for Redis se vytvoří na úrovni Basic s minimální velikostí mezipaměti. K této úrovni jsou spojené malé náklady. Kapacitu můžete vertikálně navýšit na vyšší úroveň výkonu pro vyšší dostupnost, clustering a další funkce. Podívejte se na ceny služby Azure Cache for Redis.
  • Za virtuální síť se neúčtují poplatky, pokud nenakonfigurujete další funkce, jako je partnerský vztah. Podívejte se na ceny služby Azure Virtual Network.
  • Za privátní zónu DNS se účtují malé poplatky. Podívejte se na ceny Azure DNS.

Návody připojit se k databázi MySQL, která je zabezpečená za virtuální sítí pomocí jiných nástrojů?

  • Základní přístup z nástroje příkazového řádku můžete spustit mysql z terminálu SSH aplikace.
  • Pokud se chcete připojit z desktopového nástroje, jako je MySQL Workbench, musí být váš počítač ve virtuální síti. Může to být například virtuální počítač Azure, který je připojený k jedné z podsítí, nebo počítač v místní síti, který má připojení VPN typu site-to-site s virtuální sítí Azure.
  • Azure Cloud Shell můžete také integrovat s virtuální sítí.

Jak místní vývoj aplikací funguje s GitHub Actions?

Jako příklad vezměte automaticky vygenerovaný soubor pracovního postupu ze služby App Service a každý git push spustí nové sestavení a nasazení. Z místního klonu úložiště GitHub provedete požadované aktualizace nasdílení změn do GitHubu. Příklad:

git add .
git commit -m "<some-message>"
git push origin main

Proč je nasazení GitHub Actions tak pomalé?

Automaticky vygenerovaný soubor pracovního postupu ze služby App Service definuje spuštění sestavení a následného nasazení se dvěma úlohami. Vzhledem k tomu, že každá úloha běží ve vlastním čistém prostředí, soubor pracovního postupu zajistí, že deploy má úloha přístup k souborům build z úlohy:

Většinu času potřebných procesem dvou úloh stráví nahráváním a stahováním artefaktů. Pokud chcete, můžete soubor pracovního postupu zjednodušit tím, že zkombinujete dvě úlohy do jedné, což eliminuje potřebu kroků pro nahrávání a stahování.

Další kroky

V dalším kurzu se dozvíte, jak zabezpečit aplikaci pomocí vlastní domény a certifikátu.

Nebo se podívejte na další zdroje informací: