Självstudie: Skapa en PHP- och MySQL-app i Azure App Service
Azure App Service tillhandahåller en mycket skalbar, självkorrigeringsbaserad webbvärdtjänst 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.
I den här guiden får du lära 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.
Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt Azure-konto innan du börjar.
Exempelprogram
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_USERNAME
ochDB_PASSWORD
) med hjälp av inställningarna i din lokala MySQL-databas. Du behöver en lokal MySQL-server 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 App Service- och MySQL-resurser
I det här steget skapar du Azure-resurserna. Stegen som används i den här självstudien skapar en App Service och Azure Database for MySQL konfiguration som är säker som standard. För skapandeprocessen anger du:
- Namnet på webbappen. 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 Portal och följ dessa steg för att skapa dina Azure App Service resurser.
Instruktioner | Skärmbild |
---|---|
I Azure-portalen:
|
![]() |
På sidan Skapa webbapp + databas fyller du i formuläret på följande sätt.
|
![]() |
Distributionen tar några minuter att slutföra och skapar följande resurser:
|
![]() |
2 – Konfigurera databasanslutning
Guiden skapade en anslutningssträng till databasen åt dig, men inte i ett format som kan användas för din kod ännu. I det här steget skapar du appinställningar med det format som din app behöver.
Instruktioner | Skärmbild |
---|---|
På sidan App Service går du till menyn till vänster och väljer Konfiguration. | ![]() |
På fliken Programinställningar på sidan Konfiguration skapar du en DB_DATABASE inställning:
|
![]() |
Tillbaka på fliken Programinställningar:
|
![]() |
Skapa följande extra appinställningar genom att följa samma steg för att skapa en appinställning.
|
![]() |
3 – Distribuera exempelkod
I det här steget konfigurerar du GitHub-distribution med hjälp av 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 gör några ändringar i din kodbas med Visual Studio Code direkt i webbläsaren och låter sedan GitHub Actions distribuera automatiskt åt dig.
Instruktioner | Skärmbild |
---|---|
I ett nytt webbläsarfönster:
|
![]() |
På GitHub-sidan öppnar du Visual Studio Code i webbläsaren genom att trycka på tangenten . . |
![]() |
Öppna config/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_DATABASE DB_USERNAME , DB_PASSWORD , ). MYSQL_ATTR_SSL_CA |
![]() |
På sidan App Service väljer du Distributionscenter på den vänstra menyn. | ![]() |
På sidan Distributionscenter:
.github/workflows katalogen . |
![]() |
På sidan Distributionscenter:
|
![]() |
Vänta tills körningen har slutförts. Det tar ungefär 15 minuter.
Tips GitHub-åtgärden definieras av filen på din GitHub-lagringsplats i .github/workflow. Du kan göra det snabbare genom att anpassa filen. |
![]() |
4 – Generera databasschema
Guiden för att skapa placerar MySQL-databasservern 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:
https://<app-name>.scm.azurewebsites.net/webssh/host i stället. |
![]() |
I SSH-terminalen:
|
![]() |
5 – Ändra webbplatsens rot
Laravel-programmets livscykel börjar i katalogen /public i stället. Php 8.0-standardcontainern 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 att underlätta för dig 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.
6 – Bläddra till appen
7 – Strömma diagnostikloggar
Rensa resurser
När du är klar kan du ta bort alla resurser från din Azure-prenumeration genom att ta bort resursgruppen.
Vanliga frågor och svar
- Hur mycket kostar den här installationen?
- Hur gör jag för att ansluta till MySQL-databasen som skyddas bakom det virtuella nätverket med andra verktyg?
- Hur fungerar lokal apputveckling med GitHub Actions?
- Varför är GitHub Actions distributionen så långsam?
Hur mycket kostar den här installationen?
Prissättningen för skapa resurser är följande:
- Den App Service planen skapas på Premium V2-nivå och kan skalas upp eller ned. Se App Service prissättning.
- Den flexibla MySQL-servern skapas på B1ms-nivån 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.
- Det virtuella nätverket debiteras inte om du inte konfigurerar extra funktioner, till exempel peering. Se Prissättning 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 MySQL-databasen som skyddas bakom det virtuella nätverket med andra verktyg?
- För grundläggande åtkomst från ett commmand-line-verktyg kan du köra
mysql
från appens SSH-terminal. - Om du vill ansluta från ett skrivbordsverktyg som MySQL Workbench måste datorn finnas i det virtuella nätverket. Det kan till exempel vara en virtuell Azure-dator som är ansluten till ett av undernäten eller en dator i ett lokalt nätverk som har en VPN-anslutning från plats till plats med det virtuella Azure-nätverket .
- Du kan också integrera Azure Cloud Shell med det virtuella nätverket.
Hur fungerar lokal apputveckling med GitHub Actions?
Ta den automatiskt genererade arbetsflödesfilen från App Service som ett exempel, var git push
och en startar en ny version och distributionskörning. Från en lokal klon av GitHub-lagringsplatsen skickar du önskade uppdateringar till GitHub. Exempel:
git add .
git commit -m "<some-message>"
git push origin main
Varför är GitHub Actions distributionen så långsam?
Den automatiskt genererade 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:
- I slutet av
build
jobbet laddar du upp filer som artefakter. - I början av
deploy
jobbet laddar du ned artefakterna.
Merparten av tiden som tvåjobbsprocessen tar går åt till 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.
Nästa steg
I den här självstudiekursen lärde 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.
Gå vidare till nästa självstudie för att lära dig hur du skyddar din app med en anpassad domän och ett certifikat.
Eller kolla in andra resurser: