Martin Hein: Abgleich zwischen Live- und Testumgebung

Hallo Forum,

ich arbeite gerade an einem sehr umfangreichen Web-Projekt.
Dazu gubt es eine Entwicklungsumgebung in mienm Büro und
natürlich einen Liveserver. Wenn ich ein Update auf dem
Liveserver mache (also neue und überarbeitete Daten übertragen
will,) mache ich das seit jeher 'zu Fuss'. Lösche den
kompletten Liveserver (der zur Zeit auch noch ein
Previewserver ist) und übertrage alles per FTP von meiner
Entwicklungsumgebung auf den Liveserver. Das ist einigermassen
aufwendig.

Wie macht Ihr den Abgleich ? Hat jemand eine Empfehlung für
eine best. Software, mit der sich dieser Abgleich komfortabel
und sicher durchführen lässt ?

danke für Tipps und

beste gruesse,
martin hein

  1. Wie macht Ihr den Abgleich ?

    Es gibt da wohl mehrere Aspekte:
    1.) Die Änderungen sollen möglichst inkrementell im Live-System nachgetragen werden
    2.) Die Änderungen sollten möglichst zurückgenommen werden, gerne auch mehrfach, Versionierung sollte also unterstützt werden
    3.) Es soll schnell und komfortabel gehen

    Also, was tun? Mit FTP "zu Fuss" einen neuen "Produktivordner" anlegen, den ganzen Krempel kopieren und dann einen Schalter umstellen. Trivial, oder? (Eigentlich eine logische Folge aus 1. ;)

    1. Wie macht Ihr den Abgleich ?

      Es gibt da wohl mehrere Aspekte:
      1.) Die Änderungen sollen möglichst inkrementell im Live-System nachgetragen werden
      2.) Die Änderungen sollten möglichst zurückgenommen werden, gerne auch mehrfach, Versionierung sollte also unterstützt werden
      3.) Es soll schnell und komfortabel gehen

      Also, was tun? Mit FTP "zu Fuss" einen neuen "Produktivordner" anlegen, den ganzen Krempel kopieren und dann einen Schalter umstellen. Trivial, oder? (Eigentlich eine logische Folge aus 1. ;)

      Das geht bei einem statischen Auftritt, aber selbst viele Privatleute geben sich damit nicht mehr zufrieden!

      Also, zu "trivial": ja, aber nicht für Laien.

      Schritt 1:
      Abgleich des statischen Teils (Filesystem, also ohne DB-Daten).
      Sofern Daten sich im Filesystem sich ändern (Logs, automatisch erzeugt Dateien, wie Bilder, PDFs, ...), muß das System in beide Richtungen synchronisiert werden.
      (Achtung, nicht blind anwenden. Es kommt auf den Anwendungsfall an, was die Synchronisationsreihenfolge angeht.)

      Dein Laptop/Bürorechner: A
      Server: B

      /etc/hosts:
      a1.b1.c1.d1   A
      a2.b2.c2.d2   B

      synchronisation neuer Daten zum lok. Rechner

      rsync -avP B/pfad1 A/pfad2

      und zurück

      rsync -avP A/pfad2 B/pfad1

      Datenbanken-Backup:

      in File sichern
      mysqldump -u<username> -p<password> <datenbankname>|gzip -c|cat > datei.sql.gz

      Backup aus File rücksichern:
      gunzip -c datei.sql.gz|mysql -u<username> -p<password> <datenbankname>

      Wenn beide Rechner zum Prodktivsystem gehören (, wobei der Bürorechner auch offline gehen kann), mußt Du über Replikation nachdenken. Aber das sprengt hier echt den Rahmen bzw. habe ich - ehrlich gesagt - jetzt keine Lust, daraus einen Roman zu machen.
      :-)

      Gruß
      Reiner

      1. Was ich vergessen habe:

        wenn der "rsync" über ssh geht, muß man per public-key-Verfahren an den Server anmelden können, falls Du den ganzen Krempel automatisieren willst. Aber auch das sprengt den Rahmen. Vielleicht findest Du irgendein Howto. Bzw. sag mal, ob Du sowas ähnliches vor hast.

        Gruß
        Reiner

        1. Hallo,

          ertmal vielen Dank für eure Ansätze.

          Im Grunde schliesse ich daraus, dass meine Art und Weise,
          das ganze "zu Fuss" zu machen, schon die sicherste Variante
          ist und weiterhin so gemacht werden sollte.

          vielen gruesse,
          martin

      2. Das geht bei einem statischen Auftritt, aber selbst viele Privatleute geben sich damit nicht mehr zufrieden!

        Das vorgeschlagene Verfahren geht auch, wenn bspw. Perl oder PHP genutzt wird. (".NET"-Produkte haben ihre eigene Update-Logik).

        (Achtung, nicht blind anwenden. Es kommt auf den Anwendungsfall an, was die Synchronisationsreihenfolge angeht.)

        Richtig, mit Synchronisationen wäre ich da höllisch vorsichtig.

        Datenbanken-Backup:

        Die Datenbasis würde ich gerne als von der Webserverlogik getrennt betrachten, d.h. das Updaten der Webserverlogik sollte eigentlich nichts mit der (relationalen) Datenhaltung zu tun haben.

        Wenn beide Rechner zum Prodktivsystem gehören (, wobei der Bürorechner auch offline gehen kann), mußt Du über Replikation nachdenken. Aber das sprengt hier echt den Rahmen bzw. habe ich - ehrlich gesagt - jetzt keine Lust, daraus einen Roman zu machen.

        Auch mit einer wie auch immer gearteten Replikation "Test-" (oder gar "Entwicklungs-") und "Produkivsystem" wäre ich höllisch vorsichtig.