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’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.