Dela via


Självstudie: Skapa en PHP-app (Laravel) och Azure Database for MySQL – flexibel serverapp i Azure App Service

GÄLLER FÖR: Azure Database for MySQL – flexibel server

Azure App Service tillhandahåller en mycket skalbar webbvärdtjänst med självkorrigering med hjälp av Linux-operativsystemet. Den här självstudien visar hur du skapar en säker PHP-app i Azure App Service som är ansluten till en MySQL-databas (med azure database for MySQL – flexibel server). När du är klar har du en Laravel-app som körs på Azure App Service i Linux.

Skärmbild av Azure-appexemplet med titeln Uppgiftslista som visar nya aktiviteter som lagts till.

I den här självstudien lär du dig att:

  • Skapa en SÄKER PHP- och MySQL-app som standard i Azure
  • Konfigurera anslutningshemligheter till MySQL med hjälp av appinställningar
  • Distribuera programkod med GitHub Actions
  • Uppdatera och distribuera om appen
  • Köra databasmigreringar på ett säkert sätt
  • strömma diagnostikloggar från Azure
  • hantera appen i Azure-portalen.

Förutsättningar

Programexempel

Om du vill följa med i den här självstudien klonar eller laddar du ned exempelprogrammet från lagringsplatsen:

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

Om du vill köra programmet lokalt gör du följande:

  • I .env konfigurerar du databasinställningarna (till exempel DB_DATABASE, DB_USERNAMEoch DB_PASSWORD) med inställningarna i din lokala azure database for MySQL – flexibel serverdatabas. Du behöver en lokal Azure Database for MySQL flexibel serverinstans för att köra det här exemplet.

  • Starta Laravel från lagringsplatsens rot med följande kommandon:

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

1 – Skapa flexibla serverresurser för App Service och Azure Database for MySQL

I det här steget skapar du Azure-resurserna. Stegen som används i den här självstudien skapar en flexibel Serverkonfiguration för App Service och Azure Database for MySQL som är säker som standard. För skapandeprocessen anger du:

  • Webbappens namn . Det är namnet som används som en del av DNS-namnet för din webbapp i form av https://<app-name>.azurewebsites.net.
  • Körningen för appen. Det är där du väljer vilken version av PHP som ska användas för din app.
  • Resursgruppen för appen. Med en resursgrupp kan du gruppera (i en logisk container) alla Azure-resurser som behövs för programmet.

Logga in på Azure-portalen och följ dessa steg för att skapa dina Azure App Service-resurser.

Instruktioner Skärmbild
I Azure-portalen:
  1. Ange "webbappdatabas" i sökfältet överst i Azure-portalen.
  2. Välj objektet webapp + databas under rubriken Marketplace .
Du kan också navigera till guiden för att skapa direkt.
En skärmbild som visar hur du använder sökrutan i det övre verktygsfältet för att hitta guiden Skapa webbapp + databas.
På sidan Skapa webbapp + databas fyller du i formuläret på följande sätt.
  1. Resursgrupp → Välj Skapa ny och använd namnet msdocs-laravel-mysql-tutorial.

  2. Region → Valfri Azure-region nära dig.

  3. Namnmsdocs-laravel-mysql-XYZ där XYZ är tre slumpmässiga tecken. Användarnamnet måste vara unikt inom Azure.

  4. KörningsstackenPHP 8.0.

    MySQL – Flexibel server väljs som standard som databasmotor. Azure Database for MySQL är en fullständigt hanterad MySQL-databas som en tjänst i Azure, kompatibel med de senaste community-utgåvorna.

  5. Observera databasnamnet som genereras åt dig (app-name-database>).< Du behöver det senare.

  6. Klicka på Granska och skapa.

När verifieringen är klar klickar du på Skapa.
En skärmbild som visar hur du konfigurerar en ny app och databas i guiden Webbapp + Databas.
Distributionen tar några minuter att slutföra och skapar följande resurser:
  • Resursgrupp → Containern för alla skapade resurser.
  • App Service-plan → Definierar beräkningsresurserna för App Service. En Linux-plan på P1v2-nivån skapas.
  • App Service → Representerar din app och körs i App Service-planen.
  • Virtuellt nätverk → integrerat med App Service-appen och isolerar serverdelsnätverkstrafik.
  • Azure Database for MySQL – Flexibel server → endast tillgänglig från det virtuella nätverket. En databas och en användare skapas åt dig på servern.
  • Privat DNS-zon → Aktiverar DNS-matchning för MySQL-databasservern i det virtuella nätverket.
När distributionen är klar klickar du på knappen Gå till resurs . Du tas direkt till App Service-appen.
En skärmbild som visar formuläret som ska fyllas i för att skapa en webbapp i Azure.

2 – Konfigurera databasanslutning

Skapandeguiden genererade appinställningar som du kan använda för att ansluta till databasen, men inte i ett format som kan användas för din kod ännu. I det här steget redigerar och uppdaterar du appinställningarna till det format som din app behöver.

Instruktioner Skärmbild
På sidan App Service går du till den vänstra menyn och väljer Konfiguration. En skärmbild som visar hur du öppnar konfigurationssidan i App Service.
På fliken Programinställningar på sidan Konfiguration klickar du på Redigera för var och en av följande inställningar, uppdaterar fältet Namn med nya värden och klickar på OK.
Aktuellt namn Nytt namn
AZURE_MYSQL_DBNAME DB_DATABASE
AZURE_MYSQL_HOST DB_HOST
AZURE_MYSQL_USERNAME DB_USERNAME
AZURE_MYSQL_PASSWORD DB_PASSWORD
En skärmbild som visar hur du ser den automatiskt genererade niska veze.
Skapa en ny MYSQL_ATTR_SSL_CA databasinställning:
  1. Klicka på Ny programinställning.

  2. I fältet Namn anger du MYSQL_ATTR_SSL_CA.

  3. I fältet Värde anger du /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem.

    Den här appinställningen pekar på sökvägen till det TLS/SSL-certifikat som du behöver för att komma åt MySQL-servern. Det ingår i exempellagringsplatsen för enkelhetens skull.

  4. Klicka på OK.

En skärmbild som visar hur du skapar en appinställning.
Skapa följande extra appinställningar genom att följa samma steg och klicka sedan på Spara.
  • APP_DEBUG: Använd true som värde. Det här är en Laravel-felsökningsvariabel.

  • APP_KEY: Använd base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= som värde. Det här är en Laravel-krypteringsvariabel.

    Viktigt!

    Det här APP_KEY värdet används här för enkelhetens skull. För produktionsscenarier bör den genereras specifikt för distributionen med hjälp av php artisan key:generate --show kommandoraden.

En skärmbild som visar alla nödvändiga appinställningar på konfigurationssidan.

3 – Distribuera exempelkod

I det här steget konfigurerar du GitHub-distribution med GitHub Actions. Det är bara ett av många sätt att distribuera till App Service, men också ett bra sätt att ha kontinuerlig integrering i distributionsprocessen. Som standard startar varje git push till din GitHub-lagringsplats bygg- och distributionsåtgärden. Du kommer att göra några ändringar i din kodbas med Visual Studio Code direkt i webbläsaren och sedan låta GitHub Actions distribueras automatiskt åt dig.

Instruktioner Skärmbild
I ett nytt webbläsarfönster:
  1. Logga in på ditt GitHub-konto.

  2. Navigera till https://github.com/Azure-Samples/laravel-tasks.

  3. Klicka på Förgrening.

  4. Klicka på Skapa förgrening.

En skärmbild som visar hur du skapar en förgrening av GitHub-exempellagringsplatsen.
På GitHub-sidan öppnar du Visual Studio Code i webbläsaren genom att trycka på . nyckeln. En skärmbild som visar hur du öppnar Visual Studio Code-webbläsarupplevelsen i GitHub.
Öppna konfiguration/database.php i utforskaren i Visual Studio Code i webbläsaren. mysql I anslutningen ser du att appinställningarna som du skapade tidigare för MySQL-anslutningen redan används (DB_HOST, , DB_DATABASEDB_USERNAME, DB_PASSWORD, MYSQL_ATTR_SSL_CA). En skärmbild som visar Visual Studio Code i webbläsaren och en öppnad fil.
På sidan App Service går du till den vänstra menyn och väljer Distributionscenter. En skärmbild som visar hur du öppnar distributionscentret i App Service.
På sidan Distributionscenter:
  1. I Källa väljer du GitHub. Som standard är GitHub Actions valt som byggprovider.

  2. Logga in på ditt GitHub-konto och följ anvisningarna för att auktorisera Azure.

  3. I Organisation väljer du ditt konto.

  4. I Lagringsplats väljer du laravel-tasks.

  5. I Gren väljer du huvud.

  6. I den översta menyn klickar du på Spara.

App Service checkar in en arbetsflödesfil i den valda GitHub-lagringsplatsen i .github/workflows katalogen.
En skärmbild som visar hur du konfigurerar CI/CD med GitHub Actions.
På sidan Distributionscenter:
  1. Välj Loggar. En distributionskörning har redan startats.

  2. I loggobjektet för distributionskörningen väljer du Skapa/distribuera loggar.

    Du tas till din GitHub-lagringsplats och ser att GitHub-åtgärden körs. Arbetsflödesfilen definierar två separata steg, skapa och distribuera.

En skärmbild som visar hur du öppnar distributionsloggar i distributionscentret.
Om du vill göra ändringar i koden går du till Visual Studio Code i webbläsaren:
  1. Välj källkontrolltillägget.

  2. Bredvid den ändrade filen, till exempel database.php, väljer du + för att mellanlagra ändringarna.

  3. I textrutan skriver du ett incheckningsmeddelande, till exempel add certificate.

  4. Markera bockmarkeringen för att checka in och skicka till GitHub.

Om du går tillbaka till sidan Distributionscenter visas en ny loggpost eftersom en annan körning har startats. Vänta tills körningen är klar. Det tar ungefär 15 minuter.

Dricks

GitHub-åtgärden definieras av filen på din GitHub-lagringsplats i .github/workflow. Du kan göra det snabbare genom att anpassa filen.

En skärmbild som visar hur du checkar in dina ändringar i Visual Studio Code-webbläsarupplevelsen.

4 – Generera databasschema

Guiden skapa placerar Azure Database for MySQL flexibel serverinstans bakom en privat slutpunkt, så den är endast tillgänglig från det virtuella nätverket. Eftersom App Service-appen redan är integrerad med det virtuella nätverket är det enklaste sättet att köra databasmigreringar med databasen direkt från App Service-containern.

Instruktioner Skärmbild
På sidan App Service:
  1. Välj SSH på den vänstra menyn.

  2. Välj .

En SSH-session med din App Service-container öppnas i webbläsaren. Om du vill kan du navigera direkt till https://<app-name>.scm.azurewebsites.net/webssh/host i stället.
En skärmbild som visar hur du öppnar SSH-gränssnittet för din app från Azure-portalen.
I SSH-terminalen:
  1. CD till roten av programkoden:

    cd /home/site/wwwroot
    
  2. Kör databasmigreringar från programroten.

    php artisan migrate --force
    

    Kommentar

    Endast ändringar i filer i /home kan bevaras utöver omstarter av appar. Ändringar utanför /home sparas inte.

En skärmbild som visar kommandona som ska köras i SSH-gränssnittet och deras utdata.

5 – Ändra platsrot

Laravel-programmets livscykel börjar i katalogen /public i stället. Standardcontainern PHP 8.0 för App Service använder Nginx, som startar i programmets rotkatalog. Om du vill ändra platsroten måste du ändra Nginx-konfigurationsfilen i PHP 8.0-containern (/etc/nginx/sites-available/default). För din bekvämlighet innehåller exempellagringsplatsen en anpassad konfigurationsfil som kallas standard. Som tidigare nämnts vill du inte ersätta den här filen med hjälp av SSH-gränssnittet, eftersom dina ändringar kommer att gå förlorade efter en omstart av appen.

Instruktioner Skärmbild
På sidan App Service:
  1. Välj Konfiguration på den vänstra menyn.

  2. Välj fliken Allmänt inställningar.

En skärmbild som visar hur du öppnar fliken Allmänna inställningar på konfigurationssidan för App Service.
På fliken Allmänna inställningar:
  1. I rutan Startkommando anger du följande kommando: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.

    Den ersätter Nginx-konfigurationsfilen i PHP 8.0-containern och startar om Nginx. Den här konfigurationen säkerställer att den här ändringen görs i containern varje gång den startas.

  2. Välj Spara.

En skärmbild som visar hur du konfigurerar ett startkommando i App Service.

6 – Bläddra till appen

Instruktioner Skärmbild
På sidan App Service:
  1. Välj Översikt på den vänstra menyn.

  2. Välj appens URL.

    Du kan också navigera direkt till https://<app-name>.azurewebsites.net.

En skärmbild som visar hur du startar en App Service från Azure-portalen.
Lägg till några uppgifter i listan. Grattis, du kör en datadriven PHP-app i Azure App Service. En skärmbild av Laravel-appen som körs i App Service.

7 – Strömma diagnostikloggar

Instruktioner Skärmbild
På sidan App Service:
  1. Välj App Service-loggar på den vänstra menyn.

  2. Under Programloggning väljer du Filsystem.

En skärmbild som visar hur du aktiverar interna loggar i App Service i Azure-portalen.
På den vänstra menyn klickar du på Loggström. Du ser loggarna för din app, inklusive plattformsloggar och loggar inifrån containern. En skärmbild som visar hur du visar loggströmmen i Azure-portalen.

Rensa resurser

När du är klar kan du ta bort alla resurser från din Azure-prenumeration genom att ta bort resursgruppen.

Instruktioner Skärmbild
I sökfältet överst i Azure-portalen:
  1. Ange resursgruppsnamnet.

  2. Välj resursgruppen.

En skärmbild som visar hur du söker efter och navigerar till en resursgrupp i Azure-portalen.
På resursgruppssidan klickar du på Ta bort resursgrupp. En skärmbild som visar platsen för knappen Ta bort resursgrupp i Azure-portalen.
  1. Ange resursgruppens namn för att bekräfta borttagningen.

  2. Klicka på Ta bort.

En skärmbild av bekräftelsedialogrutan för att ta bort en resursgrupp i Azure-portalen.

Vanliga frågor och svar

Hur mycket kostar den här installationen?

Prissättningen för skapa resurser är följande:

  • App Service-planen skapas på Premium V2-nivå och kan skalas upp eller ned. Se Priser för App Service.
  • Azure Database for MySQL– flexibel serverinstans skapas på B1ms-nivå och kan skalas upp eller ned. Med ett kostnadsfritt Azure-konto är B1ms-nivån kostnadsfri i 12 månader, upp till månadsgränserna. Se prissättningen för azure database for MySQL – flexibel server.
  • Det virtuella nätverket debiteras inte om du inte konfigurerar extra funktioner, till exempel peering. Se Priser för Azure Virtual Network.
  • Den privata DNS-zonen medför en liten avgift. Se Priser för Azure DNS.

Hur ansluter jag till en flexibel Azure Database for MySQL-serverdatabas som skyddas bakom ett virtuellt nätverk?

Om du vill ansluta till en flexibel Azure Database for MySQL-serverdatabas kan du använda flera metoder baserat på de verktyg och miljöer som står till ditt förfogande:

  • Åtkomst till kommandoradsverktyget:
    • mysql Använd kommandot från appens SSH-terminal för grundläggande åtkomst.
  • Skrivbordsverktyg (till exempel MySQL Workbench):
    • Använda SSH-tunnlar med Azure CLI:
      • Skapa en SSH-session till webbappen med hjälp av Azure CLI.
      • Använd SSH-sessionen för att dirigera trafiken till MySQL.
    • Använda plats-till-plats-VPN eller virtuell Azure-dator:
      • Datorn måste vara en del av det virtuella nätverket.
      • Överväg att använda:
        • En virtuell Azure-dator som är länkad till ett av undernäten.
        • En dator i ett lokalt nätverk som har en plats-till-plats VPN-anslutning till det virtuella Azure-nätverket.
  • Azure Cloud Shell-integrering:

Hur fungerar utveckling av lokala appar med GitHub Actions?

Ta den autogenererade arbetsflödesfilen från App Service som exempel. Var git push och en startar en ny version och distributionskörning. Från en lokal klon av GitHub-lagringsplatsen får du önskade uppdateringar att skicka den till GitHub. Till exempel:

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

Varför är GitHub Actions-distributionen så långsam?

Den autogenererade arbetsflödesfilen från App Service definierar build-then-deploy, two-job run. Eftersom varje jobb körs i en egen ren miljö ser arbetsflödesfilen till att deploy jobbet har åtkomst till filerna från build jobbet:

Merparten av den tid det tar för tvåjobbsprocessen är att ladda upp och ladda ned artefakter. Om du vill kan du förenkla arbetsflödesfilen genom att kombinera de två jobben till ett, vilket eliminerar behovet av uppladdnings- och nedladdningsstegen.

Sammanfattning

I den här självstudiekursen lärde du dig att:

  • Skapa en säker PHP- och Azure Database for MySQL-flexibel serverapp som standard i Azure
  • Konfigurera anslutningshemligheter för Azure Database for MySQL – flexibel server med hjälp av appinställningar
  • Distribuera programkod med GitHub Actions
  • Uppdatera och distribuera om appen
  • Köra databasmigreringar på ett säkert sätt
  • strömma diagnostikloggar från Azure
  • hantera appen i Azure-portalen.

Nästa steg