Einen Serendipity Blog auf einen Root Server umziehen

Geschrieben von Eric Scheibler am 27.12.2011

Als ich anfing, mir eine Webseite und den dazugehörigen Blog einzurichten, griff ich auf Grund der Unkomplizierten Konfiguration auf ein Komplettpaket bestehend aus einer Domain, Webspace und E-Mail Adresse zurück. Dadurch entfiel die, für einen Anfänger auf diesem Gebiet nicht ganz triviale Einrichtung von Webserver und Domain und ich konnte mich vollständig auf die Erstellung der Webseite konzentrieren. In letzter Zeit fehlte mir allerdings immer häufiger der Root Zugang und damit verbunden auch der Vollzugriff auf die Konfiguration des Webservers. Nach einigen Problemen mit meinem Blog entschied ich mich daher schließlich, meine Seite auf einen V - Server umzuziehen. Bei dieser Gelegenheit wollte ich die zugehörige Domain gleich noch zu einem Domainregistrar transferieren . Dies hat den Vorteil, dass beispielsweise eine weitere Änderung der IP des Webservers von mir direkt vorgenommen werden kann.

Im Folgenden beschreibe ich ausführlich den Umzug eines Serendipity Blogs. Der Umzug der Domain kann hier nachgelesen werden.

1. Den neu angemieteten Server konfigurieren: MySQL installieren

Für die Speicherung der Einträge benötigt die Blogsoftware MySQL, welches zuerst eingerichtet wird. Der Server läuft mit Debian Squeeze. Via SSH öffnet man zunächst eine Shell. Sollte der MySQL Server noch nicht installiert sein, so holt man dies mit dem folgenden Befehl nach:

# apt-get install mysql-server

Während der Installation wählt man ein geeignetes Passwort für den root Zugang des MySQL Servers.

Anschließend als root in den MySQL Server einloggen:

mysql -u root -pROOTPASSWORT

Hat die Anmeldung geklappt, befindet man sich in der Shell des MySQL Servers. Nun wird für den Blog eine neue Datenbank angelegt. Bei mir heißt die einfach mal “blogdatenbank”:

create database blogdatenbank;

Als nächstes braucht man einen Benutzer für die gerade erstellte Datenbank, bei mir ist dies “john”:

grant CREATE,INSERT,DELETE,UPDATE,SELECT on blogdatenbank.* to john@localhost;

Damit John später z.B. für Backupzwecke die Datenbank des Blogs auch exportieren kann, muss man ihm noch weitere Rechte zugestehen, insbesondere “LOCK TABLES” ist dabei von Bedeutung. Diese Rechteerweiterung bezieht sich allerdings nicht nur auf die eigene sondern auf alle gespeicherten Datenbanken des SQL Servers denn “LOCK TABLES” kann nicht nur für eine Datenbank gesetzt werden. Somit könnte John, so er bösartig ist, zumindest den laufenden Betrieb gehörig aufhalten. Ob man die Exportfunktion also braucht und damit die Sicherheitseinbußen hinnimmt, muss jeder selbst entscheiden, der Blog funktioniert auch so.

grant SHOW DATABASES,LOCK TABLES,RELOAD  on *.* to john@localhost;

John braucht noch ein Passwort:

set password for john@localhost = password('JOHNS_PASSWORT');

Schließlich führt man einen Reload durch und passt die Rechte des Servers an:

flush privileges;

Nun kann die Shell des MySQL Servers beendet werden.

Insbesondere den Datenbanknamen, Benutzer und Passwort sollte man sich merken, da diese für den nächsten Schritt gebraucht werden. Außerdem bringt man am Besten schonmal in Erfahrung, in welchem Ordner die Webseite zukünftig abgelegt werden soll, meist ist es unter Debian /var/www/.

Hier kommen noch ein paar nützliche Befehle für die MySQL Shell:

  • Zeige alle Datenbanken: `show databases;
  • Wechsle zu einer Datenbank: use [db name];
  • Alle Tabellen der aktuellen DB anzeigen: show tables;
  • Eine DB löschen: drop database [db name];

Sollte das noch nicht reichen, so findet man auf dieser Seite noch eine ausführliche Liste von MySQL Befehlen.

2. Blog inklusive Datenbank vom alten Webspace ohne root Zugang sichern

Zuerst legt man einen Dump der Serendipity Blogdatenbank an. Dazu loggt man sich in das vom Anbieter bereitgestellte Webinterface der Datenbanksoftware ein, in meinem Fall war dies PHPMyAdmin. Anschließend wählt man die richtige Datenbank aus der Combobox aus. Sollte es mehere Datenbanken zur Auswahl geben so wählt man jene, deren Tabellennamen mit “Serendipity” beginnen. Über den Menüeintrag “Exportieren” gelangt man in den Exportdialog. Dort sollte man darauf achten, dass alle Tabellen ausgewählt wurden, sollten mindestens 25 sein. Alle anderen Einstellungen können so übernommen werden. Mit einem Klick auf “OK” öffnet sich der Speicherdialog des Browsers und man kann sich den Dump der Datenbank herunterladen.

Um nun ebenfalls die Webseite zu sichern, verbindet man sich via FTP mit dem Server des Anbieters und den gesamten HTML Ordner zu downloaden. Dies dauerte bei mir, da eine serverseitige Komprimierung nicht möglich war, auf Grund der vielen kleinen Dateien schon einige Minuten.

Damit es bei der späteren Neuinstallation des Blogs auf dem V - Server keine Schwierigkeiten gibt und der Blog reibungslos weiterlaufen kann muss man noch ein paar Änderungen an den Dateien vornehmen:

  1. Im .sql File, welches die gesicherte Blogdatenbank enthält, ist u.A. der absolute Pfad zum Blog hinterlegt. Da dieser in den seltensten Fällen mit dem neuen Speicherort auf dem V - Server übereinstimmt öffnet man die .sql Datei in einem Texteditor und ersetzt den alten Pfad durch den Neuen. Die richtige Stelle in dem Dump findet man am schnellsten, wenn man zuerst nach “serendipityPath” sucht, sich dann den Pfad kopiert und anschließend mittels “Suchen und ersetzen” den alten Pfad durch den neuen austauscht (siehe oben, meist /var/www).
  2. Die Datei serendipity_config_local.inc.php enthält die Parameter für den Datenbankzugriff. Da auch diese Einträge oft nicht mit den alten übereinstimmen, muss die Datei ebenfalls in einem Texteditor geöffnet und an die neuen Gegebenheiten angepasst werden. Besonders wichtig ist hierbei der Datenbankname (dbName) sowie Benutzername (user) und Passwort (pass) des Datenbanknutzers (ebenfalls siehe oben).
  3. Des weiteren sollte die Datei .htaccess auf ihre Richtigkeit hin überprüft werden. Zumeist dürfte aber keine Änderung notwendig sein.

Anschließend packt man das .sql File zusammen mit der restlichen Webseite für die weitere Nutzung in ein Archiv.

3. Einrichtung des Blogs auf dem neuen V - Server

Das Archiv wird nun via SFTP auf den V - Server hochgeladen. Alles weitere findet wieder auf der SSH Shell des V - Servers statt. Man entpackt das hochgeladene Archiv und importiert als Erstes die Tabellen aus dem gesicherten und modifizierten .sql File in die unter 1. erstellte Blogdatenbank:

mysql -u john -pJOHNS_PASSWORT blogdatenbank < path/to/the/database_file.sql

Danach kopiert man den entpackten Ordner mit der Webseite in den dafür vorgesehenen Ordner des Webservers, bei mir also nach /var/www und passt ggf. die Dateirechte an:

chmod -R 755 /var/www/

Als Webserver kommt bei mir LightTPD zum Einsatz. Dieser war auf dem V - Server bereits installiert, daher werde ich im Folgenden nicht weiter auf die LightTPD Einrichtung eingehen. Hier habe ich die dafür nötigen Schritte bereis erläutert. Die einzige Neuerung ist, dass der V - Server unter seiner festen IP mehrere Domains verwaltet. Daher muss man LightTPD noch mitteilen, dass auf Anfragen mit meiner Domain auch die Webseite aus dem richtigen Ordner ausgeliefert wird. Jede zu verwwaltende Domain bekommt eine eigene Konfigurationsdatei. Der Übersichtlichkeit halber erstellt man für diese Dateien einen Unterordner:

# mkdir /etc/lighttpd/domains

Dort hinein erstellt man die Config für die eigene Domain:

nano /etc/lighttpd/domains/YOUR_DOMAIN.conf
# rules for domain YOUR_DOMAIN
$HTTP["host"] =~ "YOUR-DOMAIN.de$" {
# Die URL "www.YOUR-DOMAIN.de" verweist auf das HTML Verzeichnis des Webservers (z.B. /var/www)
$HTTP["host"] =~ "^www.YOUR-DOMAIN.de$" {
server.document-root = "/var/www"
} else $HTTP["host"] =~ "^SUBDOMAIN.YOUR-DOMAIN.de$" {
# beispielhaft wird hier noch eine Subdomain definiert
server.document-root = "/var/www/ANDERES_VERZEICHNIS"
} else $HTTP["host"] =~ "(^|.)YOUR-DOMAIN.de$" {
# Alle Anfragen, die weder der Adresse "SUBDOMAIN.YOUR-DOMAIN.de" noch "www.YOUR-DOMAIN.de" entsprechen, werden nach "www.YOUR-DOMAIN.de" umgeleitet
url.redirect = ( "^/(.*)" => "http://www.YOUR-DOMAIN.de/$1" )
}
}

Ein weiteres Tutorial zur Einrichtung von Virtual Hosts unter LightTPD gibts hier.

Im Hauptkonfigurationsfile von LightTPD, zu finden unter /etc/lighttpd/lighttpd.conf, müssen noch die folgenden Änderungen durchgeführt werden:

  1. Das Modul “mod_redirect” muss geladen werden - Kommentarzeichen, wenn vorhanden, entfernen.
  2. Die Domain Configs im Ordner “domains” müssen eingebunden werden, einfach die folgende Zeile ganz unten anhängen:
include_shell "find /etc/lighttpd/domains -maxdepth 1 -name '*.conf' -exec cat {} ;"

Schließlich verknüpft man mit der Installation des Pakets “php5-mysql” noch die installierte MySQL Version mit LightTPD:

# apt-get install php5-mysql

und startet den Webserver neu:

# /etc/init.d/lighttpd restart

Hat man alles korrekt angepasst, sollte das Blog nun wieder im Originalzustand inklusive aller Einstellungen und Artikel angezeigt werden. Sollte man zukünftig mal ein Backup der Blogdatenbank anlegen wollen, so kann man dies mit diesem Befehl tun:

mysqldump -u john -pYOUR_PASSWORD blogdatenbank > filename.sql