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

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. Verbindingsgeheimen beveiligen

De wizard voor het maken van de database heeft de verbindingsreeks voor de database voor u al gegenereerd als app-instelling. De aanbevolen beveiligingsprocedures zijn echter om geheimen volledig buiten App Service te houden. U verplaatst uw geheimen naar een sleutelkluis en wijzigt uw app-instelling in een Key Vault-verwijzing met behulp van serviceconnectors.

Stap 1: de bestaande verbindingsreeks ophalen

  1. Selecteer > in het linkermenu van de App Service-pagina instellingen omgevingsvariabelen.
  2. Selecteer AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. Zoek in de toepassingsinstelling Toevoegen/bewerken in het veld Waarde het wachtwoord= deel aan het einde van de tekenreeks.
  4. Kopieer de wachtwoordtekenreeks na Password= voor later gebruik. Met deze app-instelling kunt u verbinding maken met de Postgres-database die wordt beveiligd achter een privé-eindpunt. Het geheim wordt echter rechtstreeks opgeslagen in de App Service-app, wat niet het beste is. U wijzigt dit.

Een schermopname die laat zien hoe u de waarde van een app-instelling kunt zien.

Stap 2: Een sleutelkluis maken voor veilig beheer van geheimen

  1. Typ 'sleutelkluis' in de bovenste zoekbalk en selecteer vervolgens Marketplace>Key Vault.
  2. Selecteer in resourcegroep msdocs-python-postgres-tutorial.
  3. Typ in de naam van de sleutelkluis een naam die alleen uit letters en cijfers bestaat.
  4. Stel deze in Regio in op dezelfde locatie als de resourcegroep.

Een schermopname die laat zien hoe u een sleutelkluis maakt.

Stap 3: De sleutelkluis beveiligen met een privé-eindpunt

  1. Selecteer het tabblad Netwerken.
  2. Schakel de selectie Openbare toegang inschakelen uit.
  3. Selecteer Een privé-eindpunt maken.
  4. Selecteer in resourcegroep msdocs-python-postgres-tutorial.
  5. Typ in Naam een naam voor het privé-eindpunt dat alleen uit letters en cijfers bestaat.
  6. Stel deze in Regio in op dezelfde locatie als de resourcegroep.
  7. Selecteer in het dialoogvenster in Location dezelfde locatie als uw App Service-app.
  8. Selecteer in resourcegroep msdocs-python-postgres-tutorial.
  9. Typ in Naam msdocs-python-postgres-XYZVaultEndpoint.
  10. Selecteer in het virtuele netwerk msdocs-python-postgres-XYZVnet.
  11. In Subnet, msdocs-python-postgres-XYZSubnet.
  12. Selecteer OK.
  13. Selecteer Controleren en maken en selecteer vervolgens Maken. Wacht tot de implementatie van de sleutelkluis is voltooid. U ziet nu 'Uw implementatie is voltooid'.

Een schermopname van het beveiligen van een sleutelkluis met een privé-eindpunt.

Stap 4: De serviceconnector configureren

  1. Typ msdocs-python-postgres in de bovenste zoekbalk en selecteer vervolgens de App Service-resource msdocs-python-postgres-XYZ.
  2. Selecteer instellingenserviceconnector >in het linkermenu op de pagina App Service. Er is al een connector, die door de wizard voor het maken van apps voor u is gemaakt.
  3. Schakel het selectievakje naast de connector in en selecteer Vervolgens Bewerken.
  4. Selecteer op het tabblad Basisbeginselen onder PostgreSQL-database de PostgreSQL-database die is gemaakt.
  5. Selecteer het tabblad Verificatie.
  6. Plak in Wachtwoord het wachtwoord dat u eerder hebt gekopieerd.
  7. Selecteer Geheim opslaan in Key Vault.
  8. Selecteer Nieuwe maken onder Key Vault-verbinding. Er wordt een dialoogvenster Verbinding maken geopend boven aan het bewerkingsdialoogvenster.

Een schermopname van het bewerken van een serviceconnector met een sleutelkluisverbinding.

Stap 5: De Key Vault-verbinding tot stand brengen

  1. Selecteer in het dialoogvenster Verbinding maken voor de Key Vault-verbinding in Key Vault de sleutelkluis die u eerder hebt gemaakt.
  2. Selecteer Controleren + maken.
  3. Wanneer de validatie is voltooid, selecteert u Maken.

Een schermopname die laat zien hoe u een key vault-serviceconnector configureert.

Stap 6: De configuratie van de serviceconnector voltooien

  1. U bent terug in het bewerkingsdialoogvenster voor defaultConnector. Wacht op het tabblad Verificatie totdat de sleutelkluisconnector is gemaakt. Wanneer de sleutelkluis is voltooid, wordt deze automatisch geselecteerd in de vervolgkeuzelijst Key Vault-verbinding .
  2. Selecteer Volgende: Netwerken.
  3. Selecteer Opslaan. Wacht totdat de melding Update is voltooid wordt weergegeven.

Een schermopname van de sleutelkluisverbinding die is geselecteerd in de defaultConnector.

Stap 7: De key vault-integratie controleren

  1. Selecteer opnieuw Instellingen > omgevingsvariabelen in het linkermenu.
  2. Selecteer naast AZURE_POSTGRESQL_CONNECTIONSTRING de optie Waarde weergeven. De waarde moet zijn @Microsoft.KeyVault(...), wat betekent dat het een sleutelkluisverwijzing is omdat het geheim nu wordt beheerd in de sleutelkluis.

Een schermopname die laat zien hoe u de waarde van de MySQL-omgevingsvariabele in Azure kunt zien.

Samenvattend is het proces dat betrokken is bij het ophalen van de PostgreSQL-verbindingsreeks uit de omgevingsvariabelen van de App Service, het maken van een Azure Key Vault voor veilig geheimbeheer met privétoegang en het bijwerken van de serviceconnector om het wachtwoord op te slaan in de sleutelkluis. Er is een beveiligde verbinding tot stand gebracht tussen de App Service-app en de sleutelkluis met behulp van een door het systeem toegewezen beheerde identiteit en de installatie is geverifieerd door te bevestigen dat de verbindingsreeks een Key Vault-verwijzing gebruikt.

Ondervindt u problemen? Controleer de sectie Probleemoplossing.


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

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: