Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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.
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
- Ett Azure-konto med en aktiv prenumeration. Om du inte har ett Azure-konto kan du skapa ett kostnadsfritt.
- Ett GitHub-konto. Du kan också få en gratis.
- Kunskap om Python med Flask-utveckling.
- (Valfritt) Prova GitHub Copilot, ett GitHub Copilot-konto. En 30-dagars gratis provperiod finns tillgänglig.
- Ett Azure-konto med en aktiv prenumeration. Om du inte har ett Azure-konto kan du skapa ett kostnadsfritt.
- Ett GitHub-konto. Du kan också få en gratis.
- Azure Developer CLI installerat. Du kan följa stegen med Azure Cloud Shell eftersom Azure Developer CLI redan är installerat.
- Kunskap om Python med Flask-utveckling.
- (Valfritt) Prova GitHub Copilot, ett GitHub Copilot-konto. En 30-dagars gratis provperiod finns tillgänglig.
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:
- Logga in på ditt GitHub-konto.
- Gå till https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
- Avmarkera Kopiera endast huvudgrenen. Du vill ha alla grenarna.
- Välj Skapa förgrening.
Steg 2: I GitHub-förgreningen:
- Välj main>starter-no-infra för startgrenen. Den här grenen innehåller bara exempelprojektet utan Azure-relaterade filer eller konfiguration.
- 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.txtför din lagringsplats.
Steg 3: I kodområdesterminalen:
- Kör databasmigrationer med
flask db upgrade. - Kör appen med
flask run. - 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, skrivCtrl+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:
- Överst i Azure-portalen anger du webbappdatabasen i sökfältet.
- 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.
- Resursgrupp: Välj Skapa ny och använd namnet msdocs-flask-postgres-tutorial.
- Region: Alla Azure-regioner nära dig.
- Namn: msdocs-python-postgres-XYZ.
- Körningsstack: Python 3.14.
- Databas: PostgreSQL – Flexibel server väljs som standard som databasmotor. Servernamnet och databasnamnet anges också som standard till lämpliga värden.
- Lägg till Azure Cache for Redis?: Nej.
- Värdplan: Basic. När du är klar kan du skala upp till en prisnivå för produktion.
- Välj Granska + skapa.
- 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:
- På den vänstra menyn på sidan App Service väljer du Inställningar>Miljövariabler.
- Välj AZURE_POSTGRESQL_CONNECTIONSTRING.
- 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.
- 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:
- I det övre sökfältet skriver du "key vault" och väljer sedan Marketplace>Key Vault.
- I Resursgrupp väljer du msdocs-python-postgres-tutorial.
- I Key Vault-namn skriver du ett namn som endast består av bokstäver och siffror.
- I Region anger du den till samma plats som resursgruppen.
Steg 3: Skydda nyckelvalvet med en privat slutpunkt:
- Välj Nätverk.
- Avmarkera Aktivera offentlig åtkomst.
- Välj Skapa en privat slutpunkt.
- I Resursgrupp väljer du msdocs-python-postgres-tutorial.
- I dialogrutan i Plats väljer du samma plats som din App Service-app.
- I Namn skriver du msdocs-python-postgres-XYZVaultEndpoint.
- I Virtuellt nätverk väljer du msdocs-python-postgres-XYZVnet.
- I Undernät väljer du msdocs-python-postgres-XYZSubnet.
- Välj OK.
- 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:
- I det översta sökfältet skriver du msdocs-python-postgres och väljer sedan App Service-resursen msdocs-python-postgres-XYZ.
- 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.
- Markera kryssrutan bredvid PostgreSQL-anslutningsappen och välj sedan Redigera.
- 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.
- Välj Autentisering.
- I Lösenord klistrar du in lösenordet som du kopierade tidigare.
- Välj Lagra hemlighet i Key Vault.
- Under Key Vault-anslutning väljer du Skapa ny. Dialogrutan Skapa anslutning öppnas ovanpå redigeringsdialogrutan.
Steg 5: Upprätta Key Vault-anslutningen:
- I dialogrutan Skapa anslutning för Key Vault-anslutningen går du till Key Vault och väljer det nyckelvalv som du skapade tidigare.
- Välj Granska + skapa.
- När verifieringen är klar väljer du Skapa.
Steg 6: Slutför postgreSQL-anslutningsinställningarna:
- 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.
- Välj Nästa: Nätverk.
- Välj Spara. Vänta tills meddelandet Uppdatera lyckades visas.
Steg 7: Verifiera Key Vault-integreringen
- På den vänstra menyn väljer du Inställningar>Miljövariabler igen.
- 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 :
- I Källa väljer du GitHub. Som standard är GitHub Actions valt som byggprovider.
- Logga in på ditt GitHub-konto och följ anvisningarna för att auktorisera Azure.
- I Organisation väljer du ditt konto.
- I Lagringsplats väljer du msdocs-flask-postgresql-sample-app.
- 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.
- Som Autentiseringstyp väljer du Användartilldelad identitet.
- I den översta menyn väljer du Spara.
App Service commiterar en arbetsflödesfil till det valda GitHub-repot, i
.github/workflowskatalogen. 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):
- Starta en ny chattsession genom att välja vyn Chatt och välj +sedan .
- 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. - 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 .
- Ö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):
- Öppna azureproject/production.py i utforskaren.
- 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_HOSTochAZURE_POSTGRESQL_NAME.
Steg 5:
- Välj källkontrolltillägget .
- 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. - Välj Checka in och bekräfta sedan med Ja.
- Välj Synkronisera ändringar 1 och bekräfta sedan med OK.
Steg 6: Tillbaka på sidan Distributionscenter i Azure-portalen:
- Välj Loggar och välj sedan Uppdatera för att se den nya distributionskörningen.
- 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,
- Välj Utvecklingsverktyg>SSH.
- Välj Gå.
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 :
- Välj Översikt på den vänstra menyn.
- 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 :
- Välj Övervaka>App Service-loggar på den vänstra menyn.
- Under Programloggning väljer du Filsystem.
- 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:
- Ange namnet på resursgruppen.
- Välj resursgruppen.
Steg 2: På resursgruppssidan väljer du Ta bort resursgrupp.
Steg 3:
- Bekräfta borttagningen genom att ange resursgruppens namn.
- Välj Ta bort.
- 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).
Från lagringsroten kör du
azd init.azd init --template python-app-service-postgresql-infraNä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.Logga in på Azure genom att köra kommandot
azd auth loginoch följa instruktionerna:azd auth loginSkapa nödvändiga Azure-resurser med
azd provisionkommandot . Följ anvisningarna för att välja det önskade abonnemanget och platsen för Azure-resurserna.azd provisionKommandot
azd provisiontar cirka 15 minuter att slutföra. Redis-cachen tar mest tid. Ändra koden senare så att den fungerar med App Service och distribuera ändringarna medazd 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.
I AZD-utdata hittar du inställningarna
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOSTochAZURE_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_SCOPEFö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
I GitHub-kodområdet startar du en ny chattsession genom att välja vyn Chatt och sedan välja +.
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.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 .
Ö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?.
Kör
azd deployi 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.
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>I SSH-sessionen kör du
flask db upgrade. Om det lyckas ansluter App Service till databasen.Anmärkning
Endast ändringar i filer i
/homekan bevaras utöver omstarter av appar. Ändringar utanför/homesparas inte.
Har du problem? Kontrollera felsökningsavsnittet.
Bläddra till appen
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>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.
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?
- Hur ansluter jag till PostgreSQL-servern som skyddas bakom det virtuella nätverket med andra verktyg?
- Hur fungerar utveckling av lokala appar med GitHub Actions?
- Hur felsöker jag fel under GitHub Actions-distributionen?
- Jag har inte behörighet att skapa en användartilldelad identitet
- Vad kan jag göra med GitHub Copilot i mitt kodområde?
Hur mycket kostar den här installationen?
Prissättningen för de skapade resurserna är som följer:
- App Service-planen skapas på Basic-nivån och kan skalas upp eller ned. Se Priser för App Service.
- Den flexibla PostgreSQL-servern skapas på den lägsta burst-nivån Standard_B1ms, med den minsta lagringsstorleken, som kan skalas upp eller ned. Se Priser för Azure Database for PostgreSQL.
- 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 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
psqlfrå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.
Relaterat innehåll
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: