Démarrage rapide : Déployer une application web Python (Django, Flask ou FastAPI) sur Azure App Service
Remarque
Depuis le 1er juin 2024, toutes les applications App Service nouvellement créées ont la possibilité de générer un nom d’hôte par défaut unique en utilisant la convention d’affectation de noms <app-name>-<random-hash>.<region>.azurewebsites.net
. Les noms d’application existants restent inchangés.
Exemple : myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Pour plus d’informations, reportez-vous à Nom d’hôte par défaut unique pour les ressources App Service.
Dans ce guide de démarrage rapide, vous déployez une application web Python (Django, Flask ou FastAPI) sur Azure App Service. Azure App Service est un service d’hébergement web complètement managé qui prend en charge les applications Python hébergées dans un environnement serveur Linux.
Pour effectuer ce démarrage rapide, les éléments suivants sont requis :
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Python 3.9 ou version ultérieure installé localement.
Notes
Cet article contient des instructions à jour sur le déploiement d’une application web Python à l’aide d’Azure App Service. Python sur Windows n’est plus pris en charge.
Exemple d’application
Ce guide de démarrage rapide peut être effectué en utilisant Flask, Django ou FastAPI. Un exemple d’application dans chaque framework est fourni pour vous aider à suivre ce guide de démarrage rapide. Téléchargez ou clonez l’exemple d’application sur votre station de travail locale.
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
Pour exécuter l’application localement :
Accédez au dossier de l’application :
cd msdocs-python-flask-webapp-quickstart
Créez un environnement virtuel pour l’application :
py -m venv .venv .venv\scripts\activate
Installez les dépendances :
pip install -r requirements.txt
Exécutez l’application :
flask run
Accédez à l’exemple d’application disponible à l’adresse
http://localhost:5000
dans un navigateur web.
Vous rencontrez des problèmes ? Faites-le nous savoir.
Créer une application web dans Azure
Pour héberger votre application dans Azure, vous avez besoin de créer une application web Azure App Service dans Azure. Vous pouvez créer une application web à l’aide d’Azure CLI, de VS Code, du Pack d’extension Azure Tools ou du Portail Azure.
Les commandes Azure CLI peuvent être exécutées sur un ordinateur sur lequel l’interface Azure CLI est installée.
Azure CLI a une commande az webapp up
qui crée les ressources nécessaires et déploie votre application en une seule étape.
Si nécessaire, connectez-vous à Azure à l’aide d’az login.
az login
Créez l’application web et les autres ressources, puis déployez votre code dans Azure en utilisant la commande az webapp up.
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
- Le paramètre
--runtime
spécifie la version de Python que votre application exécute. Cet exemple utilise Python 3.9. Pour lister tous les runtimes disponibles, utilisez la commandeaz webapp list-runtimes --os linux --output table
. - Le paramètre
--sku
définit la taille (UC, mémoire) et le coût du plan App service. Cet exemple utilise le plan de service B1 (De base), qui entraîne un coût réduit dans votre abonnement Azure. Pour obtenir la liste complète des plans App Service, consultez la page de Tarification App Service. - L’indicateur
--logs
configure la journalisation par défaut nécessaire pour activer la consultation du flux de journal immédiatement après le lancement de l’application web. - Vous pouvez éventuellement spécifier un nom avec l’argument
--name <app-name>
. Si vous n’en fournissez pas, le nom est généré automatiquement. - Vous pouvez éventuellement inclure l’argument
--location <location-name>
où<location_name>
est une région Azure disponible. Vous pouvez récupérer une liste de régions autorisées pour votre compte Azure en exécutant la commandeaz appservice list-locations
.
La commande peut prendre quelques minutes. Quand la commande est exécutée, elle fournit des messages sur la création du groupe de ressources, du plan App Service et de la ressource d’application, sur la configuration de la journalisation et sur le déploiement ZIP. Elle affiche ensuite le message « Vous pouvez lancer l’application sur http://<app-name>.azurewebsites.net », qui est l’URL de l’application sur 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>" }
Notes
La commande az webapp up
exécute les actions suivantes :
Créer un groupe de ressources par défaut.
Créer un plan App Service par défaut.
Créer une application avec le nom spécifié.
Décompresser tous les fichiers à partir du répertoire de travail actuel, avec l’automatisation de build activée.
Mettre en cache les paramètres localement dans le fichier .azure/config afin de ne pas avoir à les spécifier à nouveau lors du déploiement ultérieur avec des commandes
az webapp up
ouaz webapp
à partir du dossier de projet. Les valeurs mises en cache sont utilisées automatiquement par défaut.
Vous rencontrez des problèmes ? Faites-le nous savoir.
Déployer votre code d’application sur Azure
Azure App Service prend en charge plusieurs méthodes de déploiement de votre code d’application sur Azure, notamment GitHub Actions et tous les principaux outils de CI/CD. Cet article se concentre sur le déploiement de votre code à partir de votre station de travail locale vers Azure.
Étant donné que la commande az webapp up
a créé les ressources nécessaires et déployé votre application en une seule étape, vous pouvez passer à l’étape suivante.
Vous rencontrez des problèmes ? Tout d’abord, reportez-vous au Guide de dépannage. Si cela n’aide pas, faites-nous savoir.
Configurer le script de démarrage
En fonction de la présence de certains fichiers dans un déploiement, App Service détecte automatiquement si une application est une application Django ou Flask et effectue les étapes par défaut pour exécuter votre application. Pour les applications basées sur d’autres infrastructures web tels que FastAPI, vous devez configurer un script de démarrage pour permettre à App Service d’exécuter votre application. Sinon, App Service exécute une application en lecture seule par défaut située dans le dossier opt/defaultsite.
Pour en savoir plus sur la façon dont App Service exécute des applications Python et comment vous pouvez configurer et personnaliser son comportement avec votre application, consultez Configurer une application Python Linux pour Azure App Service.
App Service détecte automatiquement la présence d’une application Flask. Aucune configuration supplémentaire n'est nécessaire pour ce guide de démarrage rapide.
Accéder à l’application
Accédez à l’application déployée à l’aide de votre navigateur web à l’URL http://<app-name>.azurewebsites.net
. Si vous voyez s’afficher une page d’application par défaut, attendez une minute, puis actualisez le navigateur.
L’exemple de code Python exécute un conteneur Linux dans App Service avec une image intégrée.
Félicitations ! Vous venez de déployer votre application Python sur App Service.
Vous rencontrez des problèmes ? Tout d’abord, reportez-vous au Guide de dépannage. Si cela n’aide pas, faites-nous savoir.
Diffuser les journaux d’activité en continu
Azure App Service capture tous les messages générés dans la console pour vous aider à diagnostiquer les problèmes liés à votre application. Les exemples d’applications incluent des instructions print()
pour illustrer cette fonctionnalité.
@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'))
Vous pouvez vérifier le contenu des journaux de diagnostic App Service à l’aide d’Azure CLI, de VS Code ou du Portail Azure.
Tout d’abord, vous devez configurer Azure App Service de sorte à générer les journaux dans le système de fichiers App Service à l’aide de la commande az webapp log config.
az webapp log config \
--web-server-logging filesystem \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Pour envoyer les journaux en streaming, exécutez la commande az webapp log tail.
az webapp log tail \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Actualisez la page d’accueil de l’application ou essayez d’autres requêtes pour générer des messages de journal. Le résultat doit être semblable à ce qui suit.
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"
Vous rencontrez des problèmes ? Tout d’abord, reportez-vous au Guide de dépannage. Si cela n’aide pas, faites-nous savoir.
Nettoyer les ressources
Lorsque vous en avez terminé avec l’exemple d’application, vous pouvez supprimer d’Azure toutes les ressources pour l’application. La suppression du groupe de ressources garantit que vous n’avez pas de frais supplémentaires et vous permet de conserver votre abonnement Azure non limité. Supprimer le groupe de ressources permet également de supprimer toutes les ressources qu’il contient. Cette méthode est la plus rapide pour supprimer toutes les ressources Azure de votre application.
Supprimez le groupe de ressources à l’aide de la commande az group delete.
az group delete \
--name msdocs-python-webapp-quickstart \
--no-wait
Avec l’argument --no-wait
, la commande peut retourner une sortie avant la fin de l’opération.
Vous rencontrez des problèmes ? Faites-le nous savoir.