Server wechseln

Kategorie: LiveConfig
Erstellt: 10.09.2020

Folgende Anleitung beschreibt, wie Sie eine komplette LiveConfig-Installation von einem Server auf einen anderen Server umziehen können. Anders als bei einem Serverumzug geht es also nicht darum, dass sich nur der Standort oder die IP-Adressen eines Servers ändern, sondern alle Inhalte werden von einem alten auf einen neuen Server verschoben.

Voraussetzungen/Vorbereitungen

Folgende Voraussetzungen sollten dringend erfüllt werden:

  1. Sie benötigen vollen root-Zugriff per SSH auf den Quell- und auf den Zielserver.

  2. Sie müssen als root-Benutzer Dateien per scp und per rsync vom Quell- auf den Zielserver kopieren können (d.h. SSH-Public-Key-Anmeldung als root auf dem Zielserver muss möglich sein, auf dem Quellserver muss vorübergehend der notwendige SSH Private Key hinterlegt sein).

  3. Sie müssen mit der Administration eines Servers gut vertraut sein. Diese Anleitung ist definitiv keine “copy-und-paste”-Anleitung, sondern erklärt nur die notwendigen Schritte.

  4. Auf dem Zielserver müssen alle Dienste installiert sein, die auch auf dem Quellserver vorhanden sind (also z.B. Apache, Postfix, Dovecot, ProFTPD, MySQL, …). Die Konfiguration dieser Dienste ist dabei völlig egal, weil die Konfigurationsdateien später umgezogen (umkopiert) werden.

    Alle Dienste müssen auf dem Zielserver zudem beendet sein, um Nebenwirkungen zu vermeiden:

    systemctl stop apache2
    systemctl stop proftpd
    systemctl stop postfix
    systemctl stop dovecot
    systemctl stop mysql
    systemctl stop crond
    
  5. Die MySQL-Version muss auf dem Quell- und dem Zielserver identisch sein! Also nicht von MariaDB auf MySQL oder von MySQL 5.7 auf 8.0 wechseln!

  6. Installieren Sie auch liveconfig (bzw. lcclient beim Umzug eines Multi-Server-Systems). Sie brauchen weder einen Lizenzschlüssel noch ein Passwort o.ä. angeben, da das später alles vom Quellserver übernommen wird.

    Beenden Sie dann LiveConfig (oder ggf. lcclient) auf dem Zielserver:

    systemctl stop liveconfig
    

Da während des gesamten Vorgangs keine Daten auf dem Quellserver geändert oder gelöscht werden müssen, können Sie den Umzug auch bequem in aller Ruhe testen und bei Problemen einfach wiederholen.

1. Systemaccounts umziehen/synchronisieren

LiveConfig liebt Datensparsamkeit. Sobald etwa ein FTP-Benutzer erfolgreich angelegt wurde, löscht LiveConfig das (zudem verschlüsselt gespeicherte) Passwort aus seiner Datenbank, da es dieses Passwort ab dann einfach nicht mehr benötigt.

Dieses Verhalten ist ein riesiger Sicherheitsvorteil (Passwörter, die nicht gespeichert sind, können auch nicht gehacked/geleaked werden). Bei einem Umzug ist das aber ein Problem: man kann nicht etwa sagen, dass LiveConfig nach einem Serverwechsel alle Systemaccounts auf dem Zielserver neu anlegen soll.

Zuerst müssen Sie herausfinden, bei welcher User-ID die “normalen” Accounts beginnen. Bei Debian/Ubuntu ist das meistens die 1000. Außerdem müssen Sie die ID des nobody-Benutzers kennen (der braucht nicht umgezogen werden) - bei Debian ist das 65534.

Führen Sie folgenden Befehl auf dem Zielserver aus um sicherzustellen, dass dort noch keine normalen Benutzeraccounts angelegt sind:

awk -F: '($3>=1000) && ($3!=65534)' /etc/passwd

Es sollte idealerweise nichts ausgegeben werden. Falls doch, müssen Sie die betroffenen Accounts eventuell entfernen, falls auf dem Quell-Server Accounts mit der selben User-ID existieren!

Führen Sie dann auf dem Quellserver folgende Befehle aus:

awk -F: '($3>=1000) && ($3!=65534)' /etc/passwd >/root/passwd.add
awk -F: '($3>=1000) && ($3!=65534)' /etc/group >/root/group.add
awk -F: '($3>=1000) && ($3!=65534) {print $1}' /etc/passwd | grep -f - /etc/shadow >/root/shadow.add
awk -F: '($3>=1000) && ($3!=65534) {print $1}' /etc/group | grep -f - /etc/gshadow >/root/gshadow.add

Diese vier Dateien (passwd.add, group.add, shadow.add und gshadow.add) kopieren Sie dann auf den Zielserver und fügen deren Inhalte dort jeweils an die vorhandenen Systemdateien an:

cat passwd.add >>/etc/passwd
cat group.add >>/etc/group
cat shadow.add >>/etc/shadow
cat gshadow.add >>/etc/gshadow

2. Daten umziehen

Kopieren Sie per rsync alle Webspace-Verzeichnisse vom Quell- auf den Zielserver. Verwenden Sie dabei die rsync-Optionen -avRHAX, z.B.:

rsync -avRHAX /var/www root@destination.example.org:/

Die E-Mails befinden sich meistens unter /var/mail:

rsync -avRHAX /var/mail root@destination.example.org:/

Der Umzug von MySQL/MariaDB ist am einfachsten, wenn Sie den Service auf dem Quellserver beenden (systemctl stop mysql) und dann direkt die Datenverzeichnisse kopieren:

rsync -avRHAX /var/lib/mysql root@destination.example.org:/

Sie können auch zu einem späteren Zeitpunkt inzwischen geänderte Dateien nachsynchronisieren. In diesem Fall fügen Sie noch die Option --delete an, um auf dem Quellsystem gelöschte Dateien auf dem Zielserver auch zu löschen.

3. Konfigurationsdateien umziehen

Mit folgendem Befehl kopieren Sie alle relevanten Konfigurationsdateien auf den Zielserver. Die vorhandene (Standard-)Konfiguration wird dabei einfach überschrieben. Machen Sie sich keine Sorgen um geänderte IP-Adressen, die werden später in LiveConfig korrigiert:

rsync -avR --delete /etc/apache2 /etc/nginx /etc/proftpd \
  /etc/awstats /etc/webalizer \
  /etc/ssl/certs/*.crt /etc/ssl/private \
  /etc/postfix /etc/dovecot /etc/opendkim \
  /etc/liveconfig /var/lib/liveconfig \
  /etc/default/opendkim /etc/default/spamassassin \
  root@destination.example.org:/

Passen Sie diese Liste entsprechend an, wenn Sie bestimmte Dienste davon nicht nutzen.

4. IP-Adressen und Konfigurationsdateien aktualisieren

Starten Sie nun LiveConfig auf dem Zielserver und melden sich als admin an. Gehen Sie auf Serververwaltung -> Web. Bearbeiten Sie die Apache-Einstellungen (bzw. NGINX-Einstellungen) und wählen dort die zu verwendenden IP-Adressen aus. Anschließend bearbeiten Sie alle IP-Gruppen und aktivieren dort die in der jeweiligen Gruppe gewünschten IPs. Beim Bearbeiten der IP-Gruppen werden automatisch alle Apache- bzw. NGINX-vHost-Konfigurationsdateien neu geschrieben.

Analog gehen Sie durch die Einstellungen des Mailservers (Postfix, Dovecot) und des FTP-Servers (ProFTPD oder vsftpd) und speichern diese einfach neu ab.

5. Dienste starten

Nun starten Sie der Reihe nach die Dienste auf dem Zielserver:

  1. Apache

    systemctl start apache2
    

    Wenn etwas nicht klappt: Log-Datei /var/log/apache2/error.log prüfen.

  2. ProFTPD bzw. vsftpd starten:

    systemctl start proftpd
    

    Wenn etwas nicht klappt: Log-Datei /var/log/proftpd/proftpd.log bzw. /var/log/vsftpd.log prüfen.

  3. Dovecot starten:

    systemctl start dovecot
    

    Wenn etwas nicht klappt: Log-Datei /var/log/mail.log prüfen.

  4. Postfix starten:

    systemctl start postfix
    

    Wenn etwas nicht klappt: Log-Datei /var/log/mail.log prüfen.

  5. MySQL/MariaDB starten:

    systemctl start mysqld
    

    Wenn etwas nicht klappt: Log-Datei /var/log/mysql/error.log prüfen.

Wenn die Dienste soweit alle funktionieren, sollten Sie den Zielserver komplett neu starten. Somit können Sie prüfen ob beim Serverstart alle Dienste korrekt gestartet werden.