2009-03-20 5 views
2

zur Zeit meines Work-Flow Aktualisierung wird wie folgt:Best Practice eine Website

lokal auf einer Maschine, die ich auf jeder Webseite eine Git-Repo halten arbeite ich an, wenn die Zeit, etwas zu veröffentlichen, kommt komprimiere ich den Ordner und Laden Sie diese einzelne Datei über ssh auf den Produktionsserver hoch, dekomprimieren Sie sie, testen Sie die Änderungen, verschieben Sie die Änderungen in den Live-Ordner und ich lösche den .git-Ordner.

Ich frage mich, ob die Verwendung eines Git Repo auf dem Live-Server eine gute Idee war, scheint zunächst zu sein, aber es kann problematisch sein, wenn eine Änderung auf dem Produktionsserver im Vergleich zu nicht gleich aussieht die lokale Entwicklungsmaschine ... das könnte ein Feuer anfangen ... Was ist mit dem Erstellen eines nackten Repo auf einigen Ordner auf dem Produktionsserver dann klonen von dort in den öffentlichen Ordner und schob Updates von lokalen Rechner auf den bloßen Repo und ziehen aus dem blank auf dem öffentlichen Ordner des Produktionsservers ... möge jeder ein Feedback geben.

Später las ich über Capistrano http://capify.org aber ich habe keine Erfahrung w/diese Software ...

Ihrer Erfahrung, was die beste Praxis/Methodik ist eine Website, Bereitstellung/Updates zu erreichen?

Vielen Dank im Voraus und für Ihr Feedback.

Antwort

0

Ich habe nie darüber nachgedacht, eine Repository-Kopie auf dem Server zu haben. Nachdem ich es gelesen hatte, dachte ich, es könnte cool sein ... Das Aktualisieren der Dateien direkt in der Live-Umgebung ohne Tests ist jedoch keine gute Idee.

Sie sollten immer eine sekundäre Umgebung, die entspricht, genau die Live-Version (Webserver + DB-Version, falls vorhanden) aktualisieren und dort testen. Wenn alles gut geht, dann lege die Live-Site unter Wartung, aktualisiere Dateien und gehe wieder live.

Also würde ich nicht die Live-Site eine Kopie des Repository machen, aber Sie könnten dies mit dem Test env tun. Sie sparen SSH + Komprimierungszeit, und Sie können eine bestimmte Revision auschecken, die Sie testen möchten.

+0

Eigentlich benutze ich, um 2 Server zu arbeiten, einen der Live-/Produktionsbereich und den anderen die Sandbox, aber eigentlich habe ich nur einen Server. In der Sandbox habe ich eine Kopie der Repos und aktualisiere sie regelmäßig. Raten Sie, ich werde einen Sanbox-Ordner starten von dort, danke. –

2

Ich glaube nicht, dass unsere Methode als Best Practice bezeichnet werden kann, aber sie hat uns gut gedient.

Wir haben mehrere große Datenbanken für unsere Anwendung (20GB +), so dass lokale Kopien auf jedem Entwickler-Computer nie wirklich eine Option war, und obwohl wir nicht gegen die Live-Datenbank entwickeln, müssen wir tun Entwicklung gegen eine Datenbank, die so real wie möglich ist.

Als Konsequenz verwenden wir auch einen zentralen Webserver und halten einen Entwicklungszweig unseres Subversion-Trunks darauf. Im Allgemeinen arbeiten wir nicht gleichzeitig an demselben Teil des Systems, aber wenn wir das tun müssen oder jemand viele wesentliche Änderungen vornimmt, verzweigen wir den Stamm und erstellen einen neuen vhost auf dem Dev-Server.

Wir haben auch eine Überprüfung des Codes auf den Produktionsservern, also machen wir nach dem Testen einfach ein svn-Update auf den Produktionsservern. Wir haben ein Skript implementiert, das den Befehl update auf allen Servern mit ssh ausführt. Dies ist äußerst praktisch, da unsere Codebasis groß ist und viel Zeit zum Hochladen benötigt. Subversion kopiert nur die Dateien, die tatsächlich geändert wurden, also ist es viel schneller.

Das hat wirklich gut für uns funktioniert, und das einzige, worauf zu achten ist, Änderungen direkt auf den Produktionsservern vorzunehmen (was natürlich von Anfang an ein No-No ist), da es beim Update zu Konflikten kommen kann.

+0

Checkout des Codes auf Produktion? Ärgern sich die .svn-Ordner nicht? Export scheint hier die bessere Option zu sein: http://stackoverflow.com/questions/175056/svn-checkout-or-export-for-production-environment – barfoon

+0

Mit dem Export würden wir den Vorteil verlieren, nur die geänderten Dateien zu kopieren, das würde die Bereitstellung viel langsamer machen. Ich glaube auch, dass der Update-Vorgang atomar ist, während der Export nicht ist, aber ich könnte falsch liegen. –

+0

Und unsere Verzeichnisstruktur ist so, dass nur default.php und einige statische Inhalte im Web-Root sind, und als zusätzliche Sicherheit blockieren wir den Zugriff auf .svn-Ordner mit Apache. –

0

Capistrano ist großartig. Die Standardrezepte Die Dokumentation ist fleckig, aber die Mailingliste ist aktiv und die Einrichtung ist ziemlich einfach. Laufen Sie Schienen? Es hat einige nette eingebaute Sachen für Rails Apps, wird aber auch ziemlich häufig mit anderen Arten von Webapps verwendet.

Es gibt auch Webistrano, die auf Capistrano basiert, aber ein Web-Front-End hat. Habe es nicht selbst benutzt. Ein anderes Bereitstellungssystem, das zumindest unter den Rails-Benutzern an Fahrt zu gewinnen scheint, ist Vlad the Deployer.

+0

Ich bin nicht in Rails traurig bin ich mehr 101 Ruby Guy, ich mehr in Python, aber ich konnte etwas wie Capistrano für Python nicht finden, so denke ich ist Zeit, mehr zu lernen Ruby oder Gabel LOL Wie auch immer die Capistrano App scheint zu sein Eine gute Option zu gehen, lesen Sie mehr über und versuchen Sie es bald. Danke. –