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:
- Een Azure-account met een actief abonnement. Gratis een account maken
- Python 3.9 of hoger lokaal geïnstalleerd.
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.
De toepassing lokaal uitvoeren:
Ga naar de toepassingsmap:
cd msdocs-python-flask-webapp-quickstart
Maak een virtuele omgeving voor de app:
py -m venv .venv .venv\scripts\activate
De afhankelijkheden installeren:
pip install -r requirements.txt
De app uitvoeren:
flask run
Blader naar de voorbeeldtoepassing in
http://localhost:5000
een webbrowser.
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 opdrachtaz 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 deaz 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:
Er wordt een standaardresourcegroep gemaakt.
Maak een standaard App Service-plan.
Er wordt een app met de opgegeven naam gemaakt.
Zip implementeert alle bestanden uit de huidige werkmap, waarbij buildautomatisering is ingeschakeld.
Sla de parameters lokaal in het .azure/config-bestand op, zodat u ze niet opnieuw hoeft op te geven wanneer u ze later implementeert met
az webapp up
of andereaz webapp
opdrachten uit de projectmap. De waarden in de cache worden standaard automatisch gebruikt.
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.
- Implementeren met behulp van Azure CLI
- Implementeren met VS Code
- Implementeren met behulp van lokale Git
- Implementeren met behulp van een ZIP-bestand
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.
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.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'))
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.