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 versions 3.7 et ultérieures 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.
Remarque : 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.
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.
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 du Portail Azure, de VS Code avec le pack d’extension Azure Tools ou d’Azure CLI.
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 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 :
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.
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.
- Effectuer le déploiement avec VS Code
- Déployer à l’aide d’Azure CLI
- Effectuer le déploiement avec Git local
- Déployer avec un fichier ZIP
Étant donné que l’étape précédente 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.
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.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)
Le contenu des journaux de diagnostic App Service peut être consulté dans le portail Azure et VS Code ou à l’aide d’Azure CLI.
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.