Question

Je commence en tant que développeur Web indépendant et j'ai récemment effrayé un client en donnant un devis pour un site assez simple qui était un peu plus élevé que prévu. C'était essentiellement Brochureware qu'ils auraient pu se faire dans une solution hébergée comme WordPress.com ou Google Sites. À l'exception de une Caractéristique critique, cela m'a fait penser que Django serait un bon ajustement, et qu'un bon développement Web pourrait être motivé.

Lorsque je regarde les tâches que j'ai énumérées dans mon estimation approximative, il est assez évident pour moi que la plupart des heures sont des choses qui ne sont pas spécifiques au site Web de ces clients. Cela m'a fait penser que je devrais avoir un script pour automatiser le processus de configuration et de déploiement de nouveaux projets Django.

Quelques choses devraient encore être faites manuellement comme:

  • Configurez un nouveau VPS (ou dans la plupart des cas, allez simplement avec VirtualHosts sur un VPS existant).

  • Modifiez les paramètres DNS pour pointer des clients DurseyDomain.com et Test.ClientDomain.com aux nouveaux VP.

  • Configurer SSH-Keys

  • Modifier un fichier de configuration.

Le script ferait alors des choses comme:

  • Installez certains packages requis sur le nouveau VPS

  • Installez par défaut un pare-feu iptables sur le nouveau VPS

  • Ajouter la configuration nginx / apache pour clientdomain.com et test.clientsdomain.com

  • Configurez de nouvelles bases de données pour la production et le test sur le VPS et pour le développement sur ma machine locale.

  • Créez un nouveau projet Django et mettez-le sur Bitbucket.

  • Configurer Settings.py et local_settings.py pour la production, le test et le développement

  • Configurez les BackupRoutines hors site pour la base de données de production et le répertoire des fichiers téléchargés.

  • Activer certaines applications par défaut: pages plates, administrateur

  • Ajoutez des modèles de passe-partout, quelques pages plates à passe-partout et une barre de navigation.

  • Ajouter le 960.gs CSS-Framework

  • Ajouter JQuery

  • Configurez Djapian ou Haystack (y compris le travail Cron pour la mise à jour automatique) pour la recherche.

  • Configurez un nouveau profil Google Analytics.

  • Inclure la possibilité de reproduire les bases de données entre la production, le test et le développement

  • Configurer la surveillance du Pingdom

J'ai utilisé Râteau et Tissu Pour des trucs quelque peu similaires (mais moins ambitieux) dans le passé et je pense que le tissu pourrait également être un bon ajustement pour cette tâche, mais j'aimerais toujours votre contribution. Y a-t-il d'autres outils que je devrais examiner? J'ai entendu de bonnes choses sur Fantoche Mais le simple fait de regarder leur site (il contient le Word Enterprise) me donne le sentiment qu'il pourrait être exagéré pour une opération d'un homme.

Était-ce utile?

La solution

Nous le faisons actuellement avec Fabric + Buildout. D'autres disent que le chef ou la marionnette est mieux adapté (et c'est probablement, si vous voulez faire des trucs de serveur, pas seulement au niveau de l'application).

Aussi pour Django, il y a quelques hosters dédiés qui vous enlèvent beaucoup, j'aime particulièrement http://ep.io que nous utilisons pour alimenter nos déploiements entièrement automatisés pour les démos du django-cms, alors peut-être que vous devriez également examiner ces fournisseurs d'hébergement plutôt que de vous limiter aux VPS qui sont plus au-dessus pour vous.

Autres conseils

La marionnette peut sembler intimidante et exagérée pour les petits projets car il est si souvent utilisé pour d'énormes déploiements, mais je l'utilise pour gérer une seule machine dans mode autonome Sans configuration de serveur client afin que je n'aie pas à traiter avec SSL CERTS et plusieurs machines, ce qui maintient les choses beaucoup plus simples, mais me donne toujours l'avantage que je peux faire très rapidement la reprise après sinistre ou déplacer mon hébergement sans beaucoup de effort. Il y en a grandes raisons (Idempotence, support multiplateforme, gestion complète du cycle de vie, abstraction, DSL concis) pour utiliser des systèmes de gestion de configuration modernes sur des systèmes qui sont essentiellement des scripts qui font SSH dans une boucle ou s'appuyant sur des plates-formes qui vous verrouillent.

Vérifier Apprentissage de marionnette Pour une montée en puissance rapide, y compris des exemples et une aire de jeux VM. Vous pouvez faire des choses vraiment utiles avec des scripts de marionnettes simples (manifestes) qui s'exécutent autonomes, puis commencer à apprendre toutes les fonctionnalités avancées une fois que vous en avez besoin.

Une autre bonne chose est que de nombreux manifestes et modules de marionnettes ont déjà été écrits par d'autres, et ils sont partagés sur le Forge de marionnette Et par beaucoup d'autres utilisateurs de marionnettes avancées.

J'envisage beaucoup de cela récemment comme quelqu'un dans une position similaire.

Une grande partie de ce que vous avez mentionné peut être aidée en créant un bon code squelette qui peut être retiré de Git pour chaque nouveau projet.

Jetez un œil à ceci pour un bon point de départ pour un code squelette générique du projet Django

http://blog.zacharyvoase.com/2010/02/03/django-project-conventions/

J'ai mis en place quelque chose de similaire qui me permet de courir rapidement, mais aussi de séparer les trucs du serveur des trucs du projet. Ceci est très important car il vous permet de contrôler la version chaque projet sans inclure les fichiers système / serveur. C'est ici (toujours en cours). Cela s'occupe de la disposition des dossiers, du CSS supplémentaire, des trucs HTML à passe-partout, des trucs GRID / 960, jQuery, développement vs paramètres de production, paramètres de base de données (le plus), applications installées par défaut, etc. Voici La disposition expliquait

Utilisant Virtualv, Virtualvwrapper & pépin Vous permet de configurer des environs Python autonomes et encapsulés qui sont parfaits pour exécuter plusieurs projets sur un seul VPS. PIP vous permet d'installer des packages sur un VIRUALENV particulier et également de publier tous vos packages sur un fichier de texte qui peut être importé plus tard. Cela rend le redéploiement du code du développement à la production très rapidement. Il vous permet également d'écrire un fichier d'exigences génériques dans votre code squelette qui installe automatiquement toutes vos applications Django normales, c'est-à-dire Django-tagging, etc.

En termes de bases de données, j'ai cessé d'essayer d'avoir des bases de données de développement et des bases de données de production sur différentes machines, il est trop difficile d'importer / exporter des luminaires. Maintenant, j'ai juste des bases de données de production et de développement distinctes sur le VPS et je me connecte à distance (sur SSH) à la Dev One lors du développement. Vous pouvez facilement en copier l'un à l'autre, ce qui est bien également.

Lorsque tout est prêt alors, vous pouvez déployer du développement à la production en utilisant le tissu (je ne suis pas encore coincé, donc je ne suis pas sûr de sa facilité d'utilisation)

Je serais très intéressé d'entendre les pensées d'autres peuples à ce sujet, car j'allais publier quelque chose de similaire!

Consultez le déploiement de la soie, qui est basé sur le tissu et est utilisé pour déployer Django (ou tout WSGI) + Nginx + Gunicorn:

http://pypi.python.org/pypi/silk-deployment/

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