2 Stimmen

Der beste Weg, um Dateien von Dev zu Live-Site (django) verschieben

Ich habe ein svn Checkout lokal, die ich Änderungen vornehmen, sobald ich sie übertragen ich in gehen und meine Dev-Kopie auf dem Server zu aktualisieren.

Meine Frage ist, wie ich meine Dateien am besten auf meine Produktionsseite bringe. Ich kenne mich nicht so gut mit Linux-Befehlen aus, aber ich dachte, ich könnte ein Skript erstellen, das alle Dateien außer .pyc- und .svn-Dateien auf meine Produktionsseite verschiebt? Ich weiß nicht wirklich, was der beste Weg ist, und ich würde gerne von einigen Experten hören, wie man es richtig macht.

0 Stimmen

Dies ist keine Python-Frage. Versuchen Sie die Tags "svn, deployment, scripting".

7voto

Aaron Maenpaa Punkte 112919

Im Allgemeinen führe ich direkt von einem svn-Checkout aus. Loggen Sie sich auf dem Produktionsserver ein, aktualisieren Sie auf die Revision oder das Tag, das als würdig erachtet wurde, starten Sie den Server neu und Sie sind startklar.

Dies hat den Vorteil, dass Sie sich vergewissern müssen, dass alles wird unter Versionskontrolle gehalten, da die Produktionsseite direkt aus dem Repository kommt. Sie könnten die Bereitstellung natürlich automatisieren, indem Sie etwas wie Stoff wenn Sie das wollten.

0 Stimmen

Stimme voll und ganz zu. Ich würde jedoch empfehlen, von einem "Export" statt von einem Checkout auszugehen, damit Sie nicht all diese versteckten .svn-Ordner und deren Inhalte auf Ihrem Webserver herumliegen haben.

1 Stimmen

Da bin ich anderer Meinung. Ich finde die Tatsache, dass es sich um ein Live-Checkout handelt, für Prüfungszwecke nützlich. Sie wollen wissen, welche Version auf dem Server ist: svn log. Sie wollen wissen, ob jemand etwas geändert hat: svn status oder svn diff. Sie sind vielleicht besorgt über die Vertraulichkeit der .svn Verzeichnisse, aber wenn jemand sie lesen kann, kann er sowieso Ihren ganzen Code lesen. Ich würde sie also nicht nur der "Ordnung halber" löschen.

3voto

Alex Martelli Punkte 805329

Kannst du nicht ein svn Repo (vielleicht ein R/O Repo) auf deinem Server haben und es einfach svn up wenn nötig? Auf diese Weise kann svn:ignore die Aufgabe übernehmen, bestimmte Dateien zu ignorieren, &c.

Wenn das zu umständlich ist, würde ich ein "Release" (eine Reihe von Dateien, die getestet wurden und zusammen funktionieren) zusammenpacken, wenn es fertig ist (und es auch für ein einfaches Rollback in svn markieren) - sagen wir in ein .tar.bz2- oder .zip-Archiv - und es an den Server schicken, wo es erweitert wird. Auf diese Weise haben Sie einen guten Überblick darüber, was Sie wann veröffentlicht haben und können mit QA Fehlerberichten leichter umgehen; es wird auch ein Lebensretter sein, wenn Sie jemals in das Geschäft des Branching einsteigen müssen.

Allgemeiner ausgedrückt, Freigabetechnik ist eine wichtige und oft unterschätzte Disziplin, und es lohnt sich, sich darüber zu informieren, auch wenn Sie im Moment noch nichts Kompliziertes oder Hochstrukturiertes in diesem Bereich tun müssen.

1voto

Thomas Schreiber Punkte 1818

Wenn Sie keinen eigenen Repo-Server betreiben wollen und bereit sind, etwas Zeit in die Einarbeitung in Mercurial oder Git zu investieren, können Sie schnell ein öffentliches oder privates Repository bei Bitbucket oder Github einrichten.

Der Ablauf ist folgender: Machen Sie Ihre Commits lokal, pushen Sie das Online-Repository, loggen Sie sich auf Ihrem Server ein, wechseln Sie zum Projekt und ziehen Sie die Änderungen. Eine Faustregel lautet, niemals Projektcode auf dem Server zu bearbeiten, sondern immer lokal zu committen und zu pushen und dann auf den Server zu ziehen. local_settings.py ist die einzige Datei, die ich direkt auf dem Server bearbeite.

Ich verwende eine pip-Anforderungsdatei für externe Abhängigkeiten, und es ist so einfach wie die Eingabe von 'pip install --requirement external_apps.txt', um Abhängigkeiten synchron zu halten. Es ist auch hilfreich, virtualenv zu verwenden, um mehrere Projekte zu verwalten (zumindest lokal) und ein Fabric Deployment-Skript, um den Deployment-Prozess zu vereinfachen.

Oh, und alle VCS haben eine .ignore Datei, in der Sie verhindern können, dass Dateien wie local_settings.py und *.pyc Dateien in Ihrem Repo auftauchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X