Was sind die besten Vorgehensweisen, um Site-Updates von der Entwicklungs- / Testumgebung in die Produktion zu verschieben?

8

Im Moment habe ich einen Entwicklungsserver, auf dem eine grundlegende LAMP-Konfiguration läuft. Der Produktionsserver ist ein slicehost . Aber ich frage mich, was ist der beste Weg, um die Instanzen des code / db zu den Stufen dev & gt; Bühne & gt; Produktion. Hat es damit zu tun, wie Sie die Stufen erstellen?

Wie machst du es, ohne die Seite herunterzubringen? Ist es sogar möglich, wenn Sie keinen Lastenausgleich durchführen?

Ich weiß, das ist etwas allgemein, ich möchte nur in die richtige Richtung zeigen.

    
gregh 23.09.2008, 19:06
quelle

7 Antworten

2

Ich benutze .htaccess, um einen "Wartungsmodus" jiffy zu erstellen, in dem nur meine IP die Hauptwebsite während der Aktualisierung sehen kann. Alle anderen sehen eine kurze Nachricht, damit sie wissen, dass alles in ein paar Ticks wieder online sein soll.

Dann ich:

  1. Nehmen Sie DB-Bearbeitungen vor
  2. SVN Export / Upload der Dateien
  3. Führen Sie automatisierte Tests durch und geben Sie so viel wie möglich einen schnellen Überblick, um sicherzustellen, dass nichts schief geht
  4. Stellen Sie den .htaccess
  5. zurück

Es ist eine Selbstverständlichkeit, aber Sie sollten die Dinge so oft wie möglich lokal testen, bevor Sie auf einen Live-Server wechseln. Einige Leute verwenden zwei Live-Server (wie eine kryptische Namens-Subdomäne auf dem Produktionsserver), um als Testbereich für Live-Updates zu dienen. Dies kann die tatsächliche Downtime des Hauptstandorts reduzieren.

Ich sollte betonen, dass es wichtig ist, Updates nicht auf einen Live-Server zu übertragen, ohne vorher herunterzufahren (besonders wenn Sie Binaries im ASPNET verwenden), weil Benutzer, die versuchen, die Site während der Aktualisierung zu verwenden, schreckliche Fehlermeldungen erhalten könnte Dateien gesperrt werden.

    
Oli 23.09.2008 19:12
quelle
1

Ich würde in eine Art automatisierte "Build" -Stilumgebung für die Lampe schauen, in der Sie Skripte haben, die Ihre Veröffentlichungen für jede Umgebung verpacken und vorbereiten.

Ich erkenne, dass es für PHP kein echtes Gebäude gibt, aber Sie könnten eine Automatisierung einrichten, um Konfigurations- oder Setup-Probleme zu ändern und alles in einem Ordner zu speichern, der sofort implementiert werden kann.

Ich glaube nicht, dass Sie Ausfallzeiten ohne Load-Balancing / Web-Farm-Stil-Umgebungen vollständig eliminieren können. Der einfachste Weg, dies in meinem Buch zu reduzieren, besteht jedoch darin, einen konsistenten Code-Vorbereitungsprozess einzurichten und den Prozess mehrere Male zu testen. Automatisierung würde dort helfen.

Was das eigentliche Kopieren der Dateien betrifft, weiß ich nicht viel mehr, als etwas wie FTP oder was auch immer zu verwenden. Vielleicht eine Lademeldung aufhängen. Auch dies könnte alles aufgeschrieben werden.

Denken Sie daran, da PHP nicht erstellt wurde, könnte es gut für Sie sein, die Unterschiede zwischen dem, was jetzt ist und was Sie geändert haben, zu verfolgen und nur diese Dateien zu verschieben. Manchmal kann dies jedoch unnötige Komplexität hinzufügen.

    
JoshReedSchramm 23.09.2008 19:11
quelle
1

Ich weiß nicht, ob das eine gute Idee ist, aber was ist mit automatisierten Checkouts von einem Quellcodeverwaltungssystem? Vielleicht mit ein paar Entwicklungszweigen - Tests für den neuesten Stand, Entwicklung für Wartung / kleine Verbesserungen und Produktion für den Produktionscode. Wenn die Entwicklung stabil ist, führen Sie sie in den Produktionszweig ein und lassen Sie sie regelmäßig automatisch von der Produktionsmaschine auschecken.

    
Thomas Owens 23.09.2008 19:13
quelle
0

Was das Verschieben von Dateien auf alle Webserver anbelangt, finde ich, dass eine gute alte Robocopy den Trick macht. Meine Entwicklungsumgebung ist natürlich identisch. Stellen Sie einfach eine temporäre Seite auf, die den Benutzern sagt, dass die Seite gleich wieder da ist.

    
Alex 23.09.2008 19:14
quelle
0

Momentan verwenden wir eine Reihe von Shell-Skripten mit Konfigurationsdateien, die unsere geänderten Dateien tarieren, sie auf jeden Server im Cluster scpappen und sie dann entpacken, sobald sie da sind. Diese Methode hat natürlich ihre Nachteile und wir erwägen eine Methode, bei der jedes Servermitglied einen svn-Client installiert hat. Sobald wir ein neues Release markiert haben, wechseln wir die Arbeitskopie auf den Produktionsservern auf dieses neue Tag. Natürlich machen wir heute während unserer Wartungsstunde Freigaben, so dass wir für unsere Benutzer nichts Besonderes machen müssen (sie sehen sowieso eine Wartungsseite).

    
Bob Gettys 23.09.2008 19:17
quelle
0

Ich habe eine Option in meiner Hauptkonfiguration, um den Zugriff auf die Site oder eine Liste von voreingestellten URLs zu ermöglichen, an die ich alle Benutzer umleiten kann (und den API-Verkehr mit einem geeigneten http-Code zu stoppen).

Diese URLs sind Links zu statischen HTML-Dateien, die dem Benutzer erklären, was vor sich geht.

Wenn dies aktiviert ist, gibt es keine Anforderungen an die Datenbanken oder Dateien, da alle Anfragen an die HTML-Datei gesendet werden, bevor dies passieren kann, was mir einen 'klaren' Platz für die Bereitstellung von Updates gibt.

    
Ross 23.09.2008 19:19
quelle
0

Apache ant mit Aufgaben für svn und ftp Fuß die Rechnung für mich. Es gibt sogar Leute, die das db-Zeug mit ANT machen, aber ich möchte das lieber persönlich sehen. Sobald Sie eine saubere und Push-Build für FTP zu allen Ihren Standorten haben, werden Sie erstaunt sein, wie einfach es ist.

    
anopres 23.09.2008 19:24
quelle

Tags und Links