voilà j'ai 2 fichiers : B.xls Sur ces 2 fichiers, j'ai une feuille 'Info' qui contient des infos en chiffres et en lettres. Je voudrais ne remplir que la feuille 'Info' du fichier A, et le B se remplirai tout seul. J'ai essayé à =, mais ça marche pas (ça me met 0). Merci YANN
Aller au menu Aller au contenu Aller Ă la recherche BibliothĂšque AccĂ©der Ă tous les contenus de la bibliothĂšque Informatique Autres informatique Bureautique et rĂ©daction DĂ©veloppement Web MatĂ©riel et Ă©lectronique Programmation et algorithmique SystĂšmes d'exploitation Sciences de la nature Astronomie Autres sciences de la nature Biologie Chimie MathĂ©matiques Physique Sciences de la terre Sciences humaines et sociales Autres sciences humaines et sociales Droit Ăconomie Histoire Langues Psychologie Autres Arts, graphisme et multimĂ©dia Autres Communication et management Zeste de Savoir Tags les plus utilisĂ©s zds mathĂ©matiques algorithmique python physique Tous les tags Tribune Tous les billets Informatique Autres informatique Bureautique et rĂ©daction DĂ©veloppement Web MatĂ©riel et Ă©lectronique Programmation et algorithmique SystĂšmes d'exploitation Sciences de la nature Astronomie Autres sciences de la nature Biologie Chimie MathĂ©matiques Physique Sciences de la terre Sciences humaines et sociales Autres sciences humaines et sociales Droit Ăconomie Histoire Langues Psychologie Autres Arts, graphisme et multimĂ©dia Autres Communication et management Zeste de Savoir Tags les plus utilisĂ©s python zds c++ musique javascript Tous les tags Forum Tous les forums Savoirs Programmation DĂ©veloppement Web MultimĂ©dia et Jeux vidĂ©o SystĂšmes et MatĂ©riels Sciences Les autres savoirs CommunautĂ© Le bar Ă smoothies Bugs et Suggestions Dev Zone Contenus en cours de rĂ©daction Vos projets L'association Tags les plus utilisĂ©s python c++ php arduino c Accueil Tutoriels DĂ©ployer une application Django en production Licence CC BY-NC-SA DĂ©ployer une application Django en production DĂ©ployer une application Django en production Dans ce tuto nous allons voir comment dĂ©ployer une application Django en production. En effet de nombreux articles couvrent la crĂ©ation dâune application Django et le dĂ©veloppement Ă lâaide du serveur runserver de Django, mais il est plus difficile de trouver des informations sur les bonnes pratique de dĂ©ploiement. Ce tuto couvre les paramĂštres dâune application pour la production fichiers de settings, lâinstallation et la configuration de Gunicorn et lâinstallation et la configuration de Nginx. A la fin de ce tutoriel nous aurons une application Django en production prĂȘte pour un usage professionnel. Une seule approche technique sera prĂ©sentĂ© ici mais il existe plein dâautres logiciels et infrastructures permettant dâarriver au mĂȘme rĂ©sultat. PrĂ©requis un minimum de connaissance de Django est requis pour une bonne comprĂ©hension. Câest encore mieux si vous avez une application et un serveur une VM avec debian fait trĂšs bien lâaffaire sous la main. Un minium dâaisance avec la ligne de commande est prĂ©fĂ©rable. ParamĂ©trons Django Configurer Gunicorn et Supervisord Configurer NGinx ParamĂ©trons Django Configurer vos settings Django Dans un premier temps il est nĂ©cessaire de faire un tour du cĂŽtĂ© des settings de Django. En effet ceux ci permettent de paramĂ©trer notre application pour quâelle soit prĂȘte pour lâenvironnement de production. DĂ©sactiver le mode Debug Le paramĂštre le plus important est la valeur DEBUG. Il est impĂ©ratif que cette valeur soit fausse en production. En effet comme son nom lâindique ce paramĂštre permet de debugger lâapplication est convient a un environnement de dĂ©veloppement, mais surtout pas Ă la production. Quand ce paramĂštre est vrai de nombreuses informations sont affichĂ©es. Il faut sâassurer que ces informations ne seront jamais visibles par vos visiteurs. Par exemple en cas dâerreur 500 vos visiteurs tomberont sur une page dâerreur personnalisable plutĂŽt que sur la page dâerreur utilisĂ©e lors du debug prĂ©sentant des donnĂ©es sur le comportement de votre application. En dĂ©sactivant le mode debug il devient impĂ©ratif de remplir la valeur de la variable ALLOWED_HOSTS. Par dĂ©faut en mode debug, les connexions depuis le localhost sont automatiquement acceptĂ©es. Pour la production il faut configurer cette liste avec lâensemble des noms dâhĂŽtes auxquels le site doit rĂ©pondre. Si cela nâest pas fait lâensemble du site sera inaccessible et vous arriverez sur une page dâerreur. Erreur en mode debug prĂ©cisant que l'application n'est pas configurĂ©e pour fonctionner sous ce nom d'hĂŽte. ParamĂ©trer lâaccĂšs Ă base de donnĂ©es Par dĂ©faut dans un nouveau projet, une base SQLite est utilisĂ©e. Cela est trĂšs pratique pour dĂ©velopper car câest un moteur de base de donnĂ©es trĂšs simple Ă mettre en place. En revanche ce moteur nâest gĂ©nĂ©ralement pas utilisĂ© en production pour des grosses applications web, on lui prĂ©fĂšre en gĂ©nĂ©ral des solutions comme MySQL, MariaDB, PostgreSQL, etc. Pour cela il est nĂ©cessaire de modifier la configuration des bases de donnĂ©es. Par dĂ©faut la configuration est la suivante DATABASES = { 'default' { 'ENGINE' ' 'NAME' 'mydatabase', } } On pourra modifier la configurer comme suit, par exemple pour PostgreSQL DATABASES = { 'default' { 'ENGINE' ' 'NAME' 'mydatabase', 'USER' 'mydatabaseuser', 'PASSWORD' 'mypassword', 'HOST' ' 'PORT' '5432', } } On voit ici quâon prĂ©cise le moteur de base de donnĂ©es utilisĂ© ainsi que les informations de connexion. Il est important que garder les informations sensibles utilisateur et mot de passe aussi privĂ©es que possible. Ainsi on Ă©vite en gĂ©nĂ©ral de les ajouter en clair au fichier de rĂ©glages de lâapplication et on se tourne vers lâutilisation de secrets en savoir plus. Pour en savoir plus sur la gestion des paramĂštres de base de donnĂ©es dans Django nâhĂ©sitez pas Ă consulter la documentation. DĂ©sactiver la Django Debug Toolbar Si vous utilisez le module Django Debug Toolbar, câest le moment de vĂ©rifier que celui-ci est dĂ©sactivĂ© lorsque Debug est faux. Câest normalement le comportement par dĂ©faut⊠sauf si vous en avez dĂ©cidĂ© autrement. Django Debug Toolbar donne de nombreuses informations sur le fonctionnement de votre application et doit donc ĂȘtre dĂ©sactivĂ© dans tous vos environnements exceptĂ© votre machine de dĂ©veloppement. Par exemple si on regarde le fichier de settings de Zeste de Savoir on trouvera le code suivant if DEBUG INSTALLED_APPS += 'debug_toolbar', MIDDLEWARE_CLASSES = ' + MIDDLEWARE_CLASSES Ouf ! Lâhonneur est sauf, la debug toolbar nâest activĂ© quâen mode debug. GĂ©rer ses dĂ©pendances Python En python on maintient gĂ©nĂ©ralement une liste de ces dĂ©pendances dans un fichier Dans lâidĂ©al il faut sĂ©parer les dĂ©pendances de maniĂšre plus fine, par exemple en utilisant trois fichiers diffĂ©rents Un fichier qui contient toutes les dĂ©pendances de base de votre application. Un fichier pour le dĂ©veloppement qui contient tous les outils de dĂ©veloppement et de dĂ©bug tels que Django Debug Toolbar Un fichier pour les dĂ©pendances propres Ă la pre-production et Ă la production Dans le fichier de dĂ©pendances de dev ou de prod il est possible dâutiliser la syntaxe suivante pour importer les dĂ©pendances de base On ajoute dans ce fichier les dĂ©pendances de dĂ©veloppement uniquement Mais on importe les dĂ©pendances de base -r django-debug-toolbar== Avec cette mĂ©thode on est sĂ»r de ne pas avoir dâoutils de dĂ©bug installĂ©es sur la prod. Par exemple, toujours chez Zeste de savoir on trouve un fichier contenant les dĂ©pendances qui ne doivent pas ĂȘtre installĂ©es en production coverage== PyYAML== django-debug-toolbar== flake8== flake8_quotes== autopep8== sphinx== sphinx_rtd_theme== faker== mock== Ce sont par exemple les dĂ©pendances permettant le debug, le linting, la documentation, les tests, etc. Autres rĂ©glages Avant de passer en production vĂ©rifiez bien que tous vos settings sont bons, voici quelques exemples de paramĂštres Ă vĂ©rifier ParamĂštres dâauthentification Ă la base de donnĂ©es ceux-ci sont probablement diffĂ©rents entre votre environnement de dev et la production, vĂ©rifiez que les logins et les mots de passes soient corrects. Tokens dâAPI, comptes de tests Si vous utilisez des services externes tel que Mandrill pour lâenvoi de mail ou PayPal pour le paiement pensez Ă vĂ©rifier que vous utilisez bien vos comptes de production et non pas les comptes de test. Si vous oubliez cette Ă©tape les services externes ne se comporteront pas correctement faux paiement dans la sandbox de PayPal, mail qui ne seront jamais envoyĂ©s avec mandrill, etc. Si vous voulez ĂȘtre sĂ»r de bien avoir fait le tour de tous les paramĂštres, il existe une liste des choses Ă vĂ©rifier avant de dĂ©ployer dans la documentation de Django. On peut par exemple y trouver la commande suivante permettant de vĂ©rifier un certains nombres de points avant le dĂ©ploiement python check -deploy Comme nous lâavons vu, il existe de nombreuses diffĂ©rences entre les settings de production et ceux de dĂ©veloppement. Comme pour les fichiers requirements il peut ĂȘtre utile de maintenir deux fichiers, un pour votre machine locale et une pour votre serveur. On peut par exemple crĂ©er un module python contenant les settings adaptĂ©s aux diffĂ©rentes configurations. settings/ Configurer Gunicorn et Supervisord Nous allons maintenant passer Ă la partie serveur» de ce cours. Dans un environnement de dĂ©veloppement il suffit de lancer la commande runserver de Django pour que notre application soit accessible dans le navigateur. Câest un outil trĂšs simple et pratique qui permet de dĂ©velopper et de dĂ©bugger trĂšs rapidement une application. En revanche ce serveur applicatif nâest pas du tout fait pour ĂȘtre utilisĂ© en production il est assez lent et ne tient pas du tout la charge. Il faut donc passer par une autre programme pour servir notre application. Introduction Pour faire tourner notre application en production nous allons nous reposer sur trois logiciels Un serveur applicatif il sâagit de Gunicorn dans ce tuto, câest lâun des serveurs les plus connus dans le monde de Python. Son rĂŽle est dâexĂ©cuter le code de notre application et de renvoyer les rĂ©ponses aux requĂȘtes qui lui sont faites. Supervisord il sera en charge de lancer le serveur Gunicorn est dâassurer son bon fonctionnement. Un reverse proxy nous utiliserons Nginx, il sâagit dâun des reverse proxy le plus connu, il est renommĂ© pour sa fiabilitĂ© et sa rapiditĂ©. Son rĂŽle sera de transmettre les requĂȘtes venant des utilisateurs extĂ©rieurs Ă Gunicorn. On considĂšre dans la suite de ce tuto que le moteur de base de donnĂ©es que vous voulez utiliser est bien installĂ© et configurĂ© avec les bons paramĂštres afin de laisser lâapplication Django se connecter. Si ce nâest pas le cas vous obtiendrez une erreur applicative quand vous souhaiterez dĂ©marrer ou utiliser votre application dans la suite de ce chapitre. Nous devons tout dâabord crĂ©er le virtualenv qui nous servira tout au long de ce tutoriel. Pour cela utilisez votre gestionnaire de paquet pour installer le virtualenv correspondant Ă la version de Python de votre projet. sudo apt-get install python3-virtualenv Puis crĂ©ons le rĂ©pertoire et le virtualenv cd /home/clementine/public_html/hello_world/ mkdir env virtualenv ./env source env/bin/activate Nous pouvons en profiter pour installer les dĂ©pendances et rĂ©aliser les migrations si nĂ©cessaires pip install -r python migrate On se retrouve Ă cette Ă©tape avec un projet Django fonctionnel, on pourrait lancer le runserver de Django pour vĂ©rifier que tout fonctionne correctement. Gunicorn Gunicorn sera notre serveur applicatif, si Gunicorn fait parti des dĂ©pendances de votre application Django il a Ă©tĂ© installĂ© Ă lâĂ©tape prĂ©cĂ©dente. Si ce nâest pas le cas, on lâinstalle Dans ce cas, pensez Ă ajouter la dĂ©pendance vers Gunicorn dans votre fichier requirements destinĂ© Ă la production. A ce stade, on peut dĂ©jĂ lancer notre serveur Gunicorn pour vĂ©rifier que tout fonctionne bien gunicorn -bind localhost8001 Par exemple gunicorn -bind localhost8001 Ici on demande juste Ă Gunicorn de lancer notre application sur la machine en servant le port 8001. Depuis votre serveur, dans un terminal, vous devriez pouvoir atteindre votre application curl localhost8001 RĂ©ponse etc. Vous pouvez aussi essayer de charger la page depuis votre navigateur, tout fonctionne normalement. Câest bien beau tout ça, par contre dĂšs que vous allez fermer votre terminal, votre application ne sera plus disponible. Pas trĂšs pratique! Pour corriger ce problĂšme nous allons avoir besoin dâun autre outil supervisord. Supervisord Supervisord est un outil extrĂȘmement pratique permettant de lancer des applications et de suivre leur Ă©tat. En effet il est possible que votre programme plante et quitte de maniĂšre inopinĂ©e. Une des possibilitĂ©s de Supervisord est de pouvoir le relancer de maniĂšre automatique. Supervisord permet aussi en une commande de connaĂźtre le statut des diffĂ©rentes applications que vous avez lancĂ©es, plus besoin dâaller chercher lâĂ©tat du service ou le PID du programme Ă la main. Nous allons ici nous servir de Supervisord pour lancer Gunicorn et le relancer en cas de besoin. Pour cela la configuration va ĂȘtre assez simple. Supervisord utilise le format de fichier INI pour paramĂ©trer les diffĂ©rents programmes Ă gĂ©rer. Commençons par installer le paquet sudo aptitude install supervisor Ă adapter en fonction de votre distribution Les fichiers de configuration sont stockĂ©s dans le dossier /etc/supervisor/ je vous propose de crĂ©er le fichier /etc/supervisor/ avec le contenu suivant [programhelloworld] environment=DJANGO_SETTINGS_MODULE=' directory=/home/clementine/public_html/hello_world/ command=/home/clementine/public_html/hello_world/env/bin/gunicorn -bind unix/tmp/ -bind -workers 1 -log-file /var/log/ autostart=true autorestart=true stdout_logfile=/var/log/ stderr_logfile=/var/log/ configuration de supervisord Cette configuration assez simple fonctionne de la maniĂšre suivante On commence par dĂ©finir le nom de notre programme afin de pouvoir le repĂ©rer facilement. [programhelloworld]. Essayer de bien nommer vos programmes et vos fichiers afin de faciliter la maintenance. On dĂ©finit ensuite les paramĂštres dâenvironnement nĂ©cessaire Ă lâexĂ©cution de notre programme ici les fichiers de settings Ă utiliser. Si vos fichiers de settings sont dans un module il est possible de le prĂ©ciser sous la forme Au besoin il est possible de passer dâautres paramĂštres dâenvironnement sous la forme dâun dictionnaire KEY="val",KEY2="val2". Le paramĂštre directory permet quant Ă lui de donner le rĂ©pertoire ou se trouve notre application, ce qui permet par exemple dâutiliser un chemin relatif vers le fichier wsgi dans la commande Gunicorn. Câest aussi pratique quand vous utilisez beaucoup de configurations diffĂ©rentes pour retrouver en un clin dâĆil le rĂ©pertoire dâune application. On dĂ©finit ensuite la commande Ă exĂ©cuter pour lancer le programme. On voit ici que supervisord lance notre serveur Gunicorn avec des paramĂštres pour fichier de socket le premier paramĂštre bind permet de dĂ©finir un fichier de socket que Gunicorn va utiliser pour communiquer avec Nginx, nous verrons ce point plus en dĂ©tails dans la partie suivante. bind le second bind permet de lier Gunicorn Ă une adresse, dans cet exemple votre application sera disponible sur le port 8001 du serveur. workers prĂ©cise le nombre de processus qui vont traiter en parallĂšle des requĂȘtes. Par dĂ©faut la valeur est de 1, ce qui est assez faible. La valeur recommandĂ©e est en gĂ©nĂ©ral de deux fois le nombre de cĆurs du serveur. Cette valeur est assez gĂ©nĂ©raliste est dĂ©pend du serveur et de votre application. NâhĂ©sitez pas Ă faire des essais pour tout en surveillant la charge de votre serveur pour trouver le meilleur rĂ©glage log-file ce sont les chemins vers les fichiers logs. Veillez bien que ces dossiers existent, et que votre utilisateur lançant le programme ait bien les droits dâĂ©criture dans ces fichiers. Câest une source dâerreur frĂ©quente. On dĂ©finit ensuite si notre programme doit dĂ©marrer automatiquement lors du dĂ©marrage de Supervisord et si il doit redĂ©marrer en cas dâarrĂȘt. Ce sont les parametres autostart et autorestart du fichier de configuration. Enfin on prĂ©cise oĂč enregistrer les logs Supervisord liĂ©s Ă cette application. VĂ©rifiez bien que ces dossiers existent et que les droits sont corrects . Ces logs vont ĂȘtre trĂšs prĂ©cieux pour vous aider Ă dĂ©bugger si tout ne se passe pas comme prĂ©vu. Ces deux derniers rĂ©glages sont optionnels et vous pouvez laisser Supervisord choisir le dossier dâenregistrement des logs. Dans ce cas veillez Ă bien savoir oĂč ils se trouvent ! NâhĂ©sitez pas Ă vous plonger plus en dĂ©tails dans les paramĂštres de Supervisord pour dĂ©couvrir dâautres paramĂštres. Voyons maintenant comment utiliser Supervisord pour dĂ©marrer notre application Nous allons commencer par recharger les fichiers de configuration Ă lâaide de la commande sudo supervisorctl reread sudo supervisorctl update Si vous avez activĂ© lâautostart comme dans lâexemple ci-dessus votre application devrait ĂȘtre maintenant dĂ©marrĂ©. Sinon nous pouvons lancer un programme Ă lâaide de la commande sudo supervisorctl start hello Il est possible de la mĂȘme façon de stopper un programme ou de le redĂ©marrer. sudo supervisorctl stop hello sudo supervisorctl restart hello Pour connaĂźtre le statut de toutes vos applications en un clin dâĆil utilisez la commande de status sudo supervisorctl status Indication de l'Ă©tat d'une tache supervisord, ici elle est arrĂȘtĂ©e Notre application tourne maintenant correctement et Supervisord se charge de la surveiller. En cas de plantage ou de redĂ©marrage de la machine, Surpervisord relancera votre application pour quâelle soit toujours disponible. Il ne nous reste plus quâĂ rendre notre site accessible depuis lâensemble des ordinateurs du rĂ©seau. Configurer NGinx Nginx Nous allons utiliser la fonctionnalitĂ© de reverse proxy de Nginx, câest Ă dire quâil fera le lien entre une URL demandĂ©e et un serveur applicatif capable de renvoyer le contenu associĂ© a cette URL. Si la configuration le permet, Nginx demandera la ressource associĂ©e Ă cette URL Ă Gunicorn et renverra la rĂ©ponse Ă lâutilisateur. Si Nginx nâest pas installĂ©, il suffit de lancer la commande suivante sudo aptitude install Ă adapter en fonction de votre distribution On peut vĂ©rifier que le paquet est bien installĂ© en affichant la version Ă lâaide la commande $ -v version / Ubuntu La configuration par dĂ©faut de Nginx se trouve dans le fichier /etc// nous nâallons pas la modifier mais je vous invite Ă la lire pour en apprendre plus sur le fonctionnement de Nginx. La configuration de Nginx se dĂ©roule dans deux dossiers /etc//site-available qui contient les fichiers de configuration des "sites" qui peuvent ĂȘtre servis depuis notre serveur. Câest un dossier de dĂ©pĂŽt, les configurations placĂ©es dans ce dossier ne sont pas utilisĂ©es directement. /etc//site-enabled qui contient la configuration des "sites" qui seront servis depuis notre serveur. Seuls les sites configurĂ©s dans ce dossier seront effectivement disponibles par les utilisateurs depuis lâextĂ©rieur. On stocke donc nos configurations Nginx dans le dossier site-available et on les active en crĂ©ant un lien symbolique dans le dossier site-enabled pointant vers site-available. Ainsi pour dĂ©sactiver temporairement un site on peut simplement supprimer le lien symbolique et garder la configuration complĂšte dans le dossier de dĂ©pĂŽt. En gĂ©nĂ©ral on essaye de garder ces deux rĂ©pertoires aussi organisĂ©s que possible. Pour cela une bonne pratique est de crĂ©er un fichier de configuration par site disponible. Les fichiers du dossier site-enabled sont chargĂ©s depuis le fichier /etc// Nginx est un outil trĂšs puissant et complexe, dĂ©crire lâensemble des possibilitĂ©s demanderait un cours Ă part entiĂšre, nous allons donc nous concentrer ici sur un exemple minimal, mais fonctionnel. Une configuration possible serait la suivante upstream hello { server unix/tmp/ fail_timeout=30s; } server { listen 80; listen 443 default_server ssl; server_name access_log /var/log// error_log /var/log// location /static/ { alias /home/clementine/public_html/hello_world/static/; } } ArrĂȘtons-nous quelques instants sur cette configuration et analysons la en dĂ©tails. Le paramĂštre upstream permet de dire Ă Nginx de transmettre les requĂȘtes des utilisateurs Ă un autre serveur. Dans notre cas on redirige» la requĂȘte vers gunicorn via une socket. On prĂ©cise une durĂ©e maximum de 30 secondes pendant laquelle Nginx tente Ă nouveau de contacter Gunicorn en cas dâĂ©chec. Au-delĂ de 30 secondes la requĂȘte se termine en Ă©chec. On ouvre ensuite un block server qui regroupe toute la configuration de notre site. Le dĂ©coupage de la configuration en diffĂ©rents blocs server permet une trĂšs grande granularitĂ© dans les directives de configurations. La directive listen permet dâindiquer sur quel port va Ă©couter et rĂ©pondre Nginx, ici le port 80 HTTP et le port 443 HTTPS. Nâoubliez pas que pour que votre HTTPS fonctionne correctement il faut Ă©tablir un certificat et le prĂ©ciser dans la configuration Nginx. Le server_name correspond au nom de domaine auquel votre serveur doit rĂ©pondre. Notez bien que cela doit coller avec votre paramĂštre ALLOWED_HOSTS, sinon ça ne fonctionnera pas. Les deux lignes suivantes permettent de dĂ©finir les fichiers dâenregistrements des logs dâaccĂšs et dâerreur. Ces fichiers sont importants en cas de problĂšme afin de mieux comprendre ce qui se passe sur votre serveur. Le bloc suivant permet de dĂ©finir le dossier oĂč se trouvent les fichiers statiques de Django. Ils seront servis quand une url de type sera appelĂ©e. Pour rendre le site accessible nous allons crĂ©er un fichier dans le dossier sites-available et y coller la configuration analysĂ©e prĂ©cĂ©demment. Puis pour activer cette configuration on crĂ©e un lien symbolique depuis le rĂ©pertoire site-enabled. sudo ln -s /etc//sites-available/ /etc//sites-enabled/ Nginx met Ă notre disposition un outil permettant de tester la configuration, pour cela il suffit de taper la commande suivante Le rĂ©sultat obtenu est le suivant sudo -t the configuration file /etc// syntax is ok configuration file /etc// test is successful En cas dâĂ©chec on obtient un message dâerreur prĂ©cisant lâerreur Ă rĂ©gler Exemple d'erreur Nginx. Ici mon utilisateur ne possĂšde pas les bons droits pour Ă©crire dans le rĂ©pertoire de log. La derniĂšre chose Ă faire est de redĂ©marrer Nginx pour quâil prenne en compte les modifications de la configuration. Pour cela on utilise la commande sudo service start ou restart si est dĂ©jĂ dĂ©marrĂ© Et voila ! Votre application est accessible Ă lâadresse dĂ©finie dans le serveur Nginx. Si vous avez configurĂ© un vrai serveur il faudra ensuite configurer votre nom de domaine pour quâil pointe vers votre serveur. Si vous ĂȘtes dans une machine virtuelle ou en locale il est possible de simuler le nom de domaine en Ă©ditant le fichier hosts de votre ordinateur. Ainsi jâai attribuĂ© dans le fichier host le domaine Ă lâadresse localhost, je pourrais accĂ©der Ă mon application en utilisant lâurl Voici comment tester rapidement en ligne de commande $ echo " sudo tee -append /etc/hosts $ curl RĂ©sultat ... On se retrouve dans la conclusion pour quelques idĂ©es dâamĂ©liorations Ce tutoriel touche Ă sa fin. Nous aurons vu ensemble les bases pour dĂ©ployer une application web codĂ©e en Python en production. Les logiciels utilisĂ©s sont Ă la fois puissants et trĂšs robustes, votre site web pourra encaisser des dizaines de connexions sans problĂšme sauf si vous avez des problĂšmes de performance ailleurs ! Si vous rencontrez des problĂšmes de configurations nâhĂ©sitez pas Ă regarder les fichiers log Nginx, Supervisor et Gunicorn pour savoir ce qui coince . En savoir plus Pour approfondir je vous conseille de regarder de plus prĂšs les sujets suivants Sentry Un logiciel permettant de connaĂźtre les erreurs que vos utilisateurs rencontrent en production. Il est trĂšs utilisĂ© dans lâĂ©cosystĂšme Python et permet dâavoir plus dâinformations sur les utilisateurs ayant rencontrĂ©s un bug connectĂ©s ou non, Ă©tat de lâapplication, etc.. Nginx Ici nous avons couvert une utilisation trĂšs basique de ce logiciel, il est capable de faire beaucoup plus de choses servir du contenu en HTTPS, autoriser lâaccĂšs Ă certaines adresses IP uniquement, etc. Automatiser le dĂ©ploiement Ici le lancement et la configuration de Nginx ou de Supervisord a Ă©tĂ© rĂ©alisĂ© Ă la main, mais il est possible Ă lâaide dâoutils de dĂ©ploiement dâautomatiser toutes ces actions. Envie dâen savoir plus, ça se passe ici. Gestion des dĂ©pendances Ici nous avons utilisĂ© lâoutil le plus simple pour gĂ©rer les dĂ©pendances pip. Il existe des outils plus complets tels que pipenv ou encore pip-tools qui permettent de gĂ©rer plus finement les dĂ©pendances de votre application. Quelques liens Documentation de Gunicorn, example de configuration de Nginx La liste des settings de Gunicorn Un article en anglais sur le mĂȘme sujet Mieux comprendre Nginx EN Merci Ă artragis pour la validation de ce tutoriel. Ces contenus pourraient vous intĂ©resser 1 commentaire Banni MasquĂ© par artragis â spam Banni MasquĂ© par artragis â spam Hey ! Merci pour ton tuto. Petite question, Gunicorn et Supervisor doivent bien ĂȘtre installer sur la "machine directement" et pas dans lâenv ? Connectez-vous pour pouvoir poster un message. Connexion Pas encore membre ? CrĂ©ez un compte en une minute pour profiter pleinement de toutes les fonctionnalitĂ©s de Zeste de Savoir. Ici, tout est gratuit et sans publicitĂ©. CrĂ©er un compte
Lorsqueje souhait tĂ©lĂ©charger forge , je reçois un message dâerreur : ''ce fichier ne contient pas dâapplication associĂ©e pour effectuer cette action installez une application ou , si câest dĂ©jĂ fait , crĂ©ez une association sur la page paramĂštres des applications par dĂ©faut . ââ Pourtant jâai minecraft sur mon pc et jâai dĂ©jĂ lancĂ© mon launcher en 1.12.2. Merci Ă vous
Bonjour, Suite Ă la dĂ©tection par le logiciel de DriversCloud, je reçois une erreur Windows indiquant que "Aucun programme n'est associĂ© Ă ce fichier pour exĂ©cuter cette action. Installez un programme ou, si c'est dĂ©jĂ fait, crĂ©ez une association dans le Panneau de configuration Programmes par dĂ©faut" Je suppose qu'il est fait ici rĂ©fĂ©rence Ă mon navigateur internet, puisque aucune fenĂȘtre ne s'ouvre... sauf que mon navigateur est dĂ©jĂ dĂ©clarĂ© dans la section Programmes par dĂ©faut de Windows 10. Pourtant, dĂ©jĂ autrefois, bien que Firefox soit dĂ©clarĂ© comme navigateur par dĂ©faut, DriversCloud ouvrait toujours une fenĂȘtre dans Edge. S'il s'agit d'une association de fichier avec un programme, je ne sais pas quelle association il faut faire... La dĂ©tection offline fonctionne bien sĂ»r. Merci par avance pour votre aide.
Cesfichiers, contrairement Ă ce que leur nom indique, ne sont pas seulement prĂ©sents sur le Bureau de lâordinateur. Vous les trouverez dans dâautres dossiers. Ils sont de petite taille et il nây a pas dâapplication associĂ©e Ă ces fichiers que vous pouvez utiliser pour les ouvrir. Plus important encore, ils ne sont pas associĂ©s Ă
Encore plus de contenu sur les rĂ©seaux sociaux Youtube pour les vidĂ©os, Facebook pour les Ă©changes, Instagram pour les tests en cours et Twitter pour les nouvelles des marques. Abonnez-vous. Vous ĂȘtes libre de cliquer ICI pour passer commande chez mon partenaire i-Run quel que soit ce que vous voulez commander. Ca ne vous coĂ»tera pas plus cher, câest livrĂ© en 24h et câest une bonne façon de supporter le blog. Les fichiers .GPX, .TCX ou .Fit, ça vous parle ? Pour la majoritĂ© dâentre vous, probablement pas. Si vous avez une montre GPS, vous ne le savez peut-ĂȘtre pas, mais elle utilise ces extensions de fichier. Ce sont des formats dâenregistrement de fichier, Ă lâinstar du .DOC pour Word. Certains vont peut-ĂȘtre trouver ça un peu geek, mais vous allez voir quâil y a plusieurs cas de figure oĂč câest utile de savoir quel format de fichier choisir pour le manipuler TransfĂ©rer un itinĂ©raire dans sa montreConserver le guidage turn by turnSupprimer un morceau de trace GPS parce que vous avez oubliĂ© dâĂ©teindre votre montre GPS aprĂšs lâarrivĂ©eFusionner 2 jours de rando en 1 seule traceExporter manuellement une activitĂ© vers Strava on a vu son utilitĂ© lors de la cyberattaque de GarminLes formats dâenregistrement GPS Dâune maniĂšre gĂ©nĂ©rale, il existe 2 types de fichiers Les enregistrements de sĂ©ances de sport par une montre GPSLes tracĂ©s dâitinĂ©raireLe premier a Ă©tĂ© créé par une montre GPS et contient toutes les donnĂ©es enregistrĂ©es par les diffĂ©rents capteurs. Il peut y en avoir beaucoup position GPS, temps, frĂ©quence cardiaque, cadence, altitude, etc. On trouve tous ces fichiers dans la mĂ©moire de la montre et aussi sur lâapplication vers laquelle les donnĂ©es sont synchronisĂ©es. Le deuxiĂšme est créé par lâutilisateur pour le transfĂ©rer dans la montre GPS afin quâil serve de guide. Câest ce quâon appelle le suivi dâitinĂ©raire. Il ne contient donc que des positions GPS et pas de donnĂ©es physiologiques frĂ©quence cardiaque, cadence, etc, ni de chrono. Jâai dĂ©jĂ prĂ©sentĂ© 8 applications pour tracer un itinĂ©raire. Et la subtilitĂ©, câest quâon peut utiliser lâenregistrement dâune sĂ©ance pour faire du suivi dâitinĂ©raire, puisquâil contient les donnĂ©es GPS nĂ©cessaires. Dans ce cas, la montre utilise un fichier GPX pour le suivi dâitinĂ©raire et enregistre lâactivitĂ© en cours dans un autre format FIT si câest une Garmin. Les diffĂ©rences entre les formats se trouvent dans les donnĂ©es contenues Ă lâintĂ©rieur des fichiers et leur formatage. Par exemple, les fichiers TCX et FIT supportent les tours manuels ou automatiques et les pauses alors que le format GPX ne fait quâenregistrer des positions GPS avec un horaire associĂ©. Le format FIT Câest un format créé par Garmin pour remplacer le TCX toutes les montres GPS Garmin actuelles enregistrent nativement au format FIT. Lorsque vous faites une activitĂ© sportive avec une montre GPS Garmin, câest dans ce format quâelle enregistre lâactivitĂ© dans sa mĂ©moire. Le FIT est un format binaire. Ca permet de rĂ©duire la taille du fichier environ 10 fois plus petit quâun fichier XML pour optimiser la mĂ©moire et le temps de transfert. Par contre, câest plus difficile Ă Ă©diter. Il peut Ă©galement inclure des donnĂ©es gĂ©nĂ©rales sur lâactivitĂ©, comme le temps total, la distance, le type de sport ou lâappareil utilisĂ©. Ces donnĂ©es sont utilisĂ©es par exemple par Strava, qui affiche ainsi lâappareil de provenance dâune activitĂ©. Le format TCX Câest un fichier Training Center XML, un autre format dĂ©veloppĂ© par Garmin et qui est devenu standard. Le fait que ce soit un format XML rend sa visualisation et son Ă©dition plus facile. Ce fichier contient les informations turn by turn. Il peut inclure les mĂȘmes donnĂ©es gĂ©nĂ©rales de lâactivitĂ© quâun fichier FIT. Le format GPX Câest un fichier Global Positionning XML. Il contient les informations de gĂ©opositionnement. Câest le format typiquement utilisĂ© pour le transfert dâitinĂ©raires. Il y a 2 types de format GPX Trace GPX contient tous les points qui composent la trace des milliersItinĂ©raire GPX contient uniquement quelques points de passage espacĂ©s avec lâinformation de guidage associĂ©e Ă chaque point genre Ă ce point, tourner Ă gaucheâ, la montre GPS Ă©tant chargĂ©e de relier les points entre lâheure actuelle, les itinĂ©raires GPX transfĂ©rĂ©s vers une Garmin sont limitĂ©s Ă 50 points de guidage. Si vous planifiez un long itinĂ©raire pour un ultra ou un trek, alors vous risquez dây ĂȘtre confrontĂ©. Ce nâest pas trop grave. Câest juste quâau-delĂ du 50e point, vous nâaurez plus de guidage turn by turn, mais vous aurez toujours la trace GPS Ă suivre. Par dĂ©faut, un fichier GPX ne contient pas dâautres donnĂ©es frĂ©quence cardiaque, cadence, etc. Mais Garmin a créé une extension pour ajouter ces donnĂ©es. Et lĂ , on observe des diffĂ©rences entre les marques. Par exemple, lorsque jâĂ©value la prĂ©cision dâune montre cardio GPS lors dâun test, lâexport dâune activitĂ© Polar en GPX ne me donnera que la trace GPS et pas la FC ; par contre, Ă partir de Garmin Connect, lâexport en GPX inclut bien la FC. Le format KML Pas franchement dâintĂ©rĂȘt dans le cadre dâune pratique sportive. Ce format peut servir Ă lâexport et la visualisation dâune trace GPS dans Google Earth. Le format CSV Câest un fichier Comma Separated Values, qui peut ĂȘtre utilisĂ© pour visualiser les donnĂ©es dâun enregistrement dans Excel. Quelle importance a le choix du format ? Dans la majoritĂ© des cas, aucune, parce que maintenant ces 3 formats sont devenus standards et sont supportĂ©s par toutes les marques de montres GPS. Mais il existe quand mĂȘme quelques cas particuliers, surtout lors dâexport/import de fichiers. Certains champs de donnĂ©e non standards prĂ©sents dans un format par exemple les running dynamics de Garmin ou le training effect ne sont pas supportĂ©s par tous les sites ou logiciels dâanalyse. Les raisons de prĂ©fĂ©rer le format TCX Le guidage turn by turn Jâai dit plus haut que le format classique utilisĂ© pour transfĂ©rer une trace GPS Ă utiliser pour le suivi dâitinĂ©raire est le GPX. HĂ© bien il y a une subtilitĂ© depuis lâapparition du guidage turn by turn. Car le format GPX ne comprend que les points GPX qui constituent la trace et pas les informations sur le prochain virage. Jâai dĂ©jĂ Ă©tĂ© sollicitĂ© de nombreuses fois par des possesseurs de Fenix 5 Plus ou Fenix 6 qui se plaignaient de ne pas avoir tout le temps les alertes turn by turn. A chaque fois, câest parce quâils dĂ©posaient le fichier GPX directement dans la mĂ©moire de Garmin Connect. La solution pour rĂ©gler ce problĂšme Ă©tait de passer par la moulinette de Garmin Connect Importer la trace GPX dans Garmin ConnectTransfĂ©rer lâitinĂ©raire vers la montreOu alors dâutiliser un fichier de trace GPS au format TCX, qui contient les informations de guidage. Transfert vers une autre plateforme Comme un fichier TCX conserve toutes les donnĂ©es des diffĂ©rents capteurs de la montre ou connectĂ©s Ă la montre cadence, FC, puissance, etc, câest le format Ă privilĂ©gier pour le transfert dâactivitĂ©s dâentrainement dâune plateforme Ă une autre. Par exemple, le transfert des donnĂ©es de cadence et de puissance vers Strava se fait via des fichiers TCX mais ne fonctionne pas avec des fichiers FIT. Pourquoi prĂ©fĂ©rer le format FIT Ă©conomiser de la mĂ©moire Le FIT est un format binaire. Ca permet de rĂ©duire la taille du fichier sans perdre dâinformation environ 10 fois plus petit quâun fichier XML pour optimiser la mĂ©moire et le temps de transfert. Câest une raison qui a moins dâimportance maintenant quâil y a quelques annĂ©es, du fait de lâaugmentation de la taille de la mĂ©moire interne des montres connectĂ©es. En 2020, nâimporte quelle Garmin peut conserver environ 200h dâactivitĂ© en mĂ©moire, avec toutes les donnĂ©es qui vont avec position, vitesse, FC, cadence, etc. Donc vous ĂȘtes large. Quand prĂ©fĂ©rer le format GPX pour transfĂ©rer un itinĂ©raire Câest pas vraiment une raison. Mais si vous voulez transfĂ©rer ou rĂ©cupĂ©rer un itinĂ©raire pour vous en servir pour du guidage, alors vous allez naturellement vous diriger vers le format GPX. Tout simplement parce quâil a Ă©tĂ© conçu pour ça et quâil fonctionne avec tous les GPS pas seulement les montres GPS. Les outils dâĂ©dition et de conversion dâun format Ă un autre Voici quelques outils pour Ă©diter ou convertir les fichiers GPX, TCX ou FIT. Si vous en connaissez dâautres, signalez-les moi dans un commentaire. Programmes GPS track editor Windows seulement Ă©diter, couper et fusionner des fichiers GPX GPX Merge fusionner des fichiers GPX GPX Editor Ă©diter un fichier GPX Plateformes en ligne Alltrail ex gpsies convertir nâimporte quel type de fichier en nâimporte quel type de fichier Fitfiletools Ă©diter, couper et fusionner des fichiers FIT Plotaroute Ă©diter, couper et fusionner des fichiers GPX Gotoes fusionner des fichiers GPX, TCX ou FIT GPX Merge fusionner des fichiers GPX Merge Activites fusionner des fichiers GPX GPStracktools/edit track modifier le dĂ©part ou lâarrivĂ©e dâune activitĂ© GPX GPStracktools/merge activites fusionner des fichiers GPX Exporter une activitĂ© depuis une application Câest aussi une façon toute simple de convertir un fichier GPS importez-le dans lâapplication de la marque de votre montre GPS et exportez-le ensuite dans un autre format. Garmin Connect export en FIT, TCX, GPX, KML, CSV Polar Flow export en TCX, CSV Suunto app via Sportstracker export en GPX Coros app export en FIT, TCX, GPX, KML, CSV Les tutos pour crĂ©er des itinĂ©raires 8 applications pour tracer un itinĂ©raire Comment crĂ©er et importer un itinĂ©raire avec une Garmin Comment crĂ©er et importer un itinĂ©raire avec une Polar Comment crĂ©er et importer un itinĂ©raire avec une Suunto Comment crĂ©er et importer un itinĂ©raire avec une Coros
Commentouvrir les fichiers RPM. Si vous ne savez pas quel programme a créé the RPM file, double cliquez sur le fichier pour voir sâil sâouvre automatiquement avec une application par dĂ©faut. Selon le type de fichier RPM, vous aurez peut-ĂȘtre une application sur votre PC capable de lire le fichier. Si le fichier RPM est associĂ© Ă