Zum Hauptinhalt springen

Migrieren einer Webseite und Datenbank auf einen neuen Server

Dieser Artikel beschreibt, wie Sie eine Webseite mit möglichst kurzem Unterbruch von einem auf einen anderen Server migrieren können. Bitte ersetzen Sie IHREDOMAIN mit der Domain / dem Verzeichnis, welche(s) Sie migrieren möchten. Diese Anleitung setzt voraus, dass die Virtual-Host-Konfiguration auf dem Ziel-System bereits existiert.

Vorbereitung

Um sicherzustellen, dass die Migration möglichst schnell durchgeführt werden kann, empfehlen wir die folgenden Konfigurationen vorzubereiten:

.htaccess

Falls im Verzeichnis der zu migrierenden Domain bereits eine .htaccess Datei existiert, empfehlen wir eine Kopie anzulegen.

Quellsystem

cp /home/www-data/IHREDOMAIN/.htaccess /home/www-data/IHREDOMAIN/.htaccess_backup

DNS

Wir empfehlen, bereits zwei Tage im Voraus die TTL ("Time To Live", Gültigkeitsdauer des Eintrags) Ihrer DNS-Einträge auf einen tiefen Wert, bspw. 300 Sekunden, zu setzen. Dies beschleunigt die Verteilung der später anzupassenden DNS-Einträge.

Wartungsseite

Während der Datenmigration soll sichergestellt sein, dass keine Daten verändert werden. Wir empfehlen für die Dauer der Datenmigration eine Wartungsseite auszuliefern.

Sollte die von Ihnen eingesetzte Software keine Wartungsfunktion unterstützen, erstellen Sie im "DocumentRoot" der zu migrierenden Domain bitte eine Datei mit dem Namen maintenance.html.

Beispielhaft kann folgender Inhalt hinterlegt werden:

(DE) Wir verbessern derzeit das Benutzererlebnis unserer Webseite und freuen uns, Sie in Kürze wieder begruessen zu dürfen.
(EN) We are currently improving the user experience of our website and look forward to welcoming you again soon.

HTML Version

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Under Maintenance</title>
<style type="text/css">
body {
text-align: center;
padding: 150px;
}

h1 {
font-size: 50px;
}

body {
font:
20px Helvetica,
sans-serif;
color: #333;
}

main {
display: block;
text-align: left;
width: 650px;
margin: 0 auto;
}

a {
color: #dc8100;
text-decoration: none;
}

a:hover {
color: #333;
text-decoration: none;
}
</style>
</head>

<body>
<main>
<h1>We&rsquo;re back soon</h1>
<article>
<p>
(DE) Wir verbessern derzeit das Benutzererlebnis unserer Webseite und
freuen uns, Sie in Kürze wieder begruessen zu dürfen.
</p>

<p></p>
<p>
(EN) We are currently improving the user experience of our website and
look forward to welcoming you again soon.
</p>
</article>
</main>
</body>
</html>

Um die Wartungsseite zu einem späteren Zeitpunkt zu aktivieren, bereiten Sie die dazu nötige .htaccess Datei mit mit folgendem Inhalt vor:

Quellsystem

/home/www-data/.htaccess_maintenance :

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteRule .* /maintenance.html [R=302,L]

Domainweiterleitung zum neuen Server

Trotz sorgfältiger Vorbereitung und einem Verringern der TTL der DNS-Einträge einer Domain, kann es in Einzelfällen dazu kommen, dass die Aktualisierung der DNS Einträge für Endbenutzer einige Zeit in Anspruch nimmt.

Um Aufrufe des Quellsystems zu vermeiden, bereiten wir eine weitere .htaccess Datei vor, die das Quellsystem als Reverse-Proxy fungieren lässt. So ist sichergestellt, dass alle Aufrufe auf dem Zielsystem verarbeitet werden, während die DNS-Änderungen im Internet propagiert werden.

Als Ziel der Reverse-Proxy-Konfiguration wird die Server-Subdomain des Zielsystems verwendet.

Erstellen Sie dazu bitte eine .htaccess Datei mit dem Namen /home/www-data/.htaccess_proxy und folgendem Inhalt:

Quellsystem

RewriteEngine on
ProxyPreserveHost on
RewriteBase /
RewriteRule ^(.*)$ http(s)://YOURDOMAIN.NEWSERVERNAME.nine.ch/$1 [P]
ProxyPassReverse / http(s)://YOURDOMAIN.NEWSERVERNAME.nine.ch/

Migration

Bevor Sie mit der Migration beginnen, aktivieren Sie zunächst die vorbereitete Wartungsseite. So wird sichergestellt, dass keine Änderungen am Datenbestand mehr vorgenommen werden können.

Quellsystem

cp /home/www-data/.htaccess_maintenance /home/www-data/IHREDOMAIN/.htaccess
nine-flush-fpm

nine-flush-fpm leert den PHP OpCode-Cache. So wird sichergestellt, dass die geänderte .htaccess unmittelbar eingelesen wird.

Wenn die Wartungsseite wie gewünscht erscheint, können Sie den Datenabgleich zum Zielsystem beginnen:

Hinweis: Wir empfehlen, bei umfrangreicheren Datenbeständen einen ersten Abgleich einige Tage vor der geplanten Migration durchzuführen. Dies verringert die zum Datenabgleich benötigte Zeit drastisch.

Die Option --delete löscht auf dem Zielsystem Daten aus dem Verzeichnis /home/www-data/IHREDOMAIN/, die auf dem Quellsystem nicht (mehr) vorhanden sind. So wird sichergestellt, dass die nach einem vorherigen Datenabgleich auf dem Quellsystem gelöschten Daten auch auf dem Zielsystem entfernt werden.

Quellsystem

rsync -avzH --delete /home/www-data/IHREDOMAIN/ \
ZIELSYSTEM:/home/www-data/IHREDOMAIN

Während des Kopiervorgangs können Sie sich um die Migration der Datenbank kümmern. Wenn ein aktueller Stand der Datenbank benötigt wird, gehen Sie bitte wie folgt vor.

Bitte ersetzen Sie die Platzhalter IHRDATENBANKBENUTZER, DATENBANKNAME, SSHBENUTZER und ZIELSYSTEM mit den entsprechenden Werten.

Quellsystem

mysqldump --opt --quote-names --single-transaction --user=IHRDATENBANKBENUTZER --password DATENBANKNAME | \
ssh SSHBENUTZER@ZIELSYSTEM mysql --user=IHRDATENBANKBENUTZER --password DATENBANKNAME

Die Passwortabfrage erfordert die Eingabe des Passwortes des SSH-Benutzers, mit dem Sie zum Zielsystem verbinden möchten.

Nine erstellt nächtliche Sicherungen Ihrer Datenbanken. Wenn die Sicherung der vorangegangenen Nacht genügt, finden Sie in diesem Artikel die nötigen Informationen.

Nachdem der Datenabgleich sowie der Import der Datenbank abgeschlossen ist, können Sie auf dem Zielsystem die Datei /home/www-data/IHREDOMAIN/.htaccess mit Ihrer gesicherten .htaccess austauschen. Die .htaccess, die zur Aktivierung der Wartungsseite verwendet wurde, wurde durch den Datenabgleich ebenfalls kopiert.

Zielsystem

cp /home/www-data/IHREDOMAIN/.htaccess_backup /home/www-data/IHREDOMAIN/.htaccess

Unter der URL "http(s)://YOURDOMAIN.NEWSERVERNAME.nine.ch/" können Sie Ihre Webseite auf dem Zielsystem aufrufen und testen.

Bitte beachten Sie, dass viele CMS eine Weiterleitung auf die verwendete Domain durchführen. Eventuell ist es daher erforderlich, das CMS vor der Migration anzupassen oder die hosts Einträge auf Ihrem PC für die Testphase zu ändern. Eine Anleitung zur Anpassung der hosts Datei finden Sie hier.

Nachdem Sie die korrekte Funktionsweise auf dem Zielsystem überprüft haben, können Sie auf dem Quellsystem die vorbereitete Proxykonfiguration aktivieren.

Quellsystem

cp /home/www-data/.htaccess_proxy /home/www-data/IHREDOMAIN/.htaccess

Alle Zugriffe werden nun vom Zielsystem verarbeitet.

Zum Abschluss der Arbeiten ist die Anpassung der DNS-Einträge notwendig. Passen Sie alle DNS A-Einträge, die auf das Quellsystem verweisen, an, so dass diese auf das Zielsystem verweisen. Bitte beachten Sie, dass diese Anpassung in Abhängigkeit der gewählten TTL der Einträge sowie der geographischen Lage der Zugriffe mit bis zu 24 Stunden Verzögerung in Kraft treten kann.

Vergewissern Sie sich einige Tage nach der DNS Anpassung, dass diese erfolgreich durchgeführt wurde. Die einfachste Art, dies zu überprüfen, ist die .htaccess Datei zu deaktivieren, die die Reverse-Proxy Konfiguration bereitstellt:

Quellsystem

mv /home/www-data/IHREDOMAIN/.htaccess /home/www-data/IHREDOMAIN/.htaccess_disabled

Wurde die DNS-Anpassung korrekt vorgenommen, sollten alle Zugriffe zur Webseite weiterhin fehlerfrei funktioneren.