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ö
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
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öraz upgrade
du (kräver version 2.30.0+).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 exempelmsdocs-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
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
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
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 resursgruppenServiceConnector-tutorial-rg
ieastus
regionen.
- Som standard använder kommandot ett genererat namn som
- 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
.
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
Kontrollera att du är i mappen djangoapp-lagringsplats som innehåller appkoden i terminalen.
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
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 (gruppenPython-Django-PGFlex-rg
ieastus
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.
- Skapa en App Service-plan på prisnivån Basic (B1). Du kan utelämna
Vid lyckad distribution genererar kommandot JSON-utdata som i följande exempel:
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_USER
och 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.
Kör
az webapp ssh
för att öppna en SSH-session för webbappen i webbläsaren:az webapp ssh
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.
Kommandot
createsuperuser
uppmanar dig att ange autentiseringsuppgifter för superanvändare. I den här självstudien använder du standardanvändarnamnetroot
, trycker på Retur för att lämna e-postadressen tom och angerPollsdb1
för lösenordet.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
Ö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.
Bläddra till webbappens administratörssida genom att lägga
/admin
till url:en, till exempelhttp://<app-name>.azurewebsites.net/admin
. Logga in med Django superuser-autentiseringsuppgifter från föregående avsnitt (root
ochPollsdb1
). Under Omröstningar väljer du Lägg till bredvid Frågor och skapar en omröstningsfråga med några alternativ.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.