Share via


Självstudie: Använda Service Anslut or för att skapa en Django-app med Postgres i Azure App Service

Kommentar

I den här självstudien använder du Service Anslut or som förenklar processen med att ansluta en webbapp till en databastjänst. Den här självstudien är en ändring av App Service-självstudien, så du kan se vissa likheter. Titta i avsnittet Konfigurera miljövariabler för att ansluta databasen för att se var Service Anslut eller spelar in och förenklar anslutningsprocessen som anges i App Service-självstudien.

Den här självstudien visar hur du distribuerar en datadriven Python Django-webbapp till Azure App Service och ansluter den till en Azure Database for PostgreSQL – flexibel serverdatabas.

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

  • Konfigurera din första miljö med Python och Azure CLI
  • Skapa en flexibel Azure Database for PostgreSQL-serverdatabas
  • Distribuera kod till Azure App Service och anslut till En flexibel PostgreSQL-server
  • Uppdatera koden och distribuera om
  • Visa diagnostikloggar
  • Hantera webbappen i Azure-portalen

Konfigurera din första miljö

  1. Installera Python 3.8 eller senare. Kontrollera om Python-versionen är 3.8 eller senare genom att köra följande kod i ett terminalfönster:

    python3 --version
    
  2. Installera Azure CLI 2.30.0 eller senare. Kör kommandot för att kontrollera om din Azure CLI-version är 2.30.0 eller senare az --version . Om du behöver uppgradera kör az upgrade du (kräver version 2.30.0+).

  3. Logga in på Azure med CLI med az login. Det här kommandot öppnar en webbläsare för att samla in dina autentiseringsuppgifter. När kommandot har slutförts visas JSON-utdata som innehåller information om dina prenumerationer. När du har loggat in kan du köra Azure-kommandon med Azure CLI för att arbeta med resurser i din prenumeration.

Klona eller ladda ned exempelappen

Klona exempellagringsplatsen:

git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django.git

Navigera till följande mapp:

cd serviceconnector-webapp-postgresql-django

Använd den flexibla servergrenen i exemplet, som innehåller några nödvändiga ändringar, till exempel hur databasserverns URL anges och lägger 'OPTIONS': {'sslmode': 'require'} till i Django-databaskonfigurationen som krävs av Azure PostgreSQL – flexibel server.

git checkout flexible-server

Djangoapp-exemplet innehåller den datadrivna Django-omröstningsappen som du får genom att följa Skriva din första Django-app i Django-dokumentationen. Den färdiga appen tillhandahålls här för att underlätta för dig.

Exemplet ändras också så att det körs i en produktionsmiljö som App Service:

  • Produktionsinställningarna finns i filen azuresite/production.py . Utvecklingsinställningarna finns i azuresite/settings.py.
  • Appen använder produktionsinställningar när WEBSITE_HOSTNAME miljövariabeln anges. Azure App Service ställer automatiskt in den här variabeln på URL:en för webbappen, till exempel msdocs-django.azurewebsites.net.

Produktionsinställningarna är specifika för att konfigurera Django att köras i alla produktionsmiljöer och är inte specifika för App Service. Mer information finns i checklistan för Django-distribution. Mer information om några av ändringarna finns i Produktionsinställningar för Django på Azure.

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

Skapa Postgres-databas i Azure

  1. Aktivera cachelagring av parametrar med Azure CLI så att du inte behöver ange dessa parametrar med varje kommando. (Cachelagrade värden sparas i mappen .azure .)

    az config param-persist on 
    
  2. Skapa en resursgrupp (du kan ändra namnet om du vill). Resursgruppens namn cachelagras och tillämpas automatiskt på efterföljande kommandon.

    az group create --name ServiceConnector-tutorial-rg --location eastus
    
  3. Skapa databasservern (processen tar några minuter):

    az postgres flexible-server create --sku-name Standard_B1ms --public-access all
    

    az Om kommandot inte känns igen måste du ha Azure CLI installerat enligt beskrivningen i Konfigurera din första miljö.

    Kommandot az postgres flexible-server create utför följande åtgärder, vilket tar några minuter:

    • Skapa en standardresursgrupp om det inte redan finns ett cachelagrat namn.
    • Skapa en flexibel PostgreSQL-server:
      • Som standard använder kommandot ett genererat namn som server383813186. Du kan ange ditt eget namn med parametern --name . Namnet måste vara unikt i hela Azure.
      • Kommandot använder den lägsta prisnivån Standard_B1ms . --sku-name Utelämna argumentet för att använda standardnivånStandard_D2s_v3.
      • Kommandot använder resursgruppen och platsen som cachelagras från föregående az group create kommando, som i det här exemplet är resursgruppen ServiceConnector-tutorial-rg i eastus regionen.
    • Skapa ett administratörskonto med användarnamn och lösenord. Du kan ange dessa värden direkt med parametrarna --admin-user och --admin-password .
    • Skapa en databas med namnet flexibleserverdb som standard. Du kan ange ett databasnamn med parametern --database-name .
    • Aktiverar fullständig offentlig åtkomst, som du kan styra med hjälp av parametern --public-access .
  4. När kommandot har slutförts kopierar du kommandots JSON-utdata till en fil eftersom du behöver värden från utdata senare i den här självstudien, särskilt värden, användarnamnet och lösenordet, tillsammans med databasnamnet.

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

Distribuera koden till Azure App Service

I det här avsnittet skapar du appvärd i App Service-appen, ansluter den här appen till Postgres-databasen och distribuerar sedan koden till den värden.

Skapa App Service-appen

  1. Kontrollera att du är i mappen djangoapp-lagringsplats som innehåller appkoden i terminalen.

  2. Växla till exempelappens flexible-server gren. Den här grenen innehåller en specifik konfiguration som behövs för en flexibel PostgreSQL-server:

    git checkout flexible-server
    
  3. Kör följande az webapp up kommando för att skapa App Service-värden för appen:

    az webapp up --name <app-name> --sku B1 
    

    Det här kommandot utför följande åtgärder, vilket kan ta några minuter att använda resursgruppen och platsen som cachelagras från föregående az group create kommando (gruppen Python-Django-PGFlex-rg i eastus regionen i det här exemplet).

    • Skapa en App Service-plan på prisnivån Basic (B1). Du kan utelämna --sku att använda standardvärden.
    • Skapa App Service-appen.
    • Aktivera standardloggning för appen.
    • Ladda upp lagringsplatsen med hjälp av ZIP-distribution med versionsautomation aktiverat.

Vid lyckad distribution genererar kommandot JSON-utdata som i följande exempel:

Skärmbild av terminalen som visar ett exempel på utdata för kommandot az webapp up.

Har du problem? Gå först till felsökningsguiden, annars kan du meddela oss.

Konfigurera miljövariabler för att ansluta databasen

När koden nu har distribuerats till App Service är nästa steg att ansluta appen till Postgres-databasen i Azure.

Appkoden förväntar sig att hitta databasinformation i fyra miljövariabler med namnet AZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAME, AZURE_POSTGRESQL_USERoch AZURE_POSTGRESQL_PASS.

Om du vill ange miljövariabler i App Service skapar du "appinställningar" med följande az connection create kommando.

az webapp connection create postgres-flexible --client-type django

Resursgruppen, appnamnet, db-namnet hämtas från de cachelagrade värdena. Du måste ange administratörslösenord för postgres-databasen under körningen av det här kommandot.

  • Kommandot skapar inställningar med namnet "AZURE_POSTGRESQL_HOST", "AZURE_POSTGRESQL_NAME", "AZURE_POSTGRESQL_USER", "AZURE_POSTGRESQL_PASS" som förväntat av appkoden.
  • Om du har glömt autentiseringsuppgifterna för administratören hjälper kommandot dig att återställa dem.

Kommentar

Om du ser felmeddelandet "Prenumerationen är inte registrerad för användning av Microsoft.ServiceLinker" kör az provider register -n Microsoft.ServiceLinker du för att registrera tjänst-Anslut eller resursprovidern och kör anslutningskommandot igen.

I Python-koden får du åtkomst till de här inställningarna som miljövariabler med instruktioner som os.environ.get('AZURE_POSTGRESQL_HOST'). Mer information finns i Åtkomstmiljövariabler.

Har du problem? Gå först till felsökningsguiden, annars kan du meddela oss.

Köra Django-databasmigreringar

Django-databasmigreringar säkerställer att schemat i PostgreSQL på Azure-databasen matchar din kod.

  1. Kör az webapp ssh för att öppna en SSH-session för webbappen i webbläsaren:

    az webapp ssh
    
  2. Kör följande kommandon i SSH-sessionen:

    # Run database migrations
    python manage.py migrate
    
    # Create the super user (follow prompts)
    python manage.py createsuperuser
    

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

  3. Kommandot createsuperuser uppmanar dig att ange autentiseringsuppgifter för superanvändare. I den här självstudien använder du standardanvändarnamnet root, trycker på Retur för att lämna e-postadressen tom och anger Pollsdb1 för lösenordet.

  4. Om du ser ett fel om att databasen är låst kontrollerar du att du körde az webapp settings kommandot i föregående avsnitt. Utan dessa inställningar kan migreringskommandot inte kommunicera med databasen, vilket resulterar i felet.

Har du problem? Gå först till felsökningsguiden, annars kan du meddela oss.

Skapa en omröstningsfråga i appen

  1. Öppna appens webbplats. Appen bör visa meddelandet "Omröstningsapp" och "Inga omröstningar är tillgängliga" eftersom det ännu inte finns några specifika omröstningar i databasen.

    az webapp browse
    

    Om du ser "Programfel" är det troligt att du antingen inte skapade de nödvändiga inställningarna i föregående steg "Konfigurera miljövariabler för att ansluta databasen" eller att dessa värden innehåller fel. Kör kommandot az webapp config appsettings list för att kontrollera inställningarna.

    När du har uppdaterat inställningarna för att korrigera eventuella fel ger du appen en minut att starta om och uppdaterar sedan webbläsaren.

  2. Bläddra till webbappens administratörssida genom att lägga /admin till url:en, till exempel http://<app-name>.azurewebsites.net/admin. Logga in med Django superuser-autentiseringsuppgifter från föregående avsnitt (root och Pollsdb1). Under Omröstningar väljer du Lägg till bredvid Frågor och skapar en omröstningsfråga med några alternativ.

  3. Gå tillbaka till huvudwebbplatsen (http://<app-name>.azurewebsites.net) för att bekräfta att frågorna nu presenteras för användaren. Svara på frågor om hur du vill generera vissa data i databasen.

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

Kommentar

App Service identifierar ett Django-projekt genom att leta efter en wsgi.py fil i varje undermapp, vilket skapas som manage.py startproject standard. När App Service hittar filen läser den in Django-webbappen. Mer information finns i Konfigurera inbyggd Python-avbildning.

Rensa resurser

Om du vill behålla appen eller fortsätta med fler självstudier går du vidare till Nästa steg. Annars tar du bort resursgruppen som skapats för den här självstudien för att undvika löpande avgifter:

az group delete --name ServiceConnector-tutorial-rg --no-wait

Genom att ta bort resursgruppen frigör och tar du även bort alla resurser som finns i den. Se till att du inte längre behöver resurserna i gruppen innan du använder kommandot .

Det kan ta lite tid att ta bort alla resurser. Argumentet --no-wait gör att kommandot kan returneras omedelbart.

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

Gå vidare