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 på Linux.

Screenshot of the Azure app example titled Task List showing new tasks added.

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.
A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.
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.
A screenshot showing how to configure a new app and database in the Web App + Database wizard.
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.
A screenshot showing the form to fill out to create a web app in 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. A screenshot showing how to open the configuration page in 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
A screenshot showing how to see the autogenerated connection string.
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.

A screenshot showing how to create an app setting.
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.

A screenshot showing all the required app settings in the configuration page.

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.

A screenshot showing how to create a fork of the sample GitHub repository.
På GitHub-sidan öppnar du Visual Studio Code i webbläsaren genom att trycka på . nyckeln. A screenshot showing how to open the Visual Studio Code browser experience in 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). A screenshot showing Visual Studio Code in the browser and an opened file.
På sidan App Service går du till den vänstra menyn och väljer Distributionscenter. A screenshot showing how to open the deployment center in 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.
A screenshot showing how to configure CI/CD using 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.

A screenshot showing how to open deployment logs in the deployment center.
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.

A screenshot showing how to commit your changes in the Visual Studio Code browser experience.

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.
A screenshot showing how to open the SSH shell for your app from the Azure portal.
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.

A screenshot showing the commands to run in the SSH shell and their output.

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.

A screenshot showing how to open the general settings tab in the configuration page of 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.

A screenshot showing how to configure a startup command in 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.

A screenshot showing how to launch an App Service from the Azure portal.
Lägg till några uppgifter i listan. Grattis, du kör en datadriven PHP-app i Azure App Service. A screenshot of the Laravel app running in 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.

A screenshot showing how to enable native logs in App Service in the Azure portal.
På den vänstra menyn klickar du på Loggström. Du ser loggarna för din app, inklusive plattformsloggar och loggar inifrån containern. A screenshot showing how to view the log stream in the Azure portal.

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.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.
På resursgruppssidan klickar du på Ta bort resursgrupp. A screenshot showing the location of the Delete Resource Group button in the Azure portal.
  1. Ange resursgruppens namn för att bekräfta borttagningen.

  2. Klicka på Ta bort.

A screenshot of the confirmation dialog for deleting a resource group in the Azure portal.

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 gör jag för att ansluta 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