Que dois-je savoir / apprendre pour le déploiement de python automatisé?
-
20-09-2019 - |
Question
Je commence un nouveau projet webapp en Python pour entrer dans l'état d'esprit agile et je voudrais faire des choses « correctement » en ce qui concerne le déploiement. Cependant, je trouve l'ensemble virtualenv / tissu / zc.buildout / etc trucs un peu confus -. Je suis habitué à quelques fichiers FTP'ing PHP sur un serveur et pointant vers un serveur web à elle
Après le déploiement de la mise en place du serveur ressemblerait à quelque chose comme:
Nginx --proxy-to--> WSGI Webserver (Spawning) --> WSGI Middleware --> WSGI App (probably MNML or similar)
avec le serveur Web de python géré par supervisord.
Quel type de déploiement set-up / packages / apps dois-je être à la recherche en? Et est-il une structure de répertoire spécifique que je dois rester avec mon application pour faciliter le déploiement?
La solution
Vous avez déjà mentionné buildout, et il est tout ce que vous avez besoin. Google par exemple buildouts pour les différentes parties. Prend un certain temps pour mettre en place la première fois, mais vous pouvez réutiliser la configuration entre les différents projets aussi.
Laissez supervisord commencer tout, pas seulement le serveur python. Puis commencez supervisord au redémarrage soit Cron Fron ou init.d.
Autres conseils
Votre histoire de déploiement dépend de votre application. Utilisez-vous Django? Puis les Apache + docs de déploiement de mod_wsgi
faire un bon point de départ . Ensuite, vous pouvez google autour pour plus de détails, comme ce 2 parties série en utilisant pip
, virtualenv
, git
et fabric
.
Vraiment, fabric
, virtualenv
, et tous les autres outils sont conçus pour le rendre plus facile à maintenir et automatiser votre déploiement. Dans un premier temps, les étapes de la documentation sont probablement assez. Une fois que vous obtenez une idée de la façon dont les choses fonctionnent, vous pouvez revoir pour améliorer votre processus.
Je l'ai entendu de bonnes choses sur Tissu :
Le tissu est une bibliothèque Python et outil de ligne de commande destiné à simplifier le déploiement d'applications ou l'exécution des tâches d'administration du système via le protocole SSH. Il offre outils pour l'exécution arbitraire shell des commandes (soit en tant que connexion normale , ou bien par l'intermédiaire d'
sudo
), le téléchargement et le téléchargement de fichiers, et ainsi de suite.