Dela via


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

I den här självstudien distribuerar du en datadriven Python-webbapp till Azure App Service med relationsdatabastjänsten Azure Database for PostgreSQL . Azure App Service stöder Python i en Linux-servermiljö. Den här artikeln använder en Flask-app . Alternativen är Django eller FastAPI-självstudien.

Diagram visar arkitekturen för 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 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

Kör det här exemplet

Som utgångspunkt konfigurerar du en exempeldatadriven app. För att underlätta för dig innehåller exempellagringsplatsen en konfiguration av utvecklingscontainer . Utvecklingscontainern har allt du behöver för att utveckla ett program. Den innehåller databasen, cachen och alla miljövariabler som krävs av exempelprogrammet. Utvecklingscontainern kan köras i ett GitHub-kodområde, så att du kan köra exemplet på valfri dator med en webbläsare.

Anmärkning

Om du följer den här självstudien med din egen app kan du titta på requirements.txt filbeskrivning 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 utan Azure-relaterade filer eller konfiguration.
  2. Välj Kod. På fliken codespaces väljer du Skapa kodområde på starter-no-infra. Det tar några minuter att konfigurera kodområdet. Den körs pip install -r requirements.txt för din lagringsplats.

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.

Skapa App Service och PostgreSQL

I det här avsnittet skapar du Azure-resurserna. I denna tutorial skapas en uppsättning resurser som är säkra som standard, inklusive App Service och Azure Database för 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. Det är också en del av DNS-namnet för din app.
  • Runtime-stacken för appen. Den version av Python som ska användas för din app.
  • Värdplanen för appen. Prisnivån som innehåller uppsättningen funktioner och skalningskapacitet för din app.
  • Resursgruppen för appen. Med en resursgrupp kan du gruppera Azure-resurserna för programmet i en logisk container.

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. Överst i Azure-portalen anger du webbappdatabasen i sökfältet.
  2. Under rubriken Marketplace väljer du objektet webapp + databas. Du kan också navigera till Skapa webbapp 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.14.
  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. När distributionen är klar väljer du Gå till resurs. Distributionen skapar följande resurser:

  • Resursgrupp: Containern för alla skapade resurser.
  • App Service-plan: Definierar beräkningsresurserna för App Service. Distributionen skapar en Linux-plan på basic-nivån .
  • 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.

Skydda anslutningshemligheter

Distributionsprocessen genererar anslutningsvariablerna åt dig som appinställningar. Bästa praxis för säkerhet är att hålla hemligheter borta från App Service helt. Flytta dina hemligheter till ett nyckelvalv och ändra 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 söker efter lösenord= i slutet av strängen.
  4. Kopiera lösenordssträngen efter lösenord= för senare användning. Med den här appinställningen kan du ansluta till Postgres-databasen som skyddas bakom en privat slutpunkt. Hemligheten sparas direkt i App Service-appen, vilket inte är bästa praxis. Senare ändrar du den här konfigurationen.

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 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ät väljer du msdocs-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 klar.

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 distributionsprocessen skapade å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 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 skapandet är klart väljer listrutan Key Vault-anslutning 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 key vault-referens. Hemligheten hanteras nu 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.


Distribuera exempelkod

I det här avsnittet konfigurerar du GitHub-distribution med GitHub Actions. Det är ett av många sätt att distribuera till App Service. Det är 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.

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. Den här grenen är samma som du arbetade med 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 commiterar en arbetsflödesfil till det valda GitHub-repot, 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). Andra 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. Det här kommandot hämtar den nyligen bekräftade arbetsflödesfilen till ditt kodområde.

Steg 4 (alternativ 1: med GitHub Copilot):

  1. Starta en ny chattsession genom att välja vyn Chatt och välj +sedan .
  2. Fråga , @workspace Hur ansluter appen till databasen? Copilot kan ge dig en förklaring om SQLAlchemy, till exempel 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-steg 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. Svaren är inte alltid korrekta. 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 azureproject/production.py i utforskaren.
  2. Leta upp den kommenterade koden (raderna 3–8) och ta bort kommentaren. Den här ändringen 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 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. GitHub-åtgärden körs. Arbetsflödesfilen definierar två separata steg, skapa och distribuera. Vänta tills GitHub-körningen visar statusen Lyckades. Det tar ungefär 5 minuter.

Har du problem? Kontrollera felsökningsguiden.

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.

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.

Strömma diagnostiska loggar

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 för att demonstrera den här funktionen som visas här.

@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.

Mer information om loggning i Python-appar finns i Konfigurera Azure Monitor för ditt Python-program.

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. Bekräfta borttagningen genom att ange resursgruppens namn.
  2. Välj Ta bort.
  3. Bekräfta med Ta bort igen.

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. Ändra koden senare så att den fungerar med App Service och distribuera ändringarna med azd deploy. När det körs innehåller kommandot meddelanden om etablerings- 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. Den skapar en Linux-plan på basic-nivån .
    • 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 för PostgreSQL flexible 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 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. 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ända databasanslutningssträngen

Den AZD-mall som du använder genererade anslutningsvariablerna åt dig redan som appinställningar. De matas ut till terminalen. 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.

Ä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 om SQLAlchemy, till exempel 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-steg 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. Svaren är inte alltid korrekta. 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.

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.

    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.

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.

Strömma diagnostiska loggar

Azure App Service kan samla in konsolloggar som hjälper dig att diagnostisera problem med ditt program. AZD-mallen aktiverar 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.

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

Här följer några 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 kunde inte själva appen startas. 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 kanske har 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?

För den autogenererade arbetsflödesfilen från App Service, som ett 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 hämta utförliga 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 märker att GitHub Copilot-chattvyn redan fanns där för dig när du skapade kodutrymmet. För din bekvämlighet inkluderar vi GitHub Copilot-chatttillägget i containerdefinitionen. Se .devcontainer/devcontainer.json. Du behöver ett GitHub Copilot-konto. En 30-dagars gratis provperiod finns 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. 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.

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: