In Teil 1 und 2 haben wir uns damit beschäftigt, wie man Browser und Suchmaschinen den Weg zu einer neuen Ressource weißt, wenn sich deren URL geändert hat. In diesem Teil geht es um den einfachen Umzug auf einen neuen Server.
Im Folgenden geht es ausschließlich um den Umzug eines Webauftritts von einem Server auf einen anderen. Prinzipiell ist das ganze auch bei Shared Hosting möglich, gewisse Dinge wie der Zugriff auf die hosts-Datei sind dabei aber unter Umständen nicht möglich. mod_proxy sollte installiert und aktiviert sein. Der Zugriff auf die DNS-Konfiguration ist Bedingung.
Mit steigenden Zugriffszahlen wachsen auch die Anforderungen an die Hardware. Gerade wenn in Spitzenzeiten die Antwortzeiten in den Keller gehen ist es Zeit, sich Gedanken über einen Serverumzug zu machen. Oder dieser Schritt steht turnusmäßig sowieso an, weil die aktuelle Hardware veraltet ist. Doch wie die Besucher problemlos auf die neue Maschine migrieren, wie verhindern, dass Zugriffe auf die alte und die neue Maschine zeitgleich stattfinden? Schließlich ist das DNS-System zwar robust, aber mitunter nicht sonderlich schnell.
Wir möchten also unseren aktuellen Webauftritt unter www.domain.de, der auf dem Server mit der IP 8.8.4.4 liegt, auf einen neuen Server mit der IP 8.8.8.8 umziehen.
Der erste Schritt ist das ‘Anlegen’ einer Subdomain im lokalen hosts-File am Arbeitsrechner. Diese findet sich auf unixoiden Betriebssystemen in /etc/hosts, unter Windows in C:WINDOWSsystem32driversetchosts und kann mit jedem beliebigen Texteditor bearbeitet werden. Dort fügen wir einen neuen Eintrag hinzu:
8.8.8.8 new.domain.de |
Dieses Vorgehen hat gegenüber einem richtigen DNS-Eintrag den Vorteil, dass new.domain.de nur vom Arbeitsrechner aus erreichbar ist und man so auf gesonderte Sicherungsmaßnahmen am neuen Server verzichten kann, wie sie sonst nötig wären, um eine vorzeitige Indizierung der Inhalte durch Google zu verhindern. Hat man keinen Zugriff auf die hosts-Datei am alten Server muss dieser Eintrag unbedingt über das DNS-System erfolgen und sollte mit entsprechendem Vorlauf (mind. 48 Stunden) gemacht werden!
Auf dem neuen Server richtet man nun new.domain.de ein und transferiert den aktuellen Webauftritt vollständig auf die neue Maschine, kopiert also sowohl Dateien als auch Datenbankinhalte auf den neuen Server und passt, sofern erforderlich, die Konfigurationsdateien an. Anschließend testet man alles auf Herz und Nieren.
Das Logfile zu Hilfe nehmend, um den idealen Transferzeitpunkt zu ermitteln, geht es dann an den eigentlichen Umzug. Zunächst muss verhindert werden, dass der alte Auftritt weiterhin genutzt werden kann. Die .htaccess auf dem alten Server wird daher durch die folgende ersetzt:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !.*storedown.*$ RewriteRule .* /storedown.php [L] |
storedown.php sollte nicht nur kurz darüber informieren, dass hier gerade ein Umzug im Gange ist, sondern auch einen 503-Header senden, damit auch Google Bescheid weiß:
<?php header("HTTP/1.1 503 Service Temporarily Unavailable"); header("Status: 503 Service Temporarily Unavailable"); header("Retry-After: 360"); header("Connection: Close"); ?> <!DOCTYPE HTML> <html lang="en-US"> <head> <title>503 Service Temporarily Unavailable</title> <meta charset="UTF-8"> </head> <body> <h1>Service Temporarily Unavailable</h1> <p>The server is temporarily unable due to maintenance downtime. Please try again later.</p> </body> </html> |
Der Retry-After-Header sollte einen realistischen Wert in Sekunden enthalten, bis wann der Umzug abgeschlossen sein wird.
Ein letzter Sync zwischen altem und neuen Server stellt sicher, dass auf der neuen Maschine auch der letzte Stand verfügbar sein wird. Der neue Server wird jetzt auf die eigentliche Domain www.domain.de konfiguriert und /etc/hosts auf dem alten Server um folgenden Eintrag ergänzt:
8.8.8.8 www.domain.de |
.
Jetzt nur noch die .htaccess auf dem alten Server ersetzen:
RewriteEngine On RewriteRule ^(.*) http://www.domain.de/$1 [P] |
Ohne Zugriff auf die hosts-Datei am alten Server muss mod_proxy angewiesen werden, auf die zuvor eingerichtete Subdomain new.domain.de zuzugreifen:
RewriteEngine On RewriteRule ^(.*) http://new.domain.de/$1 [P] |
Jetzt kann die DNS-Änderung für www.domain.de beantragt werden. Alle Anfragen, die bis dahin noch auf dem alten Server 8.8.4.4 eintreffen, werden mittels mod_proxy und Dank dem Eintrag in der hosts-Datei an den neuen Server weitergereicht – für den Besucher vollkommen transparent.