Frage

Ich fange an, als ein unabhängiger Webentwickler zu beginnen, und ich hatte vor kurzem einen Kunden mit einem Kundendienst mit einem Zitat für ein ziemlich einfaches Zitat Site, das ziemlich viel höher war, als sie erwartet hatten. Es war grundsätzlich BrochurWare, dass sie sich in einer gehosteten Lösung hätte tun können Wie WordPress.com oder Google-Sites. Außer eins kritisches Merkmal, das ließ mich denken, dass Django eine schöne Passform wäre, und dass ein richtiger Netz Entwicklung könnte motiviert sein.

Wenn Sie die Aufgaben betrachten, die ich in meiner rauen Schätzung aufgeführt habe, ist es hübsch für mich offensichtlich, dass die meisten der Stunden da sind, das nicht vorhanden ist spezifisch für diese Kundenwebsite. Das hat mich darüber nachgedacht, dass ich sollte Haben Sie ein Skript, um den Prozess der Einrichtung und Bereitstellung neu zu automatisieren Django-Projekte.

Ein paar Dinge müssten immer noch manuell gemacht werden wie:

    .
  • Einrichten eines neuen VPS (oder in den meisten Fällen einfach mit Virtualhosts auf einem vorhandenen VPS).

  • Bearbeiten Sie DNS-Einstellungen, um ClientsDomains.com und test.clientsDomain.com zu zeigen. an den neuen vps.

  • Einrichten von SSH-Tasten

  • Bearbeiten einer Konfigurationsdatei.

    Das Skript würde dann Sachen wie: tun

      .
    • Installieren Sie einige erforderliche Pakete auf dem neuen vps

    • installieren Sie die Standardeinstellung Eine IPTABLE-Firewall auf dem neuen VPS

    • Hinzufügen von nginx / apache config für clientsdomain.com und test.clientsdomain.com

    • Neue Up-Datenbanken für Produktion und Prüfung auf dem VPS und zur Entwicklung auf meinem lokalen Computer einrichten.

    • Erstellen Sie ein neues Django-Projekt und legen Sie es auf Bitbucket.

    • Einrichten von Settings.py und local_settings.py für Produktion, Test und Entwicklung

    • Einrichten von Offsite-Backuproutines für Produktionsdatenbank und hochgeladenes Dateiverzeichnis.

    • Aktivieren Sie einige Standard-Apps: Flatpages, admin

    • Fügen Sie einige Boilerplate-Vorlagen, ein paar Kesselplatten und ein Navighar hinzu.

    • Fügen Sie den 960.gs CSS-Framework hinzu

    • Hinzufügen von jquery

    • Einrichten von djapian oder heustack (einschließlich Cron-Job für automatische Aktualisierung) für die Suche.

    • Richten Sie ein neues Google Analytics-Profil ein.

    • umfassen die Möglichkeit, Datenbanken zwischen Produktion, Test und Entwicklung zu replizieren

    • Einrichten der Überwachung von Pingdom

      Ich habe rake und Stoff für etwas ähnliches (aber weniger ehrgeizige) Sachen in der Vergangenheit, und ich denke, dass der Stoff auch eine ziemlich gute Passform für diese Aufgabe sein könnte, aber ich würde immer noch Ihre Eingabe mögen. Gibt es noch andere Werkzeuge, in die ich schauen sollte? Ich habe gut gehört Dinge über pupepet , aber nur auf ihre Site anzusehen (es enthält das Wort "Word Enterprise), gibt mir das Gefühl, dass es sein könnte Überkill für einen ein Mann Betrieb.

War es hilfreich?

Lösung

Wir machen es derzeit mit Stoff + Buildout.Andere sagen, dass Chefkoch oder Marionette besser geeignet ist (und es ist wahrscheinlich, wenn Sie Serverebene-Sachen machen möchten, nicht nur App-Ebene).

Auch für Django gibt es ein paar dedizierte Hostern, die Ihnen viel Ladung nehmen, ich möchte besonders gerne http://ep.io Welches können wir unsere vollautomatisierten Einstellungen für die Demos der django verwenden-cms , vielleicht sollten Sie sich vielleicht auch in die Hosting-Anbieter ansehen, anstatt sich selbst auf VPSS einzuschränken, die für Sie mehr über ihnen sind.

Andere Tipps

Puppe kann für kleine Projekte entmutigend und übertrieben sein, da es so oft für große Bereitstellungen verwendet wird, aber ich benutze sie, um nur eine Maschine in Standalone-Modus ohne Clientserver-Setup, damit ich nicht mit SSL-Zertifikaten und mehreren Maschinen umgehen muss , was die Dinge viel einfacher hält, gibt mir aber dennoch den Vorteil, dass ich eine wirklich schnelle Katastrophenwiederherstellung machen kann oder mein Hosting ohne viel Mühe verschieben kann. Es gibt einige Große Gründe (IDEMPOTENCY, CRONT-Plattformunterstützung, Full Lifecycle Management, Abstraktion, Concise DSLs) Für die Verwendung moderner Konfigurationsmanagementsysteme über Systeme, die im Wesentlichen Skripts sind, die im Wesentlichen in einer Schleife ausführen oder auf Plattformen angewiesen sind, in denen Sie einrasten.

Check out Puppe lernen für eine schnelle Rampe inklusive Beispiele und einen VM-Spielplatz. Sie können wirklich nützliche Dinge mit einfachen Puppet-Skripts (Manifests) erstellen, die Standalone ausführen, und dann beginnen Sie mit dem Lernen aller erweiterten Funktionen, sobald Sie sie benötigen.

Eine andere schöne Sache ist, dass viele Marionettenmanifests und Module bereits von anderen geschrieben wurden, und sie werden auf dem Puppet Forge und von vielen anderen Advanced Puppet-Benutzer .

Ich habe in einer ähnlichen Position viel Zeit in Betracht gezogen.

viel von dem, was Sie erwähnt haben, können mit einem guten Skelettcode geholfen werden, der für jedes neue Projekt aus Git gezogen werden kann.

schauen Sie sich dies für einen guten Ausgangspunkt für einen generischen Django-Projekt-Skeleton-Code an

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

Ich setze etwas Ähnliches zusammen, das es mir ermöglicht, schnell aufzustehen, aber auch, um das Server-Sachen aus dem Projekt Sachen zu trennen. Dies ist sehr wichtig, da Sie bei der Version jedes Projekts ohne System- / Server-Dateien steuern können. Es ist hier (immer noch sehr in Arbeit). Dies kümmert sich um das Ordnerlayout, zusätzliche CSS, Kessel-HTML-Zeug, Grid / 960-Sachen, JQuery, Entwicklung gegen Produktionseinstellungen, Datenbankeinstellungen (höchst), standardmäßige installierte Apps usw. Hier ist Das Layout erklärt

mit virtualenv , virtuenvrapper & PIP Ermöglicht das Richten Sie eigenständige, eingekapselte Python-Umwelt ein, die ideal für mehrere Projekte auf einem VPS sind. Mit PIP können Sie Pakete an einen bestimmten VirualenV installieren und auch alle Ihre Pakete an einen Textdatei ausgeben, der später importiert werden kann. Dies macht den Umwertung von Code von der Entwicklung bis zur Produktion sehr schnell. Sie können auch in Ihrem Skelett-Code eine generische Anforderungsdatei schreiben, die automatisch alle Ihre normalen Django-Apps installiert, d. H. Django-Tagging usw.

In Bezug auf Datenbanken habe ich aufgehört, Entwicklungsdatenbanken und Produktionsdatenbanken auf verschiedenen Maschinen zu haben, ist es zu schwer, um Geräte zu importieren / zu exportieren. Jetzt habe ich nur separate Produktions- und Dev-Datenbanken auf dem VPS und verbinden Sie die Remote (über SSH) auf die Dev ONE, wenn Sie sich entwickeln. Sie können einen leicht zu einem anderen kopieren, der auch schön ist.

Wenn alles fertig ist, können Sie mit dem Stoff von der Entwicklung auf der Produktion einsetzen (ich bin noch nicht festgefahren, also bin ich nicht sicher, ob ich nicht sicher bin)

Ich wäre sehr daran interessiert, andere Gedanken anderer Menschen dazu zu hören, da ich etwas Simliar posten sollte!

Check out Silk Deployment, which is based on Fabric and is used to deploy Django (or any WSGI) + Nginx + Gunicorn:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top