WordPress in eine virtuelle Maschine umziehen

Bei größeren Umbauarbeiten in den Blogs habe ich mir immer ein Testsystem in einer VM (Virtuelle Maschine)  aufgebaut und danach Links liegen gelassen. Nun ist mir zum ersten Mal eine WordPress-Datenbank inkonsistent geworden. Somit waren auch eine Menge Backups vermurkst. Also habe ich mir über das Wochenende eine Testumgebung geschaffen, mit dem klaren Ziel stets mit wenigen Handgriffen der Live-Version auf Schritt und Tritt folgen zu können. Mittel der Wahl ist ein LAMP-Server unter Ubuntu (Kubuntu) in einer VirtualBox-Maschine.

An welchen Leserkreis wende ich mich? Dieser Artikel braucht etwas Wissen im Umgang mit Unix-Systemen. Es sind jedoch immer Links angegeben unter denen Ihr nachlesen könnt. Wenn Ihr dennoch strandet und mit einem Befehl nicht weiterkommt hinterlasst mir doch bitte einen Kommentar, dann ergänze ich es gerne. Ganz wichtig: Schießt Euch nicht in Eure Füße, lokale Linux-User-Groups sind eine prima Hilfe. Ich übernehme keinerlei Garantie für die Angaben und es gilt der rechtliche Hinweis.

Virtuelle Maschine aufbauen

Meine Entscheidung für die LAMP-Plattform fiel auf Kubuntu in der Desktop-Variante. Ich habe mich für selbst aufsetzen und gegen eine fertige VM entschieden, nachdem ich mir diverse fertige Maschinen angeschaut hatte. Eine Desktop-Variante aus dem einfachen Grund, damit ich auf der lokalen Maschine mit dem Browser testen kann und das Test-WordPress nicht im Netzwerk freigegeben muss. Wie eine VM aufgesetzt wird erfahrt Ihr hier http://wiki.ubuntuusers.de/VirtualBox. Es genügen 1 GB RAM und 10 GB (variable) Festplatte. Es ergibt auch Sinn nach der Installation von Kubuntu für das Testsystem nicht benötigte Dienste und Software zu deinstallieren.

LAMP-Server installieren

Benötigt wird Apache, MySQL und wenn man mag zur MySQL-Adminstration phpMyAdmin. Die Installation und eventuelle Konfiguration erläutert wiki.ubuntuusers.de: Apache2, MySQL und phpMyAdmin.

sudo apt-get install apache2 php5 libapache2-mod-php5
sudo apt-get install mysql-server php5-mysql
sudo apt-get install phpmyadmin

WordPress umziehen

Sämtliche Dateien können von der Webpräsenz z.B. per rsync oder andere Backup-Mechanismen auf die virtuelle Maschine transferiert werden. Um die Datei vom Host auf die VM zu kopieren muss ein Verzeichnis auf dem Host freigegeben werden. Dabei kann der gesamte Dateibaum in das Verzeichnis /var/www/ umgezogen werden. Wo die Webseiten liegen und welcher Benutzer darauf Zugriff hat findet sich im Artikel über Apache. Ich verwende hier der Einheitlichkeit halber /var/www/. Falls die Rechte durch das Kopieren verloren gegangen sind, hilft:

find /var/www/ -type d -exec chmod 755 {} \;
find /var/www/ -type f -exec chmod 644 {} \;

Die wp-config.php darf auf dem Testsystem eigentlich für alle lesbar sein. Falls nicht, der Apache-Deamon arbeitet mit der Gruppe www-data.

chgrp www-data wp-config.php
chmod 0640 wp-config.php

In der wp-config.php müssen ggf. Datenbank-Name, -User, -Passwort und -Host angepasst werden. Erstere drei Werte werden gleich völlig frei vergeben, der Datenbank-Host ist nun ‚localhost‘. Auch ergibt es Sinn den Debug-Mode einzuschalten:

define('DB_HOST', 'localhost');
define('WP_DEBUG', true);
if (WP_DEBUG) {
  define('WP_DEBUG_LOG', true);
  define('WP_DEBUG_DISPLAY', false);
  @ini_set('display_errors',0);
}

Eventuell müssen noch .htaccess und php.ini an das lokale System angepasst werden. Falls das nötig sein sollte, empfiehlt es sich eher Apache so zu konfigurieren, wie es euer Provider vorhält, so wird die Testumgebung dem Live-System ähnlicher.

MySQL einrichten

User, Passwort und Datenbank können mit dem mysql-Clientprogramm (mysql -u root -p) oder per SQL-Box von phpMyAdmin (http://localhost/phpmyadmin/) eingerichtet werden. Etwa so:

CREATE USER 'DBUserName'@'localhost' IDENTIFIED BY 'DBUserPassword';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, FILE, INDEX, ALTER
ON * . * TO 'DBUserName'@'localhost' IDENTIFIED BY 'DBUserPassword'
WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE DATABASE `DBName` ;
GRANT ALL PRIVILEGES ON `DBName` . * TO 'DBUserName'@'localhost';

Dabei sollte DBUserName, DBUserPassword und  DBName dem Original entsprechen. Nun kann ein Backup der Original-Wordpress-Datenbank in die Datenbank der virtuellen Maschine restored werden (Anleitung in den Links).

Was noch fehlt ist die Anpassung der URL. Aus http://meineespressomaschine.de/ muss http://localhost/ werden, dazu bemühen wir wieder MySQL:

UPDATE wp_options SET option_value = replace(option_value,
 'http://meineespressomaschine.de', 'http://localhost')
 WHERE option_name = 'home' OR option_name = 'siteurl' ;
UPDATE wp_posts SET guid = replace(guid,
 'http://meineespressomaschine.de','http://localhost') ;
UPDATE wp_posts SET post_content = replace(post_content,
 'http://meineespressomaschine.de', 'http://localhost') ;

Fertig. Browser in der VM öffnen, http://localhost eingeben, gespannt warten und Operation geglückt. So hoffe ich jedenfalls.

Debug-Mode

Auf dem Test-System sollte wie oben angegeben in der wp-config.php der Debug-Mode aktiviert sein. Dazu muss der Apache auch die debug.log-Datei schreiben dürfen.

touch wp-content/debug.log
chgrp www-data wp-content/debug.log
chmod a+w wp-content/debug.log

Während Ihr testet in eine Konsole folgende Befehle zum Leeren und Beobachten des Debug-Logs eingeben.

echo "" >/var/www/wp-content/debug.log
tail -f /var/www/wp-content/debug.log

Ich hoffe diese Anleitung fast das Prozedere gut zusammen. Zusammen mit Backup-, Rsync- und SQL-Skripten kann so ein Testsystem auf Knopfdruck betankt werden. Wie gesagt, wenn Ihr irgendwo hängen bleibt oder einen weiten Ratschlag habt hinterlasst einen Kommentar. Ich melde mich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Dein Kommentar wird manuell freigeschaltet. Ich bitte um Geduld, das kann manchmal etwas dauern.