Question

Je développe une application Django sous Windows, SQLite et le serveur de développement Django. Je l'ai déployé sur mon serveur hôte qui exécute Linux, Apache, FastCgi, MySQL.

Malheureusement, une erreur est renvoyée par le serveur sur la prod alors que tout va bien sur la machine de développement. J'ai demandé à mon fournisseur une solution de pré-production afin de pouvoir déboguer et comprendre le problème.

Quoi qu’il en soit, quelles sont selon vous les erreurs les plus probables qui peuvent survenir lors du déplacement d’une application django de dev à prod?

Meilleur

Mise à jour: Je pense qu’un pré-produit est le meilleur moyen de résoudre ce type de problème. Mais je voudrais construire une liste de contrôle de ce qui doit être fait avant de mettre en production. Merci pour les réponses très précieuses que j’ai reçues jusqu’à présent:)

Mise à jour: À titre d'information, j'ai implémenté le serveur de préprod et la notification par courrier électronique comme suggéré par shanyu et je peux voir que l'erreur provient de smart_if templatetag que j'utilise pour cette nouvelle version. Un truc avec des balises de template?

Mise à jour: Je pense avoir corrigé le pb causé par l'envoi FTP de Filezilla. J'utilisais le " remplacer si plus récent " option qui, je suppose, provoque des résultats inattendus. En utilisant le " remplacer tout " option résoudre le problème. Cependant, c’était l’occasion pour moi d’en apprendre davantage sur le déploiement. Merci pour vos réponses.

Était-ce utile?

La solution

Les problèmes que j'ai généralement incluent:

  1. Paramètres de production mal configurés, que ce soit dans la production, localsettings.py, wsgi / cgi ou les fichiers de site Apache dans / etc / sites-available
  2. Différences dans la base de données. J'utilise South pour les migrations et j'ai rencontré quelques problèmes subtils lors de l'exécution de ma migration sous PostgreSQL alors qu'elle fonctionnait sans problème sqlite.
  3. Hébergement de fichiers statique depuis que je triche et utilise le serveur Django en développement
  4. Autorisations, à la fois sur le système de fichiers et dans la base de données
  5. Des problèmes de réseau rares, mais possibles, m'empêchent d'obtenir mes dépendances, que ce soit sur PyPi ou sur un site tiers

Voici comment j'ai atténué ces problèmes:

  • Utilisez la même base de données pour la production et le développement (dans votre cas, MySQL partout)
  • J'ai trouvé utile de disposer d'un "test". environnement qui imite la production de toutes les manières possibles (il peut s’agir de matériel de niveau inférieur, voire de la même machine). De cette façon, s’il ya des problèmes avec ce "type de production" " Enivornment, je peux les résoudre sans mettre mon serveur de production hors ligne.
  • Tout écrire pour des déploiements répétables. J'utilise fabric , mais zc.buildout ou Paver fonctionnerait également. Ces outils aident à réduire les fautes de frappe lors du déploiement et le temps nécessaire au déploiement de mon application.
  • Utilisez le contrôle de version (mercurial, git, subversion) et un outil de migration de schéma (comme South). Ainsi, en cas de problème lors du déploiement en production, vous avez la possibilité de sauvegarder les modifications et de permettre à la production de s'exécuter. l'ancien code avec l'ancien schéma de base de données.
  • Je n'ai pas mis en place un " proxy d'oeuf " mais, je l’envisage, pour éviter les problèmes lors du téléchargement des dépendances.
  • J'ai trouvé que les dépendances de blocage de pip sont utiles, en cas de nouvelles incompatibilités. le changement dans une bibliothèque a eu lieu depuis que je l'ai téléchargé initialement
  • Utilisez un framework de test Web tel que Windmill ou Selenium pour tester mon application dans mon "test". environnement, afin que je puisse obtenir très rapidement une couverture de test de mon système.

Autres conseils

En ce qui concerne votre cas, je peux penser à deux choses simples qui pourraient vous aider:

  1. Vous pouvez activer Django pour envoyer des messages lorsque des exceptions surviennent, en donnant des détails à leur sujet. Regardez ici pour plus de détails.
  2. Si vous configurez un environnement de test sur le serveur de production (par exemple, test.exemple.com), vous serez mieux à même de vérifier si tout va bien se passer avant de déployer l'application.

Je pense que c’étaient les podcasts que j’avais écoutés récemment (de Pycon 2009):

  

Localiser Django dans le monde réel (PyCon 2009):

     

http://advocacy.python.org/podcasts/pycon.rss

     

Parties 1 à 3

Très bonne introduction à la conception de vos applications pour le déploiement, en particulier pour la réutilisation et le redéploiement.

Regs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top