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.
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
- En Azure-prenumeration Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar. Med ett kostnadsfritt Azure-konto kan du prova Azure Database for MySQL – flexibel server kostnadsfritt i 12 månader. Mer information finns i Prova Azure Database for MySQL – flexibel server kostnadsfritt.
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_USERNAME
ochDB_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 Portal och följ dessa steg för att skapa dina Azure App Service-resurser.
Instruktioner | Skärmbild |
---|---|
I Azure Portal:
|
|
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
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. | |||||||||||
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.
|
|||||||||||
Skapa en ny MYSQL_ATTR_SSL_CA databasinställning:
|
|||||||||||
Skapa följande extra appinställningar genom att följa samma steg och klicka sedan på Spara.
|
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:
|
|
På GitHub-sidan öppnar du Visual Studio Code i webbläsaren genom att trycka på . nyckeln. |
|
Ö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_DATABASE DB_USERNAME , DB_PASSWORD , MYSQL_ATTR_SSL_CA ). |
|
På sidan App Service går du till den vänstra menyn och väljer Distributionscenter. | |
På sidan Distributionscenter:
.github/workflows katalogen. |
|
På sidan Distributionscenter:
|
|
Om du vill göra ändringar i koden går du till Visual Studio Code i webbläsaren:
Dricks 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 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:
https://<app-name>.scm.azurewebsites.net/webssh/host i stället. |
|
I SSH-terminalen:
|
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.
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 en flexibel Azure Database for MySQL-serverdatabas som skyddas bakom ett virtuellt nätverk?
- Hur fungerar utveckling av lokala appar 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:
- 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.
- Använda SSH-tunnlar med Azure CLI:
- Azure Cloud Shell-integrering:
- Integrera Azure Cloud Shell med det virtuella nätverket för direkt åtkomst.
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:
- I slutet av
build
jobbet laddar du upp filer som artefakter. - I början av
deploy
jobbet laddar du ned artefakterna.
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.