Quickstart: Een Python-web-app (Django, Flask of FastAPI) implementeren in Azure-app Service

In deze quickstart implementeert u een Python-web-app (Django, Flask of FastAPI) in Azure-app Service. Azure-app Service is een volledig beheerde webhostingservice die ondersteuning biedt voor Python-apps die worden gehost in een Linux-serveromgeving.

U hebt het volgende nodig om deze snelstartgids te voltooien:

Notitie

Dit artikel bevat de huidige instructies voor het implementeren van een Python-web-app met behulp van Azure-app Service. Python in Windows wordt niet meer ondersteund.

Direct naar het einde springen

U kunt de voorbeeld-app in deze zelfstudie snel implementeren met behulp van Azure Developer CLI en zien hoe deze wordt uitgevoerd in Azure. Voer de volgende opdrachten uit in de gewenste Azure Cloud Shellen volg de prompt:

mkdir flask-quickstart
cd flask-quickstart
azd init --template https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
azd up

En om de resources te verwijderen:

azd down

Voorbeeldtoepassing

Deze quickstart kan worden voltooid met flask, Django of FastAPI. In elk framework wordt een voorbeeldapplicatie geboden om u te helpen bij het volgen van deze snelle start. Download of kloon de voorbeeldtoepassing naar uw lokale werkstation.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

De toepassing lokaal uitvoeren:

  1. Ga naar de applicatiemap:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Maak een virtuele omgeving voor de app:

    py -m venv .venv
    .venv\scripts\activate
    
  3. De afhankelijkheden installeren:

    pip install -r requirements.txt
    
  4. De app uitvoeren:

    flask run
    
  5. Blader naar de voorbeeldtoepassing in http://localhost:5000 een webbrowser.

    Schermopname van de Flask-app die lokaal wordt uitgevoerd in een browser

Ondervindt u problemen? Laat het ons weten.

Een web-app maken in Azure

Als u uw toepassing in Azure wilt hosten, moet u een Azure-app Service-web-app maken in Azure. U kunt een web-app maken met behulp van het Azure CLI-, VS Code-, Azure Tools-extensiepakket of Azure Portal.

Azure CLI-opdrachten kunnen worden uitgevoerd op een computer waarop de Azure CLI is geïnstalleerd.

Maak de Azure-resources aan en deploy vervolgens je applicatie met aparte Azure CLI-commando's.

Meld u zo nodig aan bij Azure met az login.

az login

Vervang <app-name> door een wereldwijd unieke naam. Maak een resourcegroep en een App Service-plan aan, en maak vervolgens de webapp aan met az webapp create.

az group create --name myResourceGroup --location eastus
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "PYTHON:3.14"
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
  • Gebruik de parameter --runtime om de versie van Python aan te geven waarop je app draait. Dit voorbeeld gebruikt Python 3.14. Om ondersteunde Python-runtimes weer te geven, gebruik az webapp list-runtimes --os-type linux --runtime python --output table.
  • Gebruik de --sku parameter om de grootte (CPU en geheugen) en kosten van het App Service-plan te definiëren. Dit voorbeeld gebruikt het P0v3 (Premium v3) serviceplan, wat kosten met zich meebrengt in je Azure-abonnement. Zie App Service-prijzen voor een volledige lijst met App Service-abonnementen.
  • Vervang eastus door je voorkeursregio. Om beschikbare regio's te vermelden, voer az account list-locations uit met --output table.
  • De SCM_DO_BUILD_DURING_DEPLOYMENT instelling maakt de Oryx-build mogelijk, inclusief de installatie van de afhankelijkheden in requirements.txt, wanneer je het bronarchief uitrolt.

Maak een ZIP-bestand aan met de applicatiebestanden, inclusief requirements.txt, in de hoofdmap van het archief. Sluit lokale bestanden uit zoals .venv, .git en .env. Voor platformspecifieke instructies, zie Een ZIP-bestand van je applicatie maken op het tabblad Implementeren met een ZIP-bestand. Implementeer vervolgens het archief met az webapp deploy:

az webapp deploy --name <app-name> --resource-group myResourceGroup --src-path <zip-file-path> --type zip

De uitrol kan een paar minuten duren. Ga naar https://<app-name>.azurewebsites.net om je app te bekijken. Om logs te streamen, schakel je ze in door te draaien az webapp log config --name <app-name> --resource-group myResourceGroup --docker-container-logging filesystem, en voer vervolgens az webapp log tail --name <app-name> --resource-group myResourceGroup uit.

Ondervindt u problemen? Laat het ons weten.

Uw toepassingscode implementeren in Azure

Azure-app Service ondersteunt meerdere methoden voor het implementeren van uw toepassingscode in Azure, waaronder GitHub Actions en alle belangrijke CI/CD-hulpprogramma's. Dit artikel is gericht op het implementeren van uw code van uw lokale werkstation naar Azure.

De Azure CLI-commando's in de voorgaande stap creëerden de resources en deployeerden je applicatie. Je kunt doorgaan naar de volgende stap.


Ondervindt u problemen? Raadpleeg eerst de gids voor probleemoplossing. Als dat niet helpt, laat het ons dan weten.

Configureren van het opstartscript

Op basis van de aanwezigheid van bepaalde bestanden in een implementatie detecteert App Service automatisch of een app een Django- of Flask-app is en voert standaardstappen uit om uw app uit te voeren. Voor apps gebaseerd op andere webframeworks zoals FastAPI moet je mogelijk een opstartscript instellen zodat App Service je app kan draaien. Anders wordt door App Service een standaard-app met alleen-lezen toegang uitgevoerd die zich in de map opt/defaultsite bevindt.

  • Python 3.14 en later: App Service detecteert en voert automatisch FastAPI-apps uit. Er is geen opstartcommando nodig.
  • Python 3.13 en eerder: Je moet een aangepaste opstartopdracht configureren.

Zie Een Linux Python-app configureren voor Azure-app Service voor meer informatie over hoe Python-apps worden uitgevoerd en hoe u het gedrag ervan kunt configureren en aanpassen met uw app.

App Service detecteert automatisch de aanwezigheid van een Flask-app. Er is geen extra configuratie nodig voor deze quickstart.

Navigeer naar de app

Blader naar de geïmplementeerde toepassing in uw webbrowser. U kunt een koppeling volgen vanuit Azure Portal. Ga naar de pagina Overzicht en selecteer Standaarddomein. Als u een standaard-app-pagina ziet, wacht u een minuut en vernieuwt u de browser.

De Python-voorbeeldcode draait een Linux-container in App Service met een ingebouwd image.

Schermopname van de app die wordt uitgevoerd in Azure

Gefeliciteerd. U hebt uw Python-app geïmplementeerd in App Service.

Ondervindt u problemen? Raadpleeg eerst de gids voor probleemoplossing. Als dat niet helpt, laat het ons dan weten.

Logbestanden streamen

Azure-app Service legt alle berichtuitvoer vast op de console om u te helpen bij het diagnosticeren van problemen met uw toepassing. De voorbeeld-apps bevatten print() instructies om deze mogelijkheid te demonstreren.

@app.route('/')
def index():
   print('Request for index page received')
   return render_template('index.html')

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico', mimetype='image/vnd.microsoft.icon')

@app.route('/hello', methods=['POST'])
def hello():
   name = request.form.get('name')

   if name:
       print('Request for hello page received with name=%s' % name)
       return render_template('hello.html', name = name)
   else:
       print('Request for hello page received with no name or blank name -- redirecting')
       return redirect(url_for('index'))

U kunt de inhoud van de diagnostische logboeken van App Service bekijken met behulp van de Azure CLI, VS Code of Azure Portal.

Eerst moet u Azure-app Service configureren om logboeken naar het App Service-bestandssysteem uit te voeren met behulp van de opdracht az webapp log config.

az webapp log config \
    --web-server-logging filesystem \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Gebruik de opdracht az webapp log tail om logboeken te streamen.

az webapp log tail \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Vernieuw de startpagina in de app of probeer andere aanvragen om bepaalde logboekberichten te genereren. Het resultaat dient er ongeveer als volgt uit te zien.

Starting Live Log Stream ---

2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

Ondervindt u problemen? Raadpleeg eerst de gids voor probleemoplossing. Als dat niet helpt, laat het ons dan weten.

Middelen opschonen

Wanneer u klaar bent met de voorbeeld-app, kunt u alle resources voor de app verwijderen uit Azure. Als u de resourcegroep verwijdert, worden er geen extra kosten in rekening gebracht en blijft uw Azure-abonnement overzichtelijk. Als u de resourcegroep verwijdert, worden ook alle resources in de resourcegroep verwijderd en is dit de snelste manier om alle Azure-resources voor uw app te verwijderen.

Verwijder de resourcegroep met behulp van de opdracht az group delete .

az group delete \
    --name msdocs-python-webapp-quickstart \
    --no-wait

Met argument --no-wait kan de opdracht worden geretourneerd voordat de bewerking wordt voltooid.

Ondervindt u problemen? Laat het ons weten.

Volgende stappen