Démarrage rapide : Déployer une application web Python (Django ou Flask) sur Azure App Service

Dans ce guide de démarrage rapide, vous allez déployer une application web Python (Django ou Flask) 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.

1 – Exemple d’application

Ce guide de démarrage rapide peut être effectué en utilisant Flask ou Django. 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.

    Screenshot of the Flask app running locally in a browser

Vous rencontrez des problèmes ? Faites-le nous savoir.

2 – 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 Toolsou 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 account 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.

3 – 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 à 4 - Accéder à l’application.


Vous rencontrez des problèmes ? Consultez d’abord le Guide de résolution des problèmes ; autrement, faites-le nous savoir.

4 – 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.

Screenshot of the app running in Azure

Félicitations ! Vous venez de déployer votre application Python sur App Service.

Vous rencontrez des problèmes ? Consultez d’abord le Guide de résolution des problèmes ; autrement, faites-le nous savoir.

5 – Envoyer les journaux en streaming

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

Le contenu des journaux de diagnostic App Service peut être examiné à 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 ? Consultez d’abord le Guide de résolution des problèmes ; autrement, faites-le 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. Cela n’entraîne pas de frais supplémentaires et permet d’éviter d’encombrer votre abonnement Azure. 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