Delen via


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

Notitie

Vanaf 1 juni 2024 hebben alle nieuw gemaakte App Service-apps de mogelijkheid om een unieke standaardhostnaam te genereren met behulp van de naamconventie <app-name>-<random-hash>.<region>.azurewebsites.net. Bestaande app-namen blijven ongewijzigd.

Voorbeeld: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Raadpleeg de unieke standaardhostnaam voor App Service-resource voor meer informatie.

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.

Voorbeeldtoepassing

Deze quickstart kan worden voltooid met flask, Django of FastAPI. In elk framework wordt een voorbeeldtoepassing geboden om u te helpen bij het volgen van deze quickstart. 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 toepassingsmap:

    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.

Azure CLI heeft een opdracht az webapp up waarmee de benodigde resources worden gemaakt en uw toepassing in één stap wordt geïmplementeerd.

Meld u zo nodig aan bij Azure met az login.

az login

Maak de web-app en andere resources en implementeer vervolgens uw code in Azure met behulp van az webapp up.

az webapp up --runtime PYTHON:3.9 --sku B1 --logs
  • De --runtime parameter geeft aan welke versie van Python uw app wordt uitgevoerd. In dit voorbeeld wordt Python 3.9 gebruikt. Als u alle beschikbare runtimes wilt weergeven, gebruikt u de opdracht az webapp list-runtimes --os linux --output table.
  • De --sku parameter definieert de grootte (CPU, geheugen) en de kosten van het App Service-plan. In dit voorbeeld wordt gebruikgemaakt van het B1-serviceplan (Basic). Hiervoor worden kleine kosten in uw Azure-abonnement in rekening gebracht. Bekijk de pagina met App Service-prijzen voor een volledige lijst met App Service-abonnementen.
  • De --logs vlag configureert standaardlogboekregistratie die vereist is om het weergeven van de logboekstream direct na het starten van de web-app in te schakelen.
  • U kunt desgewenst een naam opgeven met het argument --name <app-name>. Als u er geen opgeeft, wordt er automatisch een naam gegenereerd.
  • U kunt eventueel het argument --location <location-name> toevoegen, waarbij <location_name> een beschikbare Azure-regio is. U kunt een lijst met toegestane regio's voor uw Azure-account ophalen door de az appservice list-locations-opdracht uit te voeren.

Het volledig uitvoeren van de opdracht kan even duren. Terwijl de opdracht wordt uitgevoerd, bevat deze berichten over het maken van de resourcegroep, het App Service-plan en de app-resource, het configureren van logboekregistratie en het uitvoeren van ZIP-implementatie. Vervolgens krijgt u het volgende bericht: 'U kunt de app starten op http://<app-name>.azurewebsites.net'. Dit is de URL van de app op Azure.

The webapp '<app-name>' doesn't exist
Creating Resource group '<group-name>' ...
Resource group creation complete
Creating AppServicePlan '<app-service-plan-name>' ...
Creating webapp '<app-name>' ...
Configuring default logging for the app, if not already enabled
Creating zip with contents of dir /home/cephas/myExpressApp ...
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
You can launch the app at http://<app-name>.azurewebsites.net
{
  "URL": "http://<app-name>.azurewebsites.net",
  "appserviceplan": "<app-service-plan-name>",
  "location": "centralus",
  "name": "<app-name>",
  "os": "<os-type>",
  "resourcegroup": "<group-name>",
  "runtime_version": "python|3.9",
  "runtime_version_detected": "0.0",
  "sku": "FREE",
  "src_path": "<your-folder-location>"
}

Notitie

Met de opdracht az webapp up worden de volgende acties uitgevoerd:

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.

Omdat de az webapp up opdracht de benodigde resources heeft gemaakt en uw toepassing in één stap heeft geïmplementeerd, kunt u verdergaan met de volgende stap.


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

Opstartscript configureren

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 die zijn gebaseerd op andere webframeworks zoals FastAPI, moet u een opstartscript configureren voor App Service om uw app uit te voeren; Anders voert App Service een standaard alleen-lezen app uit die zich in de map opt/defaultsite bevindt.

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.

Bladeren naar de app

Blader naar de geïmplementeerde toepassing in uw webbrowser met behulp van de URL http://<app-name>.azurewebsites.net. Als u een standaard-app-pagina ziet, wacht u een minuut en vernieuwt u de browser.

Met de Python-voorbeeldcode wordt een Linux-container uitgevoerd in App Service via een ingebouwde installatiekopie.

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.

Logboeken 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. De uitvoer moet er ongeveer als volgt uitzien.

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.

Resources 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