Dela via


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

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

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

För att slutföra den här självstudien behöver du:

Hoppa till slutet

Med Azure Developer CLI installerat kan du distribuera en fullständigt konfigurerad exempelapp som visas i den här självstudien och se hur den körs i Azure. Kör bara följande kommandon i en tom arbetskatalog:

azd auth login
azd init --template msdocs-flask-postgresql-sample-app
azd up

Programexempel

Exempel på Python-program med flask- och Django-ramverket tillhandahålls för att hjälpa dig att följa med i den här självstudien. Om du vill distribuera dem utan att köra dem lokalt hoppar du över den här delen.

Om du vill köra programmet lokalt kontrollerar du att Du har Python 3.7 eller senare och PostgreSQL installerat lokalt. Klona sedan exempellagringsplatsens gren och ändra till lagringsplatsens starter-no-infra rot.

git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app

Skapa en .env-fil enligt nedan med hjälp av .env.sample-filen som en guide. Ange värdet DBNAME för till namnet på en befintlig databas i din lokala PostgreSQL-instans. Ange värdena DBHOSTför , DBUSERoch DBPASS efter behov för din lokala PostgreSQL-instans.

DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>

Skapa en virtuell miljö för appen:

py -m venv .venv
.venv\scripts\activate

Installera beroendena:

pip install -r requirements.txt

Kör exempelprogrammet med följande kommandon:

# Run database migration
flask db upgrade
# Run the app at http://127.0.0.1:5000
flask run

1. Skapa App Service och PostgreSQL

I det här steget skapar du Azure-resurserna. Stegen som används i den här självstudien skapar en uppsättning säkra som standardresurser som inkluderar App Service och Azure Database for PostgreSQL. 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.
  • Regionen som ska köra appen fysiskt i världen.
  • 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 Portal och följ dessa steg för att skapa dina Azure App Service-resurser.

Steg 1: I Azure Portal:

  1. Ange "webbappdatabas" i sökfältet överst i Azure Portal.
  2. Välj objektet webapp + databas under rubriken Marketplace . Du kan också navigera till guiden för att skapa direkt.

En skärmbild som visar hur du använder sökrutan i det övre verktygsfältet för att hitta guiden Skapa webbapp + databas (Flask).

Steg 2: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-python-postgres-tutorial.
  2. Region → Valfri Azure-region nära dig.
  3. Namnmsdocs-python-postgres-XYZ där XYZ är tre slumpmässiga tecken. Användarnamnet måste vara unikt inom Azure.
  4. KörningsstackenPython 3.10.
  5. DatabasPostgreSQL – Flexibel server väljs som standard som databasmotor. Servernamnet och databasnamnet anges också som standard till lämpliga värden.
  6. VärdplanBasic. När du är klar kan du skala upp till en produktionsprisnivå senare.
  7. Välj Granska + skapa.
  8. När valideringen är klar väljer du Skapa.

En skärmbild som visar hur du konfigurerar en ny app och databas i guiden Webbapp + Databas (Flask).

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

En skärmbild som visar hur distributionsprocessen har slutförts (Flask).

2. Skydda anslutningshemligheter

Guiden skapa genererade databasanslutningssträngen åt dig redan som en appinställning. 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 en Key Vault-referens med hjälp av Service Connectors.

Steg 1: Hämta den befintliga anslutningssträng

  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. Hemligheten sparas dock direkt i App Service-appen, vilket inte är det bästa. Du ändrar det här.

En skärmbild som visar hur du ser värdet för en appinställning.

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.

En skärmbild som visar hur du skapar ett nyckelvalv.

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 Namn skriver du ett namn för den privata slutpunkten som endast består av bokstäver och siffror.
  6. I Region anger du den till samma plats som resursgruppen.
  7. I dialogrutan i Plats väljer du samma plats som din App Service-app.
  8. I Resursgrupp väljer du msdocs-python-postgres-tutorial.
  9. I Namn skriver du msdocs-python-postgres-XYZVaultEndpoint.
  10. I Virtuellt nätverk väljer du msdocs-python-postgres-XYZVnet.
  11. I undernätet msdocs-python-postgres-XYZSubnet.
  12. Välj OK.
  13. Välj Granska + skapa och välj sedan Skapa. Vänta tills key vault-distributionen är klar. Du bör se "Distributionen är klar".

En skärmbild som visar hur du skyddar ett nyckelvalv med en privat slutpunkt.

Steg 4: Konfigurera tjänstanslutningsappen

  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 anslutningsapp som guiden för att skapa appen har skapats åt dig.
  3. Markera kryssrutan bredvid anslutningsappen och välj sedan Redigera.
  4. På fliken Grundinställningar går du till PostgreSQL-databasen och väljer den PostgreSQL-databas som skapades.
  5. Markera 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.

En skärmbild som visar hur du redigerar en tjänstanslutning med en key vault-anslutning.

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.

En skärmbild som visar hur du konfigurerar en key vault-tjänstanslutning.

Steg 6: Slutför konfigurationen av Service Connector

  1. Du är tillbaka i redigeringsdialogrutan för defaultConnector. På fliken Autentisering väntar du tills key vault-anslutningsappen har skapats. När den är klar 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.

En skärmbild som visar nyckelvalvsanslutningen som valts i defaultConnector.

Steg 7: Verifiera Key Vault-integreringen

  1. På den vänstra menyn väljer du Inställningar > Miljövariabler igen.
  2. Bredvid AZURE_POSTGRESQL_CONNECTIONSTRING 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.

En skärmbild som visar hur du ser värdet för miljövariabeln MySQL i Azure.

För att sammanfatta innebar processen att hämta PostgreSQL-anslutningssträng från App Service miljövariabler, skapa ett Azure Key Vault för säker hemlig hantering med privat åtkomst och uppdatera tjänstanslutningen för att lagra lösenordet i nyckelvalvet. En säker anslutning mellan App Service-appen och nyckelvalvet upprättades med hjälp av en systemtilldelad hanterad identitet och konfigurationen verifierades genom att bekräfta att anslutningssträng använder en Key Vault-referens.

Har du problem? Kontrollera felsökningsavsnittet.


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.

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

  1. Logga in på ditt GitHub-konto.
  2. Navigera till https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.
  3. Markera Förgreningen.
  4. Välj Skapa förgrening.

En skärmbild som visar hur du skapar en förgrening av GitHub-exempellagringsplatsen (Flask).

Steg 2: På GitHub-sidan öppnar du Visual Studio Code i webbläsaren genom att trycka på . nyckeln.

En skärmbild som visar hur du öppnar Visual Studio Code-webbläsarupplevelsen i GitHub (Flask).

Steg 3: Öppna azureproject/production.py i utforskaren i Visual Studio Code i webbläsaren. Se de miljövariabler som används i produktionsmiljön, inklusive appinställningarna som du såg på konfigurationssidan.

En skärmbild som visar Visual Studio Code i webbläsaren och en öppnad fil (Flask).

Steg 4: På sidan App Service går du till den vänstra menyn och väljer Distributionscenter.

En skärmbild som visar hur du öppnar distributionscentret i App Service (Flask).

Steg 5: 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 huvud.
  6. Behåll standardalternativet valt för Att lägga till ett arbetsflöde.
  7. Under Autentiseringstyp väljer du Användartilldelad identitet.
  8. I den översta menyn väljer du Spara. App Service checkar in en arbetsflödesfil i den valda GitHub-lagringsplatsen i .github/workflows katalogen.

En skärmbild som visar hur du konfigurerar CI/CD med GitHub Actions (Flask).

Steg 6: På sidan Distributionscenter:

  1. Välj Loggar. En distributionskörning har redan startats.
  2. I loggobjektet för distributionskörningen väljer du Skapa/distribuera loggar.

En skärmbild som visar hur du öppnar distributionsloggar i distributionscentret (Flask).

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

En skärmbild som visar en Pågående GitHub-körning (Flask).

Har du problem? Kontrollera felsökningsguiden.

4. 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 App Service-containern.

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

  1. Välj SSH.
  2. Välj .

En skärmbild som visar hur du öppnar SSH-gränssnittet för din app från Azure Portal (Flask).

Steg 2: Kör i SSH-terminalen flask db upgrade. Om det lyckas ansluter App Service till databasen. Endast ändringar i filer i /home kan bevaras utöver omstarter av appar. Ändringar utanför /home sparas inte.

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

5. Bläddra till appen

Steg 1: På App Service-sidan:

  1. Välj Översikt på den vänstra menyn.
  2. Välj appens URL. Du kan också navigera direkt till https://<app-name>.azurewebsites.net.

En skärmbild som visar hur du startar en App Service från Azure Portal (Flask).

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.

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

6. Strömma diagnostikloggar

Azure App Service samlar in alla meddelanden som skickas till konsolen för att hjälpa dig att diagnostisera problem med ditt program. 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å App Service-sidan:

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

En skärmbild som visar hur du aktiverar interna loggar i App Service i Azure Portal.

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

En skärmbild som visar hur du visar loggströmmen i Azure Portal.

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

7. 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 Portal:

  1. Ange resursgruppsnamnet.
  2. Välj resursgruppen.

En skärmbild som visar hur du söker efter och navigerar till en resursgrupp i Azure Portal.

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

En skärmbild som visar platsen för knappen Ta bort resursgrupp i Azure Portal.

Steg 3:

  1. Ange resursgruppens namn för att bekräfta borttagningen.
  2. Välj Ta bort.

En skärmbild av bekräftelsedialogrutan för att ta bort en resursgrupp i Azure Portal. :

1. Skapa Azure-resurser och distribuera en exempelapp

I det här steget skapar du Azure-resurserna och distribuerar en exempelapp för att App Service på Linux. Stegen som används i den här självstudien skapar en uppsättning säkra som standardresurser som inkluderar App Service och Azure Database for PostgreSQL.

  1. Om du inte redan har gjort det klonar du exempellagringsplatsens starter-no-infra gren i en lokal terminal.

    git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
    cd msdocs-flask-postgresql-sample-app
    

    Den här klonade grenen är din startpunkt. Den innehåller ett enkelt Data Drive Flask-program.

  2. Från lagringsplatsens rot kör du azd init.

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

    Fråga Svar
    Den aktuella katalogen är inte tom. Vill du initiera ett projekt här i "<din katalog>"? 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 det här namnet som en del av DNS-namnet på din webbapp i Azure (<app-name>.azurewebsites.net). Alfanumeriska tecken och bindestreck tillåts.
  4. azd up Kör kommandot för att etablera nödvändiga Azure-resurser och distribuera appkoden. Om du inte redan är inloggad i Azure startas webbläsaren och du uppmanas att logga in. Kommandot azd up uppmanar dig också att välja önskad prenumeration och plats att distribuera till.

    azd up
    

    Det azd up kan ta några minuter att slutföra kommandot. Den kompilerar och distribuerar även programkoden, men du ändrar koden senare så att den fungerar med App Service. När den körs innehåller kommandot meddelanden om etablerings- och distributionsprocessen, inklusive en länk till distributionen i Azure. När det är klart visar kommandot även en länk till distributionsprogrammet.

    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å B1-nivån har angetts.
    • App Service → Representerar din app och körs i App Service-planen.
    • Virtuellt nätverk → integrerat med App Service-appen och isolerar serverdelsnätverkstrafik.
    • 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-arbetsytan → Fungerar som målcontainer för din app för att skicka loggarna, där du också kan köra frågor mot loggarna.

2. Använd databasen anslutningssträng

Azd-mallen som du använder genererade anslutningsvariablerna åt dig redan som appinställningar och matar ut dem till terminalen för din bekvämlighet. Appinställningar är ett sätt att hålla anslutningshemligheter borta från din kodlagringsplats.

  1. Leta upp appinställningarna i azd-utdata och leta reda på inställningarna AZURE_POSTGRESQL_CONNECTIONSTRING och AZURE_REDIS_CONNECTIONSTRING. För att skydda hemligheter visas endast inställningsnamnen. De ser ut så här i azd-utdata:

     App Service app has the following settings:
    
             - AZURE_POSTGRESQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - FLASK_DEBUG
             - SCM_DO_BUILD_DURING_DEPLOYMENT
             - SECRET_KEY
     
  2. AZURE_POSTGRESQL_CONNECTIONSTRINGinnehåller anslutningssträng till Postgres-databasen i Azure och AZURE_REDIS_CONNECTIONSTRING innehåller anslutningssträng till Redis-cachen i Azure. Du måste använda koden för att ansluta till den. Öppna azureproject/production.py, avkommentera följande rader och spara filen:

    conn_str = os.environ['AZURE_POSTGRESQL_CONNECTIONSTRING']
    conn_str_params = {pair.split('=')[0]: pair.split('=')[1] for pair in conn_str.split(' ')}
    DATABASE_URI = 'postgresql+psycopg2://{dbuser}:{dbpass}@{dbhost}/{dbname}'.format(
        dbuser=conn_str_params['user'],
        dbpass=conn_str_params['password'],
        dbhost=conn_str_params['host'],
        dbname=conn_str_params['dbname']
    )
    

    Programkoden har nu konfigurerats för att ansluta till PostgreSQL-databasen i Azure. Om du vill kan du öppna app.py och se hur DATABASE_URI miljövariabeln används.

  3. I terminalen kör du azd deploy.

    azd deploy
    

4. 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 App Service-containern.

  1. I azd-utdata letar du upp 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: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. I SSH-terminalen 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 (Flask).

    Kommentar

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

5. 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: https://<app-name>.azurewebsites.net/
     
  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.

6. Strömma diagnostikloggar

Azure App Service kan samla in konsolloggar som hjälper dig att diagnostisera problem med ditt program. För enkelhetens skull har azd-mallen redan aktiverat loggning till det lokala filsystemet samt fraktat dem till en Log Analytics-arbetsyta.

Exempelappen 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 azd-utdata hittar du länken för att strömma App Service-loggar och navigera till den i webbläsaren. Länken ser ut så här i azd-utdata:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

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

7. Rensa resurser

Om du vill ta bort alla Azure-resurser i den aktuella distributionsmiljön kör du azd down.

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_CONNECTIONSTRING'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_CONNECTIONSTRING) har ändrats. Utan den anslutningssträng kan migreringskommandot inte kommunicera med databasen.

Vanliga frågor och svar

Hur mycket kostar den här installationen?

Prissättningen för de skapade resurserna är följande:

  • 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 psql från appens SSH-terminal.
  • 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 var git push och 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 konfigureras Django-exemplet för att köras i Azure App Service?

Kommentar

Om du följer den här självstudien med din egen app kan du titta på requirements.txt filbeskrivning i varje projekts README.md fil (Flask, Django) för att se vilka paket du behöver.

Django-exempelprogrammet konfigurerar inställningar i filen azureproject/production.py så att den kan köras i Azure App Service. Dessa ändringar är vanliga för att distribuera Django till produktion, och inte specifika för App Service.

  • Django validerar HTTP_HOST-huvudet i inkommande begäranden. Exempelkoden använder WEBSITE_HOSTNAME miljövariabeln i App Service för att lägga till appens domännamn i Djangos inställning för ALLOWED_HOSTS .

    # Configure the domain name using the environment variable
    # that Azure automatically creates for us.
    ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
    
  • Django stöder inte servering av statiska filer i produktion. I den här självstudien använder du WhiteNoise för att aktivera servering av filerna. WhiteNoise-paketet har redan installerats med requirements.txt och dess mellanprogram läggs till i listan.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    Sedan konfigureras de statiska filinställningarna enligt Django-dokumentationen.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

Mer information finns i Produktionsinställningar för Django-appar.

Nästa steg

Gå vidare till nästa självstudie för att lära dig hur du skyddar din app med en anpassad domän och ett certifikat.

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