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

In deze quickstart implementeert u een Python-web-app (Django of Flask) 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.

1 - Voorbeeldtoepassing

Deze quickstart kan worden voltooid met Flask of Django. 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.

    Screenshot of the Flask app running locally in a browser

Ondervindt u problemen? Laat het ons weten.

2 - Een web-app maken in Azure

Als u uw toepassing in Azure wilt hosten, moet u 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 indien 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 account 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.

3 - Uw toepassingscode implementeren in Azure

Azure-app service ondersteunt meerdere methoden om uw toepassingscode te implementeren in Azure, inclusief ondersteuning voor 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 met de az webapp up opdracht de benodigde resources zijn gemaakt en uw toepassing in één stap is geïmplementeerd, kunt u doorgaan naar 4 : Naar de app bladeren.


Ondervindt u problemen? Raadpleeg eerst de Handleiding voor het oplossen van problemen. Als u er niet uitkomt, laat het ons weten.

4 - Blader naar de app

Blader naar de geïmplementeerde toepassing in uw webbrowser op 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.

Screenshot of the app running in Azure

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

Ondervindt u problemen? Raadpleeg eerst de Handleiding voor het oplossen van problemen. Als u er niet uitkomt, laat het ons weten.

5 - Logboeken streamen

Azure-app Service legt alle berichtenuitvoer vast in 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 = Flask(__name__)


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

De inhoud van de diagnostische logboeken van App Service kan worden gecontroleerd met behulp van de Azure CLI, VS Code of Azure Portal.

Eerst moet u Azure-app Service configureren voor het uitvoeren van logboeken naar het App Service-bestandssysteem 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 Handleiding voor het oplossen van problemen. Als u er niet uitkomt, laat het ons weten.

Resources opschonen

Wanneer u klaar bent met de voorbeeld-app, kunt u alle resources voor de app verwijderen uit Azure. Er worden geen extra kosten in rekening gebracht en uw Azure-abonnement overzichtelijk houden. 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