Självstudie: Distribuera en Django-webbapp med PostgreSQL med hjälp av Azure Portal

Med hjälp Azure Portal kan du distribuera en datadriven Python Django-webbapp till Azure App Service ansluta den till en Azure Database for PostgreSQL databas. Du kan börja med en kostnadsfri prisnivå som kan skalas upp vid ett senare tillfälle. Du kan också prova PostgresSQL – flexibel server (förhandsversion) genom att välja alternativet ovan. Flexibel server ger en enklare distributionsmekanism och lägre löpande kostnader.

Med hjälp Azure Portal kan du distribuera en datadriven Python Django-webbapp till Azure App Service och ansluta den till en databas Azure Database for PostgreSQL Flexibel server (förhandsversion). Du kan börja med en kostnadsfri prisnivå som kan skalas upp vid ett senare tillfälle. Om du inte kan använda PostgreSQL – flexibel server (förhandsversion) väljer du alternativet Enskild server ovan.

Webbappskoden i det här fallet kommer från en GitHub-lagringsplats och du konfigurerar webbappen för kontinuerlig distribution från GitHub. När den har konfigurerats kan du fortsätta utveckla på din lokala dator och genomföra ändringar i lagringsplatsen. Webbappen på Azure distribuerar sedan ändringarna automatiskt.

I den här självstudien använder du Azure Portal för att utföra följande uppgifter:

  • Etablera en webbapp i Azure som distribueras från en GitHub lagringsplatsen
  • Etablera en PostgreSQL-server och databas i Azure och anslut den till webbappen.
  • Uppdatera koden och genomför ändringar för att automatiskt distribuera om från GitHub.
  • Visa diagnostikloggar
  • Hantera webbappen i Azure Portal

Du kan också använda den Azure CLI-baserade versionen av den här självstudien.

  • Etablera en webbapp i Azure som distribueras från en GitHub lagringsplatsen.
  • Etablera en flexibel PostgreSQL-server och databas i Azure och anslut den till webbappen.
  • Uppdatera koden och genomför ändringar för att automatiskt distribuera om från GitHub.
  • Visa diagnostikloggar.
  • Hantera webbappen i Azure Portal.

Du kan också använda den Azure CLI-baserade versionen av den här självstudien.

Fördring av exempeldatabasen

I en webbläsare navigerar du till https://github.com/Azure-Samples/djangoapp och förför databasen till ditt eget GitHub konto.

Du skapar en förgrening av den här lagringsplatsen så att du kan göra ändringar och distribuera om koden i ett senare steg.

(Valfritt) Om exemplet: Djangoapp-exemplet innehåller den datadrivna Django-avsökningsapp som du får genom att följa Skriva din första Django-app i Django-dokumentationen. Exemplet ändras också med checklistan för Django-distribution för att köras i en produktionsmiljö som Azure App Service. (De här ändringarna gäller alla produktionsmiljöer och är inte specifika för Azure.)

  • Produktionsinställningarna finns i filen azuresite/production.py. Utvecklingsinformation finns i azuresite/settings.py.
  • Appen använder produktionsinställningar när WEBSITE_HOSTNAME miljövariabeln anges. Azure App Service anger automatiskt den här variabeln till webbappens URL, till exempel msdocs-django.azurewebsites.net .

Har du problem? Berätta för oss.

Etablera PostgreSQL-databasservern i Azure

  1. Öppna Azure-portalen.

  2. Välj Skapa en resurs,vilket öppnar sidan Nytt.

  3. Sök efter och välj Azure Database for PostgreSQLoch välj sedan Skapa.

  4. På nästa sida väljer du Skapa under Enskild server.

  5. Ange följande information på sidan Enskild server:

    Fält Värde
    Prenumeration Välj den prenumeration som du vill använda om den skiljer sig från standardprenumerationen.
    Resursgrupp Välj Skapa ny och ange "DjangoPostgres-Tutorial-rg".
    Servernamn Ett namn för databasservern som är unikt för hela Azure (databasserverns URL blir https://<server-name>.postgres.database.azure.com ). Tillåtna tecken A-Z är , 0-9 och - . Ett bra mönster är att använda en kombination av företagets namn och serveridentifierare.
    Datakälla Ingen
    Plats Välj en plats nära dig.
    Version Behåll standardvärdet (som är den senaste versionen).
    Compute + Storage Välj Konfigurera serveroch sedan Basic och Gen 5. Ange vCore till 1, ange Storage till 5 GB och välj sedan OK. De här alternativen etablerar den billigaste servern som är tillgänglig för PostgreSQL på Azure. Du kan också ha en kredit i ditt Azure-konto som täcker kostnaden för servern.
    Administratörens användarnamn, lösenord, bekräfta lösenord Ange autentiseringsuppgifter för ett administratörskonto på databasservern. Registrera dessa autentiseringsuppgifter eftersom du behöver dem senare i den här självstudien. Obs! Använd inte tecknet $ i användarnamnet eller lösenordet. Senare skapar du miljövariabler med dessa värden där tecknet har $ en särskild betydelse i Linux-containern som används för att köra Python-appar.
  6. Välj Granska + skapa och klicka sedan på Skapa. Det tar några minuter för Azure att etablera webbappen.

  7. När etableringen är klar väljer du Gå till resurs för att öppna översiktssidan för databasservern.

Etablera PostgreSQL – flexibel serverdatabasserver i Azure

  1. Öppna Azure-portalen.

  2. Välj Skapa en resurs,vilket öppnar sidan Nytt.

  3. Sök efter och välj Azure Database for PostgreSQL flexibla servraroch välj sedan Skapa.

  4. På nästa sida går du till rutan Flexibel server (förhandsversion) och väljer Skapa.

  5. Ange följande information på sidan Enskild server:

    Fält Värde
    Prenumeration Välj den prenumeration som du vill använda om den skiljer sig från standardprenumerationen.
    Resursgrupp Välj Skapa ny och ange "DjangoPostgres-Tutorial-rg".
    Servernamn Ett namn för databasservern som är unikt för hela Azure (databasserverns URL blir https://<server-name>.postgres.database.azure.com ). Tillåtna tecken A-Z är , 0-9 och - . Ett bra mönster är att använda en kombination av företagets namn och serveridentifierare.
    Region Välj en plats nära dig.
    Arbetsbelastningstyp Utveckling om du bara experimenterar, annars ett lämpligt produktionsalternativ.
    Compute + Storage Lämna standardvärdet Burstable, B1ms, som är det billigaste alternativet om du inte vill ha högre prestanda.
    Tillgänglighetszon, Hög tillgänglighet, PostgreSQL-version Låt standardvärdena vara kvar.
    Administratörens användarnamn, lösenord, bekräfta lösenord Ange autentiseringsuppgifter för ett administratörskonto på databasservern. Registrera dessa autentiseringsuppgifter eftersom du behöver dem senare i den här självstudien. Obs! Använd inte tecknet $ i användarnamnet eller lösenordet. Senare skapar du miljövariabler med dessa värden där tecknet har $ en särskild betydelse i Linux-containern som används för att köra Python-appar.
  6. Välj Nästa: Nätverk och ange Anslutningsmetod till Offentlig åtkomst på sidan. Under Brandväggsregler markerar du sedan kryssrutan Tillåt offentlig åtkomst från alla Azure-tjänster i Azure till den här servern.

  7. Välj Granska + skapa och klicka sedan på Skapa. Det tar några minuter för Azure att etablera databasservern.

  8. När etableringen är klar väljer du Gå till resurs för att öppna översiktssidan för databasservern.

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Skapa databasen pollsdb på PostgreSQL-servern

I det här avsnittet ansluter du till databasservern i Azure Cloud Shell och använder ett PostgreSQL-kommando för att skapa en "pollsdb"-databas på servern. Den här databasen förväntas av exempelappkoden.

  1. På översiktssidan för PostgreSQL-servern väljer du Anslutningssäkerhet(under Inställningar till vänster).

    Säkerhetssida för portalanslutning för brandväggsregler

  2. För Tillåt åtkomst till Azure-tjänsten Väljer du Ja för Välj knappen Med etiketten Lägg till 0.0.0.0 –255.255.255.255väljer du Fortsätt i popup-meddelandet som visas följt av Spara överst på sidan. De här åtgärderna lägger till en regel som gör att du kan ansluta till databasservern från Cloud Shell samt SSH (som du gör i ett senare avsnitt för att köra Django-datamodellmigrering).

  3. Öppna Azure Cloud Shell från Azure Portal genom att välja Cloud Shell ikonen längst upp i fönstret:

    Cloud Shell i verktygsfältet Azure Portal verktygsfältet

  4. I Cloud Shell kör du följande kommando:

    psql --host=<server-name>.postgres.database.azure.com --port=5432 --username=<user-name>@<server-name> --dbname=postgres
    

    Ersätt <server-name> och med de namn som användes i föregående avsnitt när du <user-name> konfigurerade servern. Observera att det fullständiga användarnamnsvärdet som krävs av Postgres är <user-name>@<server-name> .

    Du kan kopiera kommandot ovan och klistra in det i Cloud Shell genom att högerklicka och sedan välja Klistra in.

    Ange ditt administratörslösenord när du uppmanas att göra det.

  5. När gränssnittet ansluter bör du se prompten postgres=> . Den här prompten anger att du är ansluten till den administrativa standarddatabasen med namnet "postgres". (Postgres-databasen är inte avsedd för appanvändning.)

  6. Kör kommandot i CREATE DATABASE pollsdb; kommandotolken. Se till att inkludera det avslutande semikolonet, som slutför kommandot.

  7. Om databasen har skapats ska kommandot visa CREATE DATABASE . Kontrollera att databasen har skapats genom att köra \c pollsdb . Det här kommandot bör ändra prompten till pollsdb=> , vilket indikerar att det lyckades.

  8. Avsluta psql genom att köra kommandot exit .

  1. Öppna Azure Cloud Shell från Azure Portal genom att välja Cloud Shell ikonen längst upp i fönstret:

    Cloud Shell i verktygsfältet Azure Portal verktygsfältet

  2. I Cloud Shell kör du följande kommando:

    psql --host=<server-url>.postgres.database.azure.com --port=5432 --username=<user-name> --dbname=postgres
    

    Ersätt <server-name> och med de namn som användes i föregående avsnitt när du <user-name> konfigurerade servern.

    Du kan kopiera kommandot ovan och klistra in det i Cloud Shell genom att högerklicka och sedan välja Klistrain och sedan redigera kommandot för att ersätta de nödvändiga värdena.

    Ange ditt administratörslösenord när du uppmanas att göra det.

  3. När gränssnittet ansluter bör du se prompten postgres=> . Den här prompten anger att du är ansluten till den administrativa standarddatabasen med namnet "postgres". (Postgres-databasen är inte avsedd för appanvändning.)

  4. Kör kommandot i CREATE DATABASE pollsdb; kommandotolken. Se till att inkludera det avslutande semikolonet, som slutför kommandot.

  5. Om databasen har skapats ska kommandot visa CREATE DATABASE . Kontrollera att databasen har skapats genom att köra \c pollsdb . Det här kommandot bör ändra prompten till pollsdb=> , vilket indikerar att det lyckades.

  6. Avsluta psql genom att köra kommandot exit .

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Etablera webbappen i Azure

  1. Öppna ett nytt webbläsarfönster eller en ny flik med Azure Portal. Du använder en ny flik för att hålla databassidan öppen, eftersom du måste överföra viss information från databassidan till webbappsidan.

  2. Välj Skapa en resurs, vilket öppnar sidan Nytt.

  3. Sök efter och välj Webbappoch välj sedan Skapa.

  4. På sidan Skapa webbapp anger du följande information:

    Fält Värde
    Prenumeration Välj den prenumeration som du vill använda om den skiljer sig från standardprenumerationen.
    Resursgrupp Välj gruppen "DjangoPostgres-Tutorial-rg" som du skapade i föregående avsnitt.
    Appnamn Ett namn för din webbapp som är unikt för hela Azure (appens URL är https://<app-name>.azurewebsites.net ). Tillåtna tecken A-Z är , 0-9 och - . Ett bra mönster är att använda en kombination av företagets namn och en appidentifierare.
    Publicera Välj Kod.
    Körningsstack Välj Python 3.8 i listrutan.
    Region Välj en plats nära dig.
    Linux-plan Portalen fyller i det här fältet med ett App Service plannamn baserat på din resursgrupp. Om du vill ändra namnet väljer du Skapa ny.
    SKU och storlek För bästa prestanda använder du standardplanen, även om det medför avgifter i din prenumeration. För att undvika kostnader väljer du Ändrastorlek och sedan Dev/Test,väljer B1 (kostnadsfritt i 30 dagar) och sedan Använd. Du kan skala planen senare för bättre prestanda.
  5. Välj Granska + skapaoch välj sedan Skapa. Det tar några minuter för Azure att etablera webbappen.

  6. När etableringen är klar väljer du Gå till resurs för att öppna översiktssidan för webbappen. Låt det här webbläsarfönstret eller fliken vara öppet för senare steg.

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Anslut appen till databasen

I det här avsnittet skapar du inställningar för webbappen som den behöver för att ansluta till pollsdb databasen. De här inställningarna visas i appkoden som miljövariabler. (Mer information finns i Åtkomst till miljövariabler.)

  1. På portalsidan för webbappen från föregående avsnitt väljer du Konfiguration(under Inställningar till vänster) och sedan Programinställningar överst på sidan.

    Konfiguration av portalinställningar för webbappar

  2. Använd knappen Ny programinställning för att skapa inställningar för vart och ett av följande värden (som förväntas av djangoapp-exemplet):

    Inställningsnamn Värde
    DBHOST Namnet på databasservern från föregående avsnitt. det vill säga <server-name> den del av serverns URL som föregår .postgres.database.azure.com . (Koden i azuresite/production.py skapar automatiskt den fullständiga URL:en.)
    DBNAME pollsdb
    DBUSER Administratörsanvändarnamnet som användes när du etablerade databasen. (Exempelkoden lägger automatiskt till @<server-name> -delen. Se @<server-name>.)
    DBPASS Administratörslösenordet som du skapade tidigare.

    Som tidigare nämnts bör du inte använda tecknet i användarnamnet eller lösenordet eftersom det tecknet är rymt i miljövariabler i $ Linux-containern som är värd för Python-appar.

  3. Välj Spara och sedan Fortsätt för att tillämpa inställningarna.

    Viktigt

    Det är viktigt att du väljer Spara när du har gjort ändringar i inställningarna. Inställningar som du skapar med knappen Ny programinställning tillämpas inte förrän du använder Spara.

  1. På portalsidan för webbappen från föregående avsnitt väljer du Konfiguration(under Inställningar till vänster) och sedan Programinställningar överst på sidan.

    Konfiguration av portalinställningar för webbappar

  2. Använd knappen Ny programinställning för att skapa inställningar för vart och ett av följande värden (som förväntas av djangoapp-exemplet):

    Inställningsnamn Värde
    DBHOST URL:en för databasservern från föregående avsnitt. det vill säga <server-name>.postgres.database.azure.com .
    DBNAME pollsdb
    DBUSER Administratörsanvändarnamnet som användes när du etablerade databasen.
    DBPASS Administratörslösenordet som du skapade tidigare.

    Som tidigare nämnts ska du inte använda tecknet i användarnamnet eller lösenordet eftersom det tecknet är rymt i miljövariabler i $ Linux-containern som är värd för Python-appar.

  3. Välj Spara och sedan Fortsätt för att tillämpa inställningarna.

    Viktigt

    Det är viktigt att du väljer Spara när du har gjort ändringar i inställningarna. Inställningar som du skapar med knappen Ny programinställning tillämpas inte förrän du använder Spara.

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Distribuera appkod till webbappen från en lagringsplats

Nu när databas- och anslutningsinställningarna är på plats kan du konfigurera webbappen så att den distribuerar kod direkt från en GitHub lagringsplats.

  1. I webbläsarfönstret eller fliken för webbappen väljer du Distributionscenter (under Distribution till vänster).

  2. I källkontrollen väljer du GitHub auktorisera (om det behövs). Följ sedan inloggningsanvisningarna eller välj Fortsätt för att använda din GitHub inloggning.

    Om du ser ett popup-fönster med texten autentiseringen lyckades, men portalen fortfarande visar knappen Auktorisera, uppdaterar du sidan och din GitHub-inloggning bör visas i GitHub rutan. Markera GitHub igen och välj sedan Fortsätt.

  3. I GitHub väljer du följande värden:

    Fält Värde
    Organisation Det GitHub konto som du förförde exempeldatabasen till.
    Lagringsplats djangoapp
    Gren Om du använder en enskild server: huvudserver
    Om du använder flexibel server: flexible-server
  4. Välj Spara för att utlösa bygg- och distributionsarbetsflödet. Gå till Åtgärder på din GitHub för djangoapp för att övervaka förloppet. Azure bör distribuera koden och starta appen.

    App Service identifierar ett Django-projekt genom att leta efter wsgi.py fil i varje undermapp. När App Service hittar filen läses Django-webbappen in. Mer information finns i Konfigurera den inbyggda Python-avbildningen.

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Köra Django-databasmigrering

När koden har distribuerats och databasen är på plats är appen nästan redo att användas. Det enda som återstår är att upprätta det nödvändiga schemat i själva databasen. Det gör du genom att "migrera" datamodellerna i Django-appen till databasen.

  1. I webbläsarfönstret eller fliken för webbappen väljer du SSH (under Utvecklingsverktyg till vänster) och sedan Gå för att öppna en SSH-konsol på webbservern för webbappen. Det kan ta en minut att ansluta för första gången eftersom webbappcontainern måste starta.

    Om kommandot ls bara visar en fil lshar distributionen ännu inte slutförts från föregående steg. Kontrollera status i Åtgärder GitHub lagringsplatsen. När bygget är klart ls bör kommandot visa appens filer, särskilt ls.

  2. I -konsolen kör du databasmigrering:

    python manage.py migrate
    

    Om du stöter på fel som rör anslutning till databasen kontrollerar du värdena för de programinställningar som skapades i Anslut databasen.

  3. Skapa en administratörsinloggning för appen:

    python manage.py createsuperuser
    

    Kommandot createsuperuser uppmanar dig att ange Django-autentiseringsuppgifter för superanvändare (eller administratör), som används i webbappen. I den här självstudien använder du standardnamnet , trycker på Retur för e-postadressen för att lämna den tom och root anger för rootPollsdb1 lösenordet.

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Skapa en omröstningsfråga i appen

Nu är du redo att köra ett snabbtest av appen för att visa att den fungerar med PostgreSQL-databasen.

  1. I webbläsarfönstret eller fliken för webbappen går du tillbaka till sidan Översikt och väljer sedan webbappens URL (i formuläret ).

  2. Appen bör visa meddelandet "Appen Avsöker" och "Inga omröstningar är tillgängliga" eftersom det inte finns några specifika omröstningar ännu i databasen.

  3. Bläddra till (sidan Django-administration) och logga in med autentiseringsuppgifterna för http://<app-name>.azurewebsites.net/admin Django-superanvändaren från föregående avsnitt ( root och Pollsdb1 ).

  4. Under Omröstningar väljer du Lägg till bredvid Frågor och skapar en omröstningsfrågamed vissa alternativ.

  5. Bläddra igen http://<app-name>.azurewebsites.net/ till för att bekräfta att frågorna nu visas för användaren. Besvara frågor men du vill generera data i databasen.

Grattis! Du kör en Python Django-webbapp i Azure App Service för Linux, med en aktiv PostgreSQL-databas.

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Uppdatera och distribuera om appen

Som vi beskrev tidigare i den här självstudien distribuerar Azure om din appkod när du genomför ändringar i GitHub lagringsplatsen.

Om du ändrar Django-appens datamodeller måste du dock migrera ändringarna till databasen:

  1. Anslut till webbappen igen via SSH enligt beskrivningen under Kör Django-databasmigrering.

  2. Kör migreringarna igen med python manage.py migrate .

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Visa diagnostikloggar

Du kan komma åt konsolloggarna som genereras inifrån containern som är värd för appen i Azure.

På webbappens sida i Azure Portal väljer du Loggström(under Övervakning till vänster). Loggarna visas som konsolutdata.

Du kan även granska loggfilerna från din webbläsare via https://<app-name>.scm.azurewebsites.net/api/logs/docker.

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Rensa resurser

Du kan låta appen och databasen köras så länge du vill för vidare utvecklingsarbete. Annars kan du ta bort resursgruppen som skapades för den här självstudien för att undvika löpande avgifter, vilket tar bort alla resurser som ingår i den:

  1. På Azure Portal anger du "DjangoPostgres-Tutorial-rg" i sökfältet längst upp i fönstret och väljer sedan samma namn under Resursgrupper.

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

  3. Ange namnet på resursgruppen när du uppmanas att göra det och välj Ta bort.

Har du problem? Läs först i felsökningsguiden,annars kan du berätta för oss.

Nästa steg

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