Dela via


Distribuera en Python-webbapp (Flask) med PostgreSQL i Azure

I den här självstudien distribuerar du en datadriven Python-webbapp (Flask) till Azure App Service med relationsdatabastjänsten Azure Database for PostgreSQL . Azure App Service stöder Python i en Linux-servermiljö. Om du vill kan du läsa Django-självstudien eller FastAPI-självstudien i stället.

Ett arkitekturdiagram som visar en App Service med en PostgreSQL-databas i Azure.

I den här tutorialen lär du dig följande:

  • Skapa en säker App Service-, PostgreSQL- och Redis-cachearkitektur som standard.
  • Skydda anslutningshemligheter med hjälp av en hanterad identitet och Key Vault-referenser.
  • Distribuera en Python-exempelapp till App Service från en GitHub-lagringsplats.
  • Få åtkomst till anslutningssträngar och inställningar för App Service i applikationskoden.
  • Gör uppdateringar och distribuera om programkoden.
  • Generera databasschema genom att köra databasmigreringar.
  • Strömma diagnostikloggar från Azure.
  • Hantera appen i Azure Portal.
  • Tillhandahåll samma arkitektur och distribuera genom att använda Azure Developer CLI.
  • Optimera ditt utvecklingsarbetsflöde med GitHub Codespaces och GitHub Copilot.

Förutsättningar

Hoppa till slutet

Om du bara vill se exempelappen i den här självstudien som körs i Azure kör du bara följande kommandon i Azure Cloud Shell och följer anvisningarna:

mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up

1. Kör exemplet

Först sätter du upp en exempelapp baserad på data som en startpunkt. Exempellagringsplatsen innehåller för enkelhetens skull en konfiguration av utvecklingscontainer. Utvecklingscontainern har allt du behöver för att utveckla ett program, inklusive databasen, cachen och alla miljövariabler som krävs av exempelprogrammet. Utvecklingscontainern kan köras i ett GitHub-kodområde, vilket innebär att du kan köra exemplet på valfri dator med en webbläsare.

Anmärkning

Om du följer den här handledningen med din egen app, se över beskrivningen av requirements.txt-filen i README.md för att se vilka paket du behöver.

Steg 1: I ett nytt webbläsarfönster:

  1. Logga in på ditt GitHub-konto.
  2. Gå till https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
  3. Avmarkera Kopiera endast huvudgrenen. Du vill ha alla grenarna.
  4. Välj Skapa förgrening.

Steg 2: I GitHub-förgreningen:

  1. Välj main>starter-no-infra för startgrenen. Den här grenen innehåller bara exempelprojektet och inga Azure-relaterade filer eller konfigurationer.
  2. Välj Kod>Skapa kodområde på starter-no-infra. Det tar några minuter att konfigurera kodområdet och det körs pip install -r requirements.txt för lagringsplatsen i slutet.

Steg 3: I kodområdesterminalen:

  1. Kör databasmigrationer med flask db upgrade.
  2. Kör appen med flask run.
  3. När du ser meddelandet Your application running on port 5000 is available.väljer du Öppna i webbläsare. Du bör se exempelapplikationen i en ny webbläsarflik. För att stoppa applikationen, skriv Ctrl+C.

Tips/Råd

Du kan fråga GitHub Copilot om den här lagringsplatsen. Till exempel:

  • @workspace Vad gör det här projektet?
  • @workspace Vad gör mappen .devcontainer?

Har du problem? Kontrollera felsökningsavsnittet.

2. Skapa App Service och PostgreSQL

I det här steget skapar du Azure-resurserna. Stegen som används i den här handledningen skapar en uppsättning standardmässigt säkra resurser som inkluderar App Service och Azure Database for PostgreSQL. För skapandeprocessen anger du:

  • Webbappens namn. Den används som en del av DNS-namnet för din app.
  • Regionen som ska köra appen fysiskt i världen. Den används också som en del av DNS-namnet för din app.
  • Runtime-stacken för appen. Det är där du väljer vilken version av Python som ska användas för din app.
  • Värdplanen för appen. Det är prisnivån som innehåller uppsättningen funktioner och skalningskapacitet 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.

Steg 1: I Azure-portalen:

  1. Skriv in "webbappdatabas" i sökfältet högst upp på Azure-portalen.
  2. Välj objektet webapp + databas under rubriken Marketplace . Du kan också navigera till skaparguiden direkt.

Steg 2: 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-flask-postgres-tutorial.
  2. Region: Alla Azure-regioner nära dig.
  3. Namn: msdocs-python-postgres-XYZ.
  4. Körningsstack: Python 3.12.
  5. Databas: PostgreSQL – Flexibel server väljs som standard som databasmotor. Servernamnet och databasnamnet anges också som standard till lämpliga värden.
  6. Lägg till Azure Cache for Redis?: Nej.
  7. Värdplan: Basic. När du är klar kan du skala upp till en prisnivå för produktion.
  8. Välj Granska + skapa.
  9. När valideringen är klar väljer du Skapa.

Steg 3: Distributionen tar några minuter att slutföra. När distributionen är klar väljer du knappen Gå till resurs . Du tas direkt till App Service-appen, men följande resurser skapas:

  • Resursgrupp: Containern för alla skapade resurser.
  • App Service-plan: Definierar beräkningsresurserna för App Service. En Linux-plan på Basic-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.
  • Nätverksgränssnitt: Representerar privata IP-adresser, en för var och en av de privata slutpunkterna.
  • Azure Database for PostgreSQL flexibel server: Endast tillgänglig inifrån det virtuella nätverket. En databas och en användare skapas åt dig på servern.
  • Privata DNS-zoner: Aktiverar DNS-matchning av nyckelvalvet och databasservern i det virtuella nätverket.

3. Skydda anslutningshemligheter

Guiden skapade anslutningsvariabler åt dig redan som appinställningar. Bästa praxis för säkerhet är dock att hålla hemligheter borta från App Service helt. Du flyttar dina hemligheter till ett nyckelvalv och ändrar appinställningen till Key Vault-referenser med hjälp av Service Connectors.

Steg 1: Hämta den befintliga anslutningssträngen

  1. På den vänstra menyn på sidan App Service väljer du Inställningar > Miljövariabler.
  2. Välj AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. I inställningen Lägg till/redigera program går du till fältet Värde och letar upp delen password= i slutet av strängen.
  4. Kopiera lösenordssträngen efter Password= för senare användning. Med den här appinställningen kan du ansluta till Postgres-databasen som skyddas bakom en privat slutpunkt. Men hemligheten sparas direkt i App Service-appen, vilket inte är det bästa. Du kommer att ändra detta.

Steg 2: Skapa ett nyckelvalv för säker hantering av hemligheter

  1. I det övre sökfältet skriver du "key vault" och väljer sedan Marketplace>Key Vault.
  2. I Resursgrupp väljer du msdocs-python-postgres-tutorial.
  3. I Key Vault-namn skriver du ett namn som endast består av bokstäver och siffror.
  4. I Region anger du den till samma plats som resursgruppen.

Steg 3: Skydda nyckelvalvet med en privat slutpunkt

  1. Välj fliken Nätverk .
  2. Avmarkera Aktivera offentlig åtkomst.
  3. Välj Skapa en privat slutpunkt.
  4. I Resursgrupp väljer du msdocs-python-postgres-tutorial.
  5. I dialogrutan i Plats väljer du samma plats som din App Service-app.
  6. I Namn skriver du msdocs-python-postgres-XYZVaultEndpoint.
  7. I Virtuellt nätverk väljer du msdocs-python-postgres-XYZVnet.
  8. I undernätetmsdocs-python-postgres-XYZSubnet.
  9. Välj OK.
  10. Välj Granska + skapa, och välj därefter Skapa. Vänta tills nyckelvalv-implementeringen är klar. Du bör se "Din distribution är slutförd."

Steg 4: Konfigurera PostgreSQL-anslutningsappen

  1. I det översta sökfältet skriver du msdocs-python-postgres och väljer sedan App Service-resursen msdocs-python-postgres-XYZ.
  2. På sidan App Service går du till den vänstra menyn och väljer Inställningar > Tjänstanslutning. Det finns redan en anslutning, som appskaparguiden har skapat åt dig.
  3. Markera kryssrutan bredvid PostgreSQL-anslutningsappen och välj sedan Redigera.
  4. I Klienttyp väljer du Django. Även om du har en Flask-app ger Django-klienttypen i PostgreSQL-tjänstanslutningen databasvariabler i separata inställningar i stället för en anslutningssträng. De separata variablerna är enklare att använda i programkoden, som använder SQLAlchemy för att ansluta till databasen.
  5. Välj fliken Autentisering .
  6. I Lösenord klistrar du in lösenordet som du kopierade tidigare.
  7. Välj Lagra hemlighet i Key Vault.
  8. Under Key Vault-anslutning väljer du Skapa ny. Dialogrutan Skapa anslutning öppnas ovanpå redigeringsdialogrutan.

Steg 5: Upprätta Key Vault-anslutningen

  1. I dialogrutan Skapa anslutning för Key Vault-anslutningen går du till Key Vault och väljer det nyckelvalv som du skapade tidigare.
  2. Välj Granska + skapa.
  3. När verifieringen är klar väljer du Skapa.

Steg 6: Slutför postgreSQL-anslutningsinställningarna

  1. Du är tillbaka i redigeringsdialogrutan för defaultConnector. På fliken Autentisering väntar du tills key vault-anslutningsappen har skapats. När Key Vault-anslutningen är klar väljer listrutan automatiskt den.
  2. Välj Nästa: Nätverk.
  3. Välj Spara. Vänta tills meddelandet Uppdatera lyckades visas.

Steg 7: Verifiera Key Vault-integreringen

  1. På den vänstra menyn väljer du Inställningar > Miljövariabler igen.
  2. Bredvid AZURE_POSTGRESQL_PASSWORD väljer du Visa värde. Värdet ska vara @Microsoft.KeyVault(...), vilket innebär att det är en nyckelvalvsreferens eftersom hemligheten nu hanteras i nyckelvalvet.

För att sammanfatta processen för att skydda dina anslutningshemligheter:

  • Hämtar anslutningshemligheterna från App Service-appens miljövariabler.
  • Skapa ett nyckelvalv.
  • Skapa en Key Vault-anslutning med den systemtilldelade hanterade identiteten.
  • Uppdatera tjänstanslutningarna för att lagra konfidentiell information i nyckelvalvet.

Har du problem? Kontrollera felsökningsavsnittet.


4. 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 utmärkt sätt att ha kontinuerlig integration i din distributionsprocess. Som standard startar varje git push till din GitHub-lagringsplats bygg- och distributionsåtgärden.

Steg 1: I den vänstra menyn väljer du Distribution>Distributionscenter.

Steg 2: 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 msdocs-flask-postgresql-sample-app.
  5. I Gren väljer du starter-no-infra. Det här är samma gren som du arbetade i med exempelappen, utan några Azure-relaterade filer eller konfigurationer.
  6. Som Autentiseringstyp väljer du Användartilldelad identitet.
  7. I den översta menyn väljer du Spara. App Service lägger in en arbetsflödesfil i det valda GitHub-förvaret i .github/workflows-katalogen. Som standard skapar distributionscentret en användartilldelad identitet för arbetsflödet som ska autentiseras med Hjälp av Microsoft Entra (OIDC-autentisering). Alternativa autentiseringsalternativ finns i Distribuera till App Service med GitHub Actions.

Steg 3: Gå tillbaka till GitHub-kodområdet för din exempelfork och kör git pull origin starter-no-infra. Detta drar in den nyligen slutförda arbetsflödesfilen i ditt kodutrymme.

Steg 4 (alternativ 1: med GitHub Copilot):

  1. Starta en ny chattsession genom att välja vyn Chatt och sedan välja +.
  2. Fråga: "@workspace Hur ansluter appen till databasen?" Copilot kan ge dig en förklaring av SQLAlchemy hur dess anslutnings-URI konfigureras i azureproject/development.py och azureproject/production.py.
  3. Fråga: "@workspace I produktionsläge körs min app i en App Service-webbapp, som använder Azure Service Connector för att ansluta till en flexibel PostgreSQL-server med django-klienttypen. Vilka miljövariabelnamn behöver jag använda? Copilot kan ge dig ett kodförslag som liknar det i alternativ 2: utan GitHub Copilot-stegen nedan och till och med be dig att göra ändringen i filen azureproject/production.py .
  4. Öppna azureproject/production.py i utforskaren och lägg till kodförslaget. GitHub Copilot ger dig inte samma svar varje gång och det är inte alltid korrekt. Du kanske behöver ställa fler frågor för att finslipa dess svar. Tips finns i Vad kan jag göra med GitHub Copilot i mitt kodområde?.

Steg 4 (alternativ 2: utan GitHub Copilot):

  1. Öppna Program.cs i utforskaren.
  2. Leta upp den kommenterade koden (raderna 3–8) och ta bort kommentaren. Detta skapar en anslutningssträng för SQLAlchemy med hjälp av AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST och AZURE_POSTGRESQL_NAME.

Steg 5:

  1. Välj källkontrolltillägget .
  2. I textrutan, skriv ett meddelande för commit som Configure Azure database connection. Eller, välj och låt GitHub Copilot generera ett commit-meddelande åt dig.
  3. Välj Checka in och bekräfta sedan med Ja.
  4. Välj Synkronisera ändringar 1 och bekräfta sedan med OK.

Steg 6: Tillbaka på sidan Distributionscenter i Azure-portalen:

  1. Välj fliken Loggar och välj sedan Uppdatera för att se den nya distributionskörningen.
  2. I loggobjektet för distributionskörningen väljer du posten Skapa/distribuera loggar med den senaste tidsstämpeln.

Steg 7: Du tas till din GitHub-lagringsplats och ser att GitHub-åtgärden körs. Arbetsflödesfilen definierar två separata steg: bygga och distribuera. Vänta tills GitHub-körningen visar statusen Lyckades. Det tar ungefär 5 minuter.

Har du problem? Kontrollera felsökningsguiden.

5. Generera databasschema

Med PostgreSQL-databasen skyddad av det virtuella nätverket är det enklaste sättet att köra Flask-databasmigreringar i en SSH-session med Linux-containern i App Service.

Steg 1: Tillbaka på App Service-sidan, i den vänstra menyn,

  1. Välj Utvecklingsverktyg>SSH.
  2. Välj .

Steg 2: I SSH-sessionen kör du flask db upgrade. Om det lyckas ansluter App Service till databasen.

Tips/Råd

I SSH-sessionen kan endast ändringar av filer i /home sparas utöver omstarter av appar. Ändringar utanför /home sparas inte.

Har du problem? Kontrollera felsökningsavsnittet.

6. Bläddra till appen

Steg 1: På sidan App Service:

  1. Välj Översikt på den vänstra menyn.
  2. Välj URL:en för din app.

Steg 2: Lägg till några restauranger i listan. Grattis, du kör en webbapp i Azure App Service med säker anslutning till Azure Database for PostgreSQL.

7. Överföra diagnostikloggar

Azure App Service fångar upp alla konsolloggfiler för att hjälpa dig att diagnostisera problem med din applikation. Exempelappen innehåller print() instruktioner som visar den här funktionen enligt nedan.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Steg 1: På sidan App Service:

  1. Välj Övervaka>App Service-loggar på den vänstra menyn.
  2. Under Programloggning väljer du Filsystem.
  3. I den översta menyn väljer du Spara.

Steg 2: Välj Loggström på den vänstra menyn. Du ser loggarna för din app, inklusive plattformsloggar och loggar från insidan av containern.

Läs mer om att logga in Python-appar i serien när du konfigurerar Azure Monitor för ditt Python-program.

8. Rensa resurser

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

Steg 1: I sökfältet överst i Azure-portalen:

  1. Ange namnet på resursgruppen.
  2. Välj resursgruppen.

Steg 2: På resursgruppssidan väljer du Ta bort resursgrupp.

Steg 3:

  1. Ange namnet på resursgruppen för att bekräfta din radering.
  2. Välj Ta bort.
  3. Bekräfta med Ta bort igen.

2. Skapa Azure-resurser och distribuera en exempelapp

I detta steg skapar du Azure-resurser och distribuerar en exempelapplikation till App Service på Linux. Stegen som används i den här handledningen skapar en uppsättning standardmässigt säkra resurser som inkluderar App Service och Azure Database for PostgreSQL.

Utvecklingscontainern har redan Azure Developer CLI (AZD).

  1. Från lagringsroten kör du azd init.

    azd init --template python-app-service-postgresql-infra
    
  2. När du uppmanas, ge följande svar:

    Fråga Svar
    Den aktuella katalogen är inte tom. Vill du initiera ett projekt här i '<your-directory>'? Y
    Vad vill du göra med de här filerna? Behåll mina befintliga filer oförändrade
    Ange ett nytt miljönamn Skriv ett unikt namn. AZD-mallen använder detta namn som en del av DNS-namnet för din webbapp i Azure (<app-name>-<hash>.azurewebsites.net). Alfanumeriska tecken och bindestreck är tillåtna.
  3. Logga in på Azure genom att köra kommandot azd auth login och följa instruktionerna:

    azd auth login
    
  4. Skapa nödvändiga Azure-resurser med azd provision kommandot . Följ anvisningarna för att välja det önskade abonnemanget och platsen för Azure-resurserna.

    azd provision
    

    Kommandot azd provision tar cirka 15 minuter att slutföra (Redis-cachen tar mest tid). Senare ändrar du koden så att den fungerar med App Service och distribuerar ändringarna med azd deploy. När den körs, ger kommandot meddelanden om provisionerings- och distributionsprocessen, inklusive en länk till distributionen i Azure.

    Den här AZD-mallen innehåller filer (azure.yaml och infra-katalogen ) som genererar en säker arkitektur som standard med följande Azure-resurser:

    • Resursgrupp: Containern för alla skapade resurser.
    • App Service-plan: Definierar beräkningsresurserna för App Service. En Linux-plan på Basic-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.
    • Privata slutpunkter: Åtkomstslutpunkter för nyckelvalvet och Redis-cachen i det virtuella nätverket.
    • Nätverksgränssnitt: Representerar privata IP-adresser, en för var och en av de privata slutpunkterna.
    • Azure Database for PostgreSQL flexibel server: Endast tillgänglig inifrån det virtuella nätverket. En databas och en användare skapas åt dig på servern.
    • Privat DNS-zon: Aktiverar DNS-matchning för PostgreSQL-servern i det virtuella nätverket.
    • Log Analytics-arbetsyta: Fungerar som målbehållare för din app för att skicka dess loggar, där du även kan fråga loggarna.
    • Azure Cache for Redis: Endast tillgänglig från dess privata slutpunkt.
    • Nyckelvalv: Endast tillgängligt bakom den privata slutpunkten. Används för att hantera hemligheter för App Service-appen.

    När kommandot har skapat resurser och distribuerat programkoden första gången fungerar inte den distribuerade exempelappen ännu eftersom du måste göra små ändringar för att den ska kunna ansluta till databasen i Azure.

Har du problem? Kontrollera felsökningsavsnittet.

Använd anslutningssträng för databasen

Den AZD-mall som du använder genererade anslutningsvariablerna åt dig redan som appinställningar och matar ut dem till terminalen för din bekvämlighet. Inställningar för appar är ett sätt att hålla anslutningshemligheter utanför din koddatabas.

  1. I AZD-utdata hittar du inställningarna AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOSToch AZURE_POSTGRESQL_NAME. För att skydda hemligheter visas endast inställningsnamnen. De ser ut så här i AZD-utdata:

     App Service app has the following connection settings:
             - AZURE_POSTGRESQL_NAME
             - AZURE_POSTGRESQL_HOST
             - AZURE_POSTGRESQL_USER
             - AZURE_POSTGRESQL_PASSWORD
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     
  2. För din bekvämlighet visar AZD-mallen dig den direkta länken till appens inställningssida. Hitta länken och öppna den på en ny webbläsarflik.

Har du problem? Kontrollera felsökningsavsnittet.

4. Ändra exempelkod och distribuera om

  1. I GitHub-kodområdet startar du en ny chattsession genom att välja vyn Chatt och sedan välja +.

  2. Fråga: "@workspace Hur ansluter appen till databasen?" Copilot kan ge dig en förklaring av SQLAlchemy hur dess anslutnings-URI konfigureras i azureproject/development.py och azureproject/production.py.

  3. Fråga: "@workspace I produktionsläge körs min app i en App Service-webbapp, som använder Azure Service Connector för att ansluta till en flexibel PostgreSQL-server med django-klienttypen. Vilka miljövariabelnamn behöver jag använda? Copilot kan ge dig ett kodförslag som liknar det i alternativ 2: utan GitHub Copilot-stegen nedan och till och med be dig att göra ändringen i filen azureproject/production.py .

  4. Öppna azureproject/production.py i utforskaren och lägg till kodförslaget.

    GitHub Copilot ger dig inte samma svar varje gång och det är inte alltid korrekt. Du kanske behöver ställa fler frågor för att finslipa dess svar. Tips finns i Vad kan jag göra med GitHub Copilot i mitt kodområde?.

  5. Kör azd deploy i terminalen.

    azd deploy
    

Har du problem? Kontrollera felsökningsavsnittet.

5. Generera databasschema

Med PostgreSQL-databasen skyddad av det virtuella nätverket är det enklaste sättet att köra Flask-databasmigreringar i en SSH-session med Linux-containern i App Service.

  1. I AZD-utdata letar du reda på URL:en för SSH-sessionen och navigerar till den i webbläsaren. Det ser ut så här i utdata:

     Open SSH session to App Service container at: <URL>
     
  2. I SSH-sessionen kör du flask db upgrade. Om det lyckas ansluter App Service till databasen.

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

    Anmärkning

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

Har du problem? Kontrollera felsökningsavsnittet.

6. Bläddra till appen

  1. I AZD-utdata letar du reda på url:en för din app och navigerar till den i webbläsaren. URL:en ser ut så här i AZD-utdata:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Lägg till några restauranger i listan.

    En skärmbild av Flask-webbappen med PostgreSQL som körs i Azure och som visar restauranger och restaurangrecensioner.

    Grattis, du kör en webbapp i Azure App Service med säker anslutning till Azure Database for PostgreSQL.

Har du problem? Kontrollera felsökningsavsnittet.

7. Överföra diagnostikloggar

Azure App Service kan samla in konsolloggar som hjälper dig att diagnostisera problem med ditt program. För enkelhetens skull möjliggör AZD-mallen redan loggning till det lokala filsystemet och skickar loggarna till en Log Analytics-arbetsyta.

Exempelprogrammet innehåller print() instruktioner för att demonstrera den här funktionen, enligt följande kodfragment.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

I utdata från AZD hittar du länken för att strömma App Service-loggar och navigera till den via webbläsaren.

Läs mer om att logga in Python-appar i serien när du konfigurerar Azure Monitor för ditt Python-program.

Har du problem? Kontrollera felsökningsavsnittet.

8. Rensa resurser

För att ta bort alla Azure-resurser i den nuvarande distribueringsmiljön, kör azd down och följ anvisningarna.

azd down

Felsökning

Nedan visas problem som kan uppstå när du försöker gå igenom den här självstudien och steg för att lösa dem.

Jag kan inte ansluta till SSH-sessionen

Om du inte kan ansluta till SSH-sessionen har själva appen inte startats. Mer information finns i diagnostikloggarna . Om du till exempel ser ett fel som KeyError: 'AZURE_POSTGRESQL_HOST'kan det innebära att miljövariabeln saknas (du kan ha tagit bort appinställningen).

Jag får ett fel när jag kör databasmigreringar

Om du stöter på fel som rör anslutning till databasen kontrollerar du om appinställningarna (AZURE_POSTGRESQL_USER, , AZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSToch AZURE_POSTGRESQL_NAME) har ändrats eller tagits bort. Utan den anslutningssträng kan migreringskommandot inte kommunicera med databasen.

Vanliga frågor

Hur mycket kostar den här installationen?

Prissättningen för de skapade resurserna är som följer:

Hur gör jag för att ansluta till PostgreSQL-servern som skyddas bakom det virtuella nätverket med andra verktyg?

  • För grundläggande åtkomst från ett kommandoradsverktyg kan du köra psql från appens SSH-session.
  • Om du vill ansluta från ett skrivbordsverktyg 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 plats-till-plats-VPN-anslutning med det virtuella Azure-nätverket .
  • Du kan också integrera Azure Cloud Shell med det virtuella nätverket.

Hur fungerar utveckling av lokala appar med GitHub Actions?

Med hjälp av den automatiskt genererade arbetsflödesfilen från App Service som exempel startar varje git push en ny bygg- och distributionskörning. Från en lokal klon av GitHub-lagringsplatsen gör du önskade uppdateringar och push-överför till GitHub. Till exempel:

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

Hur gör jag för att felsöka under GitHub Actions-distributionen?

Om ett steg misslyckas i den autogenererade GitHub-arbetsflödesfilen kan du prova att ändra det misslyckade kommandot för att generera mer utförliga utdata. Du kan till exempel få mer utdata från python kommandot genom att lägga till alternativet -d . Utför och skicka dina ändringar för att utlösa ytterligare en distribution till App Service.

Jag har inte behörighet att skapa en användartilldelad identitet

Se Konfigurera GitHub Actions-distribution från Distributionscenter.

Vad kan jag göra med GitHub Copilot i min kodmiljö?

Du kanske har märkt att GitHub Copilot-chattvyn redan fanns där när du skapade kodområdet. För din bekvämlighet inkluderar vi GitHub Copilot-chatttillägget i containerdefinitionen (se .devcontainer/devcontainer.json). Du behöver dock ett GitHub Copilot-konto (30 dagars kostnadsfri utvärderingsversion tillgänglig).

Några tips för dig när du pratar med GitHub Copilot:

  • I en enda chattsession bygger frågorna och svaren på varandra och du kan justera dina frågor för att finjustera det svar du får.
  • Som standard har GitHub Copilot inte tillgång till någon fil i ditt arkiv. Om du vill ställa frågor om en fil öppnar du filen i redigeraren först.
  • För att ge GitHub Copilot tillgång till alla filer i arkivet när den förbereder sina svar, börja din fråga med @workspace. Mer information finns i Use the @workspace agent.
  • I chattsessionen kan GitHub Copilot föreslå ändringar och (med @workspace) även var ändringarna ska utföras, men det är inte tillåtet att göra ändringarna åt dig. Det är upp till dig att lägga till de föreslagna ändringarna och testa dem.

Nästa steg

Gå vidare till nästa handledning för att lära dig hur du säkrar din app med en anpassad domän och certifikat.

Lär dig hur App Service kör en Python-app: