Migrieren einer Webseite und Datenbank auf einen neuen Server
Dieser Artikel beschreibt, wie du eine Webseite mit möglichst kurzem Unterbruch von einem auf einen anderen Server migrieren kannst.
Bitte ersetze DEINEDOMAIN mit der Domain / dem Verzeichnis, welche(s) du migrieren möchtest.
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/DEINEDOMAIN/.htaccess /home/www-data/DEINEDOMAIN/.htaccess_backup
DNS
Wir empfehlen, bereits zwei Tage im Voraus die TTL ("Time To Live", Gültigkeitsdauer des Eintrags) deiner 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 dir eingesetzte Software keine Wartungsfunktion unterstützen, erstelle 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, dich in Kürze wieder begrüssen 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’re back soon</h1>
<article>
<p>
(DE) Wir verbessern derzeit das Benutzererlebnis unserer Webseite und
freuen uns, dich in Kürze wieder begrüssen 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, bereite die dazu nötige .htaccess Datei 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.
Erstelle 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 du mit der Migration beginnst, aktiviere 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/DEINEDOMAIN/.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, kannst du den Datenabgleich zum Zielsystem beginnen:
Hinweis: Wir empfehlen, bei umfangreicheren 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/DEINEDOMAIN/, 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/DEINEDOMAIN/ \
ZIELSYSTEM:/home/www-data/DEINEDOMAIN
Während des Kopiervorgangs kannst du dich um die Migration der Datenbank kümmern. Wenn ein aktueller Stand der Datenbank benötigt wird, gehe bitte wie folgt vor.
Bitte ersetze die Platzhalter DEINDATENBANKBENUTZER, DATENBANKNAME, SSHBENUTZER und ZIELSYSTEM mit den
entsprechenden Werten.
Quellsystem
mysqldump --opt --quote-names --single-transaction --user=DEINDATENBANKBENUTZER --password DATENBANKNAME | \
ssh SSHBENUTZER@ZIELSYSTEM mysql --user=DEINDATENBANKBENUTZER --password DATENBANKNAME
Die Passwortabfrage erfordert die Eingabe des Passwortes des SSH-Benutzers, mit dem du zum Zielsystem verbinden möchtest.
Nine erstellt nächtliche Sicherungen deiner Datenbanken. Wenn die Sicherung der vorangegangenen Nacht genügt, findest du in diesem Artikel die nötigen Informationen.
Nachdem der Datenabgleich sowie der Import der Datenbank abgeschlossen ist, kannst du auf dem Zielsystem die
Datei /home/www-data/DEINEDOMAIN/.htaccess mit deiner gesicherten .htaccess austauschen. Die .htaccess, die zur Aktivierung
der Wartungsseite verwendet wurde, wurde durch den Datenabgleich ebenfalls kopiert.
Zielsystem
cp /home/www-data/DEINEDOMAIN/.htaccess_backup /home/www-data/DEINEDOMAIN/.htaccess
Unter der URL "http(s)://YOURDOMAIN.NEWSERVERNAME.nine.ch/" kannst du deine Webseite auf dem Zielsystem aufrufen und testen.
Bitte beachte, 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 deinem PC für die Testphase zu ändern. Eine Anleitung
zur Anpassung der hosts Datei findest du unter How to Edit Your Hosts File.
Nachdem du die korrekte Funktionsweise auf dem Zielsystem überprüft hast, kannst du auf dem Quellsystem die vorbereitete Proxykonfiguration aktivieren.
Quellsystem
cp /home/www-data/.htaccess_proxy /home/www-data/DEINEDOMAIN/.htaccess
Alle Zugriffe werden nun vom Zielsystem verarbeitet.
Zum Abschluss der Arbeiten ist die Anpassung der DNS-Einträge notwendig. Passe alle DNS A-Einträge, die auf das Quellsystem verweisen, an, sodass diese auf das Zielsystem verweisen. Bitte beachte, 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.
Vergewissere dich 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/DEINEDOMAIN/.htaccess /home/www-data/DEINEDOMAIN/.htaccess_disabled
Wurde die DNS-Anpassung korrekt vorgenommen, sollten alle Zugriffe zur Webseite weiterhin fehlerfrei funktionieren.