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 :

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 :

  1. Accédez au dossier de l’application :

    cd msdocs-python-flask-webapp-quickstart
    
  2. Créez un environnement virtuel pour l’application :

    py -m venv .venv
    .venv\scripts\activate
    
  3. Installez les dépendances :

    pip install -r requirements.txt
    
  4. Exécutez l’application :

    flask run
    
  5. Accédez à l’exemple d’application disponible à l’adresse http://localhost:5000 dans un navigateur web.

    Capture d’écran de l’application Flask en cours d’exécution dans un navigateur local

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 commande az 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><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 commande az 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 :

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.

Capture d’écran de l’application en cours d’exécution dans Azure

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.

Étapes suivantes