Delen via


Een Python-web-app (Django of Flask) implementeren met PostgreSQL in Azure

In deze zelfstudie implementeert u een gegevensgestuurde Python-web-app (Django of Flask) in Azure-app Service met de relationele Database for PostgreSQL-databaseservice van Azure Database for PostgreSQL. Azure-app Service ondersteunt Python in een Linux-serveromgeving.

Een architectuurdiagram met een App Service met een PostgreSQL-database in Azure.

U hebt het volgende nodig om deze zelfstudie te voltooien:

Naar het einde gaan

Als Azure Developer CLI is geïnstalleerd, kunt u een volledig geconfigureerde voorbeeld-app implementeren die in deze zelfstudie wordt weergegeven en kunt u zien dat deze wordt uitgevoerd in Azure. Voer alleen de volgende opdrachten uit in een lege werkmap:

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

Voorbeeldtoepassing

Voorbeelden van Python-toepassingen die gebruikmaken van het Flask- en Django-framework, helpen u bij het volgen van deze zelfstudie. Als u ze wilt implementeren zonder ze lokaal uit te voeren, slaat u dit deel over.

Als u de toepassing lokaal wilt uitvoeren, controleert u of Python 3.7 of hoger is geïnstalleerd en PostgreSQL lokaal is geïnstalleerd. Kloon vervolgens de vertakking van starter-no-infra de voorbeeldopslagplaats en ga naar de hoofdmap van de opslagplaats.

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

Maak een .env-bestand zoals hieronder wordt weergegeven met behulp van het .env.sample-bestand als richtlijn. Stel de waarde in van DBNAME de naam van een bestaande database in uw lokale PostgreSQL-exemplaar. Stel de waarden van DBHOST, DBUSERen DBPASS indien van toepassing op uw lokale PostgreSQL-exemplaar in.

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

Maak een virtuele omgeving voor de app:

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

De afhankelijkheden installeren:

pip install -r requirements.txt

Voer de voorbeeldtoepassing uit met de volgende opdrachten:

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

1. App Service en PostgreSQL maken

git clone https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.git

In deze stap maakt u de Azure-resources. Met de stappen die in deze zelfstudie worden gebruikt, maakt u een set beveiligde standaardbronnen met App Service en Azure Database for PostgreSQL. Voor het aanmaakproces geeft u het volgende op:

  • De naam voor de web-app. Dit is de naam die wordt gebruikt als onderdeel van de DNS-naam voor uw web-app in de vorm van https://<app-name>.azurewebsites.net.
  • De regio om de app fysiek in de wereld uit te voeren.
  • De runtimestack voor de app. Hier selecteert u de versie van Python die u voor uw app wilt gebruiken.
  • Het hostingabonnement voor de app. Dit is de prijscategorie die de set functies en schaalcapaciteit voor uw app bevat.
  • De resourcegroep voor de app. Met een resourcegroep kunt u alle Azure-resources die nodig zijn voor de toepassing groeperen (in een logische container).

Meld u aan bij Azure Portal en volg deze stappen om uw Azure-app Service-resources te maken.

Stap 1: In Azure Portal:

  1. Voer 'web-app-database' in de zoekbalk boven aan Azure Portal in.
  2. Selecteer het item met het label Web App + Database onder de kop Marketplace . U kunt ook rechtstreeks naar de wizard voor het maken navigeren.

Een schermopname die laat zien hoe u het zoekvak in de bovenste werkbalk gebruikt om de wizard Web-app en database maken (Flask) te vinden.

Stap 2: Vul op de pagina Web-app en database maken het formulier als volgt in.

  1. Resourcegroep → Nieuwe maken selecteren en een naam van msdocs-python-postgres-tutorial gebruiken.
  2. Regio → Elke Azure-regio bij u in de buurt.
  3. Naammsdocs-python-postgres-XYZ waarbij XYZ uit drie willekeurige tekens bestaat. Deze naam moet uniek zijn binnen Azure.
  4. RuntimestackPython 3.10.
  5. DatabasePostgreSQL - Flexible Server is standaard geselecteerd als de database-engine. De servernaam en databasenaam worden ook standaard ingesteld op de juiste waarden.
  6. HostingabonnementBasic. Wanneer u klaar bent, kunt u later omhoog schalen naar een prijscategorie voor productie.
  7. Selecteer Controleren + maken.
  8. Nadat de validatie is voltooid, selecteert u Maken.

Een schermopname die laat zien hoe u een nieuwe app en database configureert in de wizard Web App + Database (Flask).

Stap 3: Het duurt enkele minuten voordat de implementatie is voltooid. Zodra de implementatie is voltooid, selecteert u de knop Ga naar resource . U wordt rechtstreeks naar de App Service-app gebracht, maar de volgende resources worden gemaakt:

  • Resourcegroep → De container voor alle gemaakte resources.
  • App Service-plan → Definieert de rekenresources voor App Service. Er wordt een Linux-plan in de Basic-laag gemaakt.
  • App Service → Vertegenwoordigt uw app en wordt uitgevoerd in het App Service-plan.
  • Virtueel netwerk → geïntegreerd met de App Service-app en isoleert back-endnetwerkverkeer.
  • Flexibele Azure Database for PostgreSQL-server → alleen toegankelijk vanuit het virtuele netwerk. Er worden een database en een gebruiker voor u gemaakt op de server.
  • Privé-DNS zone → Dns-omzetting van de PostgreSQL-server in het virtuele netwerk inschakelen.

Een schermopname van het voltooide implementatieproces (Flask).

2. Verbindingsinstellingen controleren

De wizard Voor het maken zijn de connectiviteitsvariabelen voor u gegenereerd, al als app-instellingen. App-instellingen zijn een manier om verbindingsgeheimen uit uw codeopslagplaats te houden. Wanneer u klaar bent om uw geheimen te verplaatsen naar een veiligere locatie, vindt u hier een artikel over het opslaan in Azure Key Vault.

Stap 1: Selecteer Configuratie in het linkermenu op de pagina App Service.

Een schermopname van het openen van de configuratiepagina in App Service (Flask).

Stap 2: Controleer of dit AZURE_POSTGRESQL_CONNECTIONSTRING aanwezig is op het tabblad Toepassingsinstellingen van de pagina Configuratie. Dit wordt als omgevingsvariabele in de runtime-omgeving geïnjecteerd.

Een schermopname die laat zien hoe u de automatisch gegenereerde verbindingsreeks (Flask) ziet.

Stap 3: Voer in een terminal- of opdrachtprompt het volgende Python-script uit om een uniek geheim te genereren: python -c 'import secrets; print(secrets.token_hex())' Kopieer de uitvoerwaarde die u in de volgende stap wilt gebruiken.

3. Voorbeeldcode implementeren

In deze stap configureert u gitHub-implementatie met behulp van GitHub Actions. Het is slechts een van de vele manieren om te implementeren in App Service, maar ook een uitstekende manier om continue integratie in uw implementatieproces te hebben. Standaard wordt met elke git push gitHub-opslagplaats de build- en implementatieactie gestart.

Stap 1: In een nieuw browservenster:

  1. Meld u aan bij uw GitHub-account.
  2. Navigeer naar https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.
  3. Selecteer Vorken.
  4. Selecteer Een fork maken.

Een schermopname van het maken van een fork van de GitHub-voorbeeldopslagplaats (Flask).

Stap 2: Open Visual Studio Code op de GitHub-pagina in de browser door op de . toets te drukken.

Een schermopname van het openen van de Visual Studio Code-browserervaring in GitHub (Flask).

Stap 3: Open in Visual Studio Code in de browser azureproject/production.py in de verkenner. Bekijk de omgevingsvariabelen die worden gebruikt in de productieomgeving, inclusief de app-instellingen die u op de configuratiepagina hebt gezien.

Een schermopname van Visual Studio Code in de browser en een geopend bestand (Flask).

Stap 4: Ga terug naar de pagina App Service en selecteer in het linkermenu Implementatiecentrum.

Een schermopname van het openen van het implementatiecentrum in App Service (Flask).

Stap 5: Op de pagina Implementatiecentrum:

  1. Selecteer GitHub in Bron. GitHub Actions is standaard geselecteerd als buildprovider.
  2. Meld u aan bij uw GitHub-account en volg de prompt om Azure te autoriseren.
  3. Selecteer uw account in Organisatie.
  4. Selecteer in Opslagplaats msdocs-flask-postgresql-sample-app.
  5. Selecteer in Vertakking de hoofdmap.
  6. Laat de standaardoptie geselecteerd om een werkstroom toe te voegen.
  7. Selecteer onder Verificatietype de door de gebruiker toegewezen identiteit.
  8. Selecteer Opslaan in het bovenste menu. App Service voert een werkstroombestand door in de gekozen GitHub-opslagplaats in de .github/workflows map.

Een schermopname van het configureren van CI/CD met behulp van GitHub Actions (Flask).

Stap 6: Op de pagina Implementatiecentrum:

  1. Selecteer Logboeken. Er is al een implementatieuitvoering gestart.
  2. Selecteer build-/deploy-logboeken in het logboekitem voor de implementatieuitvoering.

Een schermopname die laat zien hoe u implementatielogboeken opent in het implementatiecentrum (Flask).

Stap 7: U gaat naar uw GitHub-opslagplaats en ziet dat de GitHub-actie wordt uitgevoerd. Het werkstroombestand definieert twee afzonderlijke fasen, bouwen en implementeren. Wacht totdat de GitHub-uitvoering de status Voltooid weergeeft. Het duurt ongeveer 5 minuten.

Een schermopname van een Actieve GitHub-uitvoering (Flask).

Ondervindt u problemen? Raadpleeg de gids voor probleemoplossing.

4. Databaseschema genereren

Met de PostgreSQL-database die wordt beveiligd door het virtuele netwerk, is de eenvoudigste manier om Flask-databasemigraties uit te voeren in een SSH-sessie met de App Service-container.

Stap 1: Terug op de App Service-pagina, in het linkermenu,

  1. Selecteer SSH.
  2. Selecteer Go.

Een schermopname van het openen van de SSH-shell voor uw app vanuit Azure Portal (Flask).

Stap 2: Voer flask db upgradein de SSH-terminal uit. Als dit lukt, maakt App Service verbinding met de database. Alleen wijzigingen in bestanden in /home kunnen zich blijven voordoen na het opnieuw opstarten van de app. Wijzigingen buiten /home zijn niet behouden.

Een schermopname van de opdrachten die moeten worden uitgevoerd in de SSH-shell en de bijbehorende uitvoer (Flask).

5. Blader naar de app

Stap 1: Op de App Service-pagina:

  1. Selecteer Overzicht in het linkermenu.
  2. Selecteer de URL van uw app. U kunt ook rechtstreeks naar https://<app-name>.azurewebsites.net.

Een schermopname die laat zien hoe u een App Service start vanuit Azure Portal (Flask).

Stap 2: Voeg een paar restaurants toe aan de lijst. Gefeliciteerd, u voert een web-app uit in Azure-app Service, met beveiligde connectiviteit met Azure Database for PostgreSQL.

Een schermopname van de Flask-web-app waarin PostgreSQL wordt uitgevoerd in Azure met restaurants en restaurantbeoordelingen (Flask).

6. Diagnostische logboeken streamen

Azure-app Service legt alle berichtenuitvoer vast in de console om u te helpen bij het vaststellen van problemen met uw toepassing. De voorbeeld-app bevat print() instructies om deze mogelijkheid te demonstreren, zoals hieronder wordt weergegeven.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Stap 1: Op de App Service-pagina:

  1. Selecteer App Service-logboeken in het linkermenu.
  2. Selecteer Bestandssysteem onder Toepassingslogboek.
  3. Selecteer Opslaan in het bovenste menu.

Een schermopname van het inschakelen van systeemeigen logboeken in App Service in Azure Portal.

Stap 2: Selecteer in het menu links de optie Logboekstream. U ziet de logboeken voor uw app, inclusief platformlogboeken en logboeken vanuit de container.

Een schermopname die laat zien hoe u de logboekstream kunt weergeven in Azure Portal.

Meer informatie over logboekregistratie in Python-apps in de reeks over het instellen van Azure Monitor voor uw Python-toepassing.

7. Resources opschonen

Wanneer u klaar bent, kunt u alle resources uit uw Azure-abonnement verwijderen door de resourcegroep te verwijderen.

Stap 1: In de zoekbalk boven aan Azure Portal:

  1. Voer de naam van de resourcegroup in.
  2. Selecteer de resourcegroep.

Een schermopname van het zoeken naar en navigeren naar een resourcegroep in Azure Portal.

Stap 2: Selecteer op de pagina Resourcegroep verwijderen.

Een schermopname van de locatie van de knop Resourcegroep verwijderen in Azure Portal.

Stap 3:

  1. Voer de naam van de resourcegroep in om uw verwijdering te bevestigen.
  2. Selecteer Verwijderen.

Een schermopname van het bevestigingsvenster voor het verwijderen van een resourcegroep in Azure Portal. :

1. Azure-resources maken en een voorbeeld-app implementeren

In deze stap maakt u de Azure-resources en implementeert u een voorbeeld-app in App Service op Linux. Met de stappen die in deze zelfstudie worden gebruikt, maakt u een set beveiligde standaardbronnen met App Service en Azure Database for PostgreSQL.

  1. Als u dat nog niet hebt gedaan, kloont u de vertakking van starter-no-infra de voorbeeldopslagplaats in een lokale terminal.

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

    Deze gekloonde vertakking is het uitgangspunt. Het bevat een eenvoudige Flask-toepassing voor gegevensstations.

  2. Voer vanuit de hoofdmap van de opslagplaats de opdracht uit azd init.

    azd init --template python-app-service-postgresql-infra
    
  3. Geef de volgende antwoorden wanneer u hierom wordt gevraagd:

    Vraag Antwoord
    De huidige map is niet leeg. Wilt u hier een project initialiseren in '<your-directory>'? Y
    Wat wilt u doen met deze bestanden? Mijn bestaande bestanden ongewijzigd houden
    Voer een nieuwe omgevingsnaam in Typ een unieke naam. De azd-sjabloon gebruikt deze naam als onderdeel van de DNS-naam van uw web-app in Azure (<app-name>.azurewebsites.net). Alfanumerieke tekens en afbreekstreepjes zijn toegestaan.
  4. Voer de azd up opdracht uit om de benodigde Azure-resources in te richten en de app-code te implementeren. Als u nog niet bent aangemeld bij Azure, wordt de browser gestart en wordt u gevraagd u aan te melden. Met de azd up opdracht wordt u ook gevraagd om het gewenste abonnement en de gewenste locatie te selecteren waarop u wilt implementeren.

    azd up
    

    Het kan enkele minuten duren voordat de azd up opdracht is voltooid. Uw toepassingscode wordt ook gecompileerd en geïmplementeerd, maar u wijzigt de code later om met App Service te werken. Terwijl deze wordt uitgevoerd, bevat de opdracht berichten over het inrichtings- en implementatieproces, inclusief een koppeling naar de implementatie in Azure. Wanneer deze is voltooid, wordt met de opdracht ook een koppeling naar de implementatietoepassing weergegeven.

    Deze azd-sjabloon bevat bestanden (azure.yaml en de inframap ) die een standaardarchitectuur met de volgende Azure-resources genereren:

    • Resourcegroep → De container voor alle gemaakte resources.
    • App Service-plan → Definieert de rekenresources voor App Service. Er wordt een Linux-plan in de B1-laag opgegeven.
    • App Service → Vertegenwoordigt uw app en wordt uitgevoerd in het App Service-plan.
    • Virtueel netwerk → geïntegreerd met de App Service-app en isoleert back-endnetwerkverkeer.
    • Flexibele Azure Database for PostgreSQL-server → alleen toegankelijk vanuit het virtuele netwerk. Er worden een database en een gebruiker voor u gemaakt op de server.
    • Privé-DNS zone → Dns-omzetting van de PostgreSQL-server in het virtuele netwerk inschakelen.
    • Log Analytics-werkruimte → fungeert als de doelcontainer voor uw app voor het verzenden van de logboeken, waar u ook query's kunt uitvoeren op de logboeken.

2. Gebruik de database verbindingsreeks

De azd-sjabloon die u gebruikt, heeft de connectiviteitsvariabelen voor u al gegenereerd als app-instellingen en voert deze voor uw gemak uit naar de terminal. App-instellingen zijn een manier om verbindingsgeheimen uit uw codeopslagplaats te houden.

  1. Zoek in de azd-uitvoer de app-instellingen en zoek de instellingen AZURE_POSTGRESQL_CONNECTIONSTRING en AZURE_REDIS_CONNECTIONSTRING. Als u geheimen veilig wilt houden, worden alleen de naam van de instelling weergegeven. Ze zien er als volgt uit in de azd-uitvoer:

     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_CONNECTIONSTRINGbevat de verbindingsreeks naar de Postgres-database in Azure en AZURE_REDIS_CONNECTIONSTRING bevat de verbindingsreeks naar de Redis-cache in Azure. U moet deze code gebruiken om er verbinding mee te maken. Open azureproject/production.py, verwijder opmerkingen bij de volgende regels en sla het bestand op:

    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']
    )
    

    Uw toepassingscode is nu geconfigureerd om verbinding te maken met de PostgreSQL-database in Azure. Als u wilt, opent app.py u de omgevingsvariabele en bekijkt u hoe de DATABASE_URI omgevingsvariabele wordt gebruikt.

  3. Voer azd deploy uit in de terminal.

    azd deploy
    

4. Databaseschema genereren

Met de PostgreSQL-database die wordt beveiligd door het virtuele netwerk, is de eenvoudigste manier om Flask-databasemigraties uit te voeren in een SSH-sessie met de App Service-container.

  1. Zoek in de azd-uitvoer de URL voor de SSH-sessie en navigeer ernaar in de browser. Dit ziet er als volgt uit in de uitvoer:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. Voer in de SSH-terminal de opdracht uit flask db upgrade. Als dit lukt, maakt App Service verbinding met de database.

    Een schermopname van de opdrachten die moeten worden uitgevoerd in de SSH-shell en de bijbehorende uitvoer (Flask).

    Notitie

    Alleen wijzigingen in bestanden in /home kunnen zich blijven voordoen na het opnieuw opstarten van de app. Wijzigingen buiten /home zijn niet behouden.

5. Blader naar de app

  1. Zoek in de azd-uitvoer de URL van uw app en navigeer ernaar in de browser. De URL ziet er als volgt uit in de AZD-uitvoer:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Voeg enkele restaurants toe aan de lijst.

    Gefeliciteerd, u voert een web-app uit in Azure-app Service, met beveiligde connectiviteit met Azure Database for PostgreSQL.

6. Diagnostische logboeken streamen

Azure-app Service kan consolelogboeken vastleggen om u te helpen bij het vaststellen van problemen met uw toepassing. Voor het gemak heeft de azd-sjabloon logboekregistratie al ingeschakeld voor het lokale bestandssysteem en deze naar een Log Analytics-werkruimte verzonden.

De voorbeeld-app bevat print() instructies om deze mogelijkheid te demonstreren, zoals wordt weergegeven in het volgende fragment.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Zoek in de azd-uitvoer de koppeling om App Service-logboeken te streamen en navigeer ernaar in de browser. De koppeling ziet er als volgt uit in de azd-uitvoer:

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

Meer informatie over logboekregistratie in Python-apps in de reeks over het instellen van Azure Monitor voor uw Python-toepassing.

7. Resources opschonen

Als u alle Azure-resources in de huidige implementatieomgeving wilt verwijderen, voert u uit azd down.

azd down

Probleemoplossing

Hieronder vindt u problemen die kunnen optreden tijdens het uitvoeren van deze zelfstudie en stappen om deze op te lossen.

Ik kan geen verbinding maken met de SSH-sessie

Als u geen verbinding kunt maken met de SSH-sessie, kan de app zelf niet worden gestart. Controleer de diagnostische logboeken op details. Als u bijvoorbeeld een fout ziet zoals KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING', kan dit betekenen dat de omgevingsvariabele ontbreekt (mogelijk hebt u de app-instelling verwijderd).

Er treedt een fout op bij het uitvoeren van databasemigraties

Als er fouten optreden met betrekking tot het maken van verbinding met de database, controleert u of de app-instellingen (AZURE_POSTGRESQL_CONNECTIONSTRING) zijn gewijzigd. Zonder dat verbindingsreeks kan de migratieopdracht niet communiceren met de database.

Veelgestelde vragen

Hoeveel kost dit instellen?

De prijzen voor de gemaakte resources zijn als volgt:

  • Het App Service-plan wordt gemaakt in de Basic-laag en kan omhoog of omlaag worden geschaald. Zie Prijzen voor App Service.
  • De flexibele PostgreSQL-server wordt gemaakt in de laagste burstable-laag Standard_B1ms, met de minimale opslaggrootte, die omhoog of omlaag kan worden geschaald. Zie de prijzen voor Azure Database for PostgreSQL.
  • Voor het virtuele netwerk worden geen kosten in rekening gebracht, tenzij u extra functionaliteit configureert, zoals peering. Zie prijzen voor Azure Virtual Network.
  • Voor de privé-DNS-zone worden kleine kosten in rekening gebracht. Zie prijzen voor Azure DNS.

Hoe kan ik verbinding maken met de PostgreSQL-server die is beveiligd achter het virtuele netwerk met andere hulpprogramma's?

  • Voor basistoegang vanuit een opdrachtregelprogramma kunt u uitvoeren psql vanuit de SSH-terminal van de app.
  • Als u verbinding wilt maken vanuit een bureaubladhulpprogramma, moet uw machine zich in het virtuele netwerk bevinden. Het kan bijvoorbeeld een Virtuele Azure-machine zijn die is verbonden met een van de subnetten of een machine in een on-premises netwerk met een site-naar-site-VPN-verbinding met het virtuele Azure-netwerk.
  • U kunt Azure Cloud Shell ook integreren met het virtuele netwerk.

Hoe werkt het ontwikkelen van lokale apps met GitHub Actions?

Met behulp van het automatisch gegenereerde werkstroombestand van App Service als voorbeeld wordt een git push nieuwe build- en implementatieuitvoering gestart. Vanuit een lokale kloon van de GitHub-opslagplaats maakt u de gewenste updates en pusht u naar GitHub. Voorbeeld:

git add .
git commit -m "<some-message>"
git push origin main

Hoe wordt het Django-voorbeeld geconfigureerd voor uitvoering op Azure-app Service?

Notitie

Als u deze zelfstudie samen met uw eigen app volgt, bekijkt u de beschrijving van het requirements.txt bestand in het README.md-bestand van elk project (Flask, Django) om te zien welke pakketten u nodig hebt.

De Django-voorbeeldtoepassing configureert instellingen in het bestand azureproject/production.py, zodat deze kan worden uitgevoerd in Azure-app Service. Deze wijzigingen zijn gebruikelijk voor het implementeren van Django in productie en niet specifiek voor App Service.

  • Django valideert de HTTP_HOST header in binnenkomende aanvragen. De voorbeeldcode maakt gebruik van de WEBSITE_HOSTNAME omgevingsvariabele in App Service om de domeinnaam van de app toe te voegen aan de ALLOWED_HOSTS-instelling van Django.

    # 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 biedt geen ondersteuning voor het leveren van statische bestanden in productie. Voor deze zelfstudie gebruikt u WhiteNoise om de bestanden te leveren. Het WhiteNoise-pakket is al geïnstalleerd met requirements.txt en de middleware wordt toegevoegd aan de lijst.

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

    Vervolgens worden de instellingen voor het statische bestand geconfigureerd volgens de Django-documentatie.

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

Zie Productie-instellingen voor Django-apps voor meer informatie.

Volgende stappen

Ga naar de volgende zelfstudie voor meer informatie over het beveiligen van uw app met een aangepast domein en certificaat.

Ontdek hoe App Service een Python-app uitvoert: