83313 Siegsdorf, Bayern
+49 173 672 0392
uwe@UweSprenger.de

WordPress auf der WD MyCloud Ex2

A post from UweS Blog

Photo by photo-graphe

Unfortunately this page has not yet been translated. If necessary, please try the Google Translator in between.

Wie versprochen habe ich mich jetzt mal darum gekümmert, mein WordPress Blog, also genau das hier, auf der WD MyCloud Ex2 ins laufen zu bringen. Eines vorweg:  Es geht wirklich, aber es ist mit Haken und Ösen verbunden. Doch eins nach dem anderen:  Packt euer Werkzeug aus, und los gehts:

Anmerkung vorab:

Ihr wisst aus zahlreichen Berichten in der Presse oder aus dem Internet, dass die WD MyCloud viele Sicherheitslücken aufwies. Ob diese inzwischen alle geschlossen sind ist mir nicht bekannt. Aber ich rate dringend, die WD MyCloud nur und ausschließlich im Heimnetz hinter einer Firewall (z.B. der Fritzbox) zu betreiben, und nicht aus dem Internet verfügbar zu machen. Die von der MyCloud per Firmware bereitgestellten Versionen von PHP, MySQL etc. sind alle veraltet und weisen ebenfalls sehr viele Sicherheitsprobleme auf. Auch die Erfahrungen die ich bei meinem Backup Versuch gemacht habe, gehen in die gleiche Richtung.

Möchte man unbedingt von außen auf die WD MyCloud zugreifen, dann sollte man ein VPN (zum Beispiel mit der Fritzbox) aufbauen, aber auf keinen Fall die WD MyCloud als Web-Server fürs Public Internet verfügbar machen. Auch nicht über die von WD bereitgestellten Funktionen. Das ist für mich ein NoGo.

Nun gehts los – Rüstet die Werkzeuge

SSH

Die Secure Shell muss über das Dashboard der WD MyCloud aktiviert werden. Der vergebene User (default ist sshd) hat Root-Rechte. Merkt euch User und  Passwort gut.

WinSCP

Mit WinSCP könnt ihr die SSH Verbindung nutzen und Filetransfers zwischen der WD MyCloud und eurem PC durchführen. Das sollte mit den oben vergebenen Usern und Passworten kein Problem darstellen. Testet das bitte gleich aus. Wenn ihr das nicht hin bekommt, dann hört an dieser Stelle auf, die Gefahr ist zu groß, dass ihr eure Box schrottet und die Daten verliert, weil ihr einen Werksreset machen müsst.

phpMyAdmin

Über die App-Installation im MyCloud Dashboard könnt ihr phpMyAdmin  installieren Das Tool benötigt Ihr zur Datenbankadministration.  Merkt euch die bei der Installation vergebenen Passworte gut. Das Passwort hat Superuser Rechte über alle Datenbanken.

WordPress

Die von der Box hergestellte WordPress Umgebung werdet ihr im weiteren Verlauf nicht mehr brauchen, führt bitte dennoch die Installation durch. Zum Einen habt ihr dann ein “leeres” Blog, mit dem man alles mögliche ausprobieren kann, zum anderen richtet die WD einige Verzeichnisse und Symlinks ein, um die ihr euch später nicht mehr kümmern müsst.

Wie die WP Installation funktioniert, steht ja an anderer Stelle im Blog, Die App installiert zunächst einmal eine sehr alte Version von WordPress, die ihr aber problemlos aktualisieren könnt. Die neue Version wird gleich mit angeboten. Wenn man die Sprache auf Deutsch umstellt, bekommt man auch die deutschsprachige Version zur Installation angeboten.

Hinweis zu den Verzeichnisstrukturen:

Am besten schaltet ihr euch mal mit WinSCP auf die Box auf und seht euch das direkt an. Der Apache Server erwartet alle Dateien unterhalb von /var/www/. Dieses Verzeichnis ist aber komplett RAM based und wird bei jedem Start der Box erneuert. Daher sind auch nur äußerste wenig Daten enthalten. In diesem Verzeichnis existiert ein Unterverzeichnis “WordPress” bzw. “wordpress”, welches per Symlink auf den eigentlichen Ablageort von WordPress verweist. In gleicher Weise wird so auf die PHP-Files des Dashboards (UI) oder von phpMyAdmin verwiesen. Das soll uns aber nicht weiter interessieren.

Der Symlink “WordPress” verweist jedenfalls auf dieses Verzeichnis:

/mnt/HD/HD_a2/Nas_Prog/WordPress/WordPress

Je nach eurer internen Raidaufteilung können die Mountpoints der Platten natürlich eine andere Bezeichnung haben, daher schaut mit WinSCP selber nach, wie die Datenstruktur unter /mnt/HD/ tatsächlich aussieht.

Im Verzeichnis Nas_Prog sind die Basisdaten aller von der MyCloud installierten Apps enthalten. Hier seht ihr das Verzeichnis von phpMyAdmin und das von WordPress sowie evtl. weiterer Apps, die ihr installiert habt.

Im WordPress Verzeichnis unterhalb von Nas_Prog/  findet ihr eine Reihe von Scripts. Solltet ihr einmal die Notwendigkeit sehen, eigene Initialisierungen zu benötigen, so bieten sich die Scripts  Start, Stop, Init und Clean an. Diese werden nach einem Restart und vor Shutdown ausgeführt, sorgen z.B. dafür, dass die Symlinks passen und starten die SQL Datenbank. Bei meinen Tests nutze ich der Einfachheit halber keine eingerichteten Freigaben o.ä, sondern Bereiche im OS der Box. Ihr könnt aber auch eine Freigabe dafür verwenden, dann müsst ihr die entsprechenden Symlinks in /var/www/ erzeugen, damit Apache entsprechend zugreifen kann. Diese Symlink-Einrichtung muss dann in den genannten Scripten berücksichtigt werden.

Im Verzeichnis WordPress findet sich nur ein weiteres Verzeichnis WordPress, in dem ihr die übliche WordPress Files findet. Das ist auch das Verzeichnis, dass mit /var/www/wordpress  verlinkt ist.

Dieses Verzeichnis (…Nas_Prog/wordpress/wordpress) bitte umbenennen in WordPress1 oder löschen und ein neues, leeres Verzeichnis WordPress einrichten. Danach funktioniert natürlich das soeben installierte WordPress nicht mehr. Ich bevorzuge das umbenennen, dadurch kann ich jederzeit (rein durch “zurück umbenennen” der Verzeichnisse) wieder die Standard Installation verwenden.

Nun gehts los – Der Blog-Transfer

Zur Vorbereitung ladet euch bitte ein Datenbank-Sicherung und eine komplette Filesicherung eures bestehenden Blogs auf den PC. Wie man sowas machen kann steht u.a. auch hier: Backup die Zweite – FTP Backup mit WinSCP.

Kopiert jetzt bitte euer vollständiges Blog (also die WordPress Files) in das soeben angelegte, leere Verzeichnis WordPress. Nutzt dazu vorzugsweise WinSCP und stellt sicher, dass die Umlaute in den Dateinamen passend sind. (Bei mir waren in Bildernamen einige, die nachher mit hyroglyphischen Zeichen angekommen sind, und so später zu Anzeigefehlern führten bis ich die betroffenen Files erneut und dann  richtig kopierte). Wenn ihr solche Files habt, einfach mal ausprobieren, ob sie korrekt ankommen. (Notfalls muss man bei den FTP Optionen UTF8 im Filenamen erzwingen).

Während im Hintergrund der FTP läuft, könnt ihr euch um die Datenbank kümmern. Die Standard-Wordpress Installation der MyCloud legt eine Datenbank WordPress und einen DB User WordPress an. Weder User noch Datenbank werden wir jetzt anrühren, damit diese alte Installation weiter funktionsfähig bleibt.

Also jetzt bitte (mit phpMyAdmin) einen User (zum Beispiel TESTBLOG) einrichten, und eine leere Datenbank, ebenfalls TESTBLOG. Dem User müsst ihr dann noch alle relevanten Rechte (alles außer grant) für die neue Datenbank geben. User und Passwort merken, das müsst ihr später in die WP-CONFIG eintragen. Jetzt gehts zum Import der DB Sicherung eures Blogs:

  • Falls diese im “.gz” Format vorliegt bitte entpacken. Es sollte nun eine “.sql” Datei vorliegen.
  • Öffnet diese in einem Editor und ändert den DB Namen darin ab auf TESTBLOG (ganz am Anfang)
  • Ändert weiterhin den String “/*!40101 SET NAMES utf8xxxxxx */;” in “/*!40101 SET NAMES utf8 */;”. Das ist der alten MySQL-Version geschuldet, die in der Box läuft.
  • Noch als Root User bitte die folgende Befehle absetzen_
    • set global net_buffer_length=1000000;
    • set global max_allowed_packet=1000000000;

Ansonsten kann es sein, dass der Import abbricht wenn ihr größere Texte o.ä. in der DB führt. Jetzt könnt ihr eure so angepasste DB Sicherung importieren. Falls mal was schief geht: alle Tabellen löschen und einen neuen Versuch starten.

Insbesondere dann, wenn ihr eine Netzwerkinstallation habt, ändert ihr am besten gleich in der Datenbank die wichtigsten Einträge. Hinweis: Meine  Box hat im internen Netz den Namen “BackupNAS”, dieser ist nun als Domain zu verwenden. Der Path ist “/wordpress/”, das ist der Pfad (relativ zur Domain), der im Folgenden verwendet werden muss:

In der Tabelle “wp_blogs” (für alle Blogs) und “wp_site” (für das Netzwerk, falls Netzwerkinstallation) muss nun die Domain ausgetauscht werden durch “BackupNAS” und der Pfad muss durch “/Wordpress” ergänzt werden. War der Path zuvor “/” ist er nun “/wordpress/”. War er zuvor “/XX/” dann ist er nun “/wordpress/XX/” etc.

Analog sind nun in den Tabellen wp_sitemeta und wp_options die Werte für die siteurl zu ändern: Neuer Wert ist “https://backupnas/wordpress”, bzw. wenn  es vorher eine siteurl “https://domain/xx” gab, dann wird diese natürlich zu “https://BackupNAS/wordpress/xx“. Mit diesen Änderungen ist DB-seitig das Wichtigste getan. Der Update der querlinks etc. erfolgt dann später mit dem Plugin “WP DB Migrate”, das ist zu mühselig manuell.

Bevor ihr nun starten könnt, müsst ihr nun noch die wp-config.php und die .htaccess anpassen:

Zur wp-config.php:

Das Beispiel kommt aus meiner Multi-Site Umgebung. Die blauen Einträge lasst ihr weg, wenn ihr keine Netzwerkinstallation habt. Die roten Einträge sind ganz wichtig. Der Rest ist WordPress Standard. Und natürlich müsst ihr den angelegten DB User und das Passwort eingetragen werden. Und wenn ihr unangenehme Nebeneffekte mit eurem produktiven Blog vermeiden wollt, vergebt ihr auch neuen Keys für die Verschlüsselung. Hier nun die so gestaltete wp-config.php:

<?php
define(‘DB_NAME’, ‘TestBlog’);
define(‘DB_USER’, ‘xxxx’);
define(‘DB_PASSWORD’, ‘yyyy’);
define(‘DB_HOST’, ‘localhost’);
define(‘DB_CHARSET’, ‘utf8’);
define(‘DB_COLLATE’, ”);

define(‘AUTH_KEY’, ‘Macht hier euren eigenen Key rein ‘);
define(‘SECURE_AUTH_KEY’, ‘Macht hier euren eigenen Key rein ‘);
define(‘LOGGED_IN_KEY’, ‘Macht hier euren eigenen Key rein ‘);
define(‘NONCE_KEY’, ‘Macht hier euren eigenen Key rein ‘);
define(‘AUTH_SALT’, ‘Macht hier euren eigenen Key rein ‘);
define(‘SECURE_AUTH_SALT’, ‘Macht hier euren eigenen Key rein ‘);
define(‘LOGGED_IN_SALT’, ‘Macht hier euren eigenen Key rein ‘);
define(‘NONCE_SALT’, ‘Macht hier euren eigenen Key rein ‘);

$table_prefix = ‘X44_’;
define(‘WPLANG’, ”);
define(‘WP_DEBUG’, false);

/* Das nun folgende sind die wichtigen Befehle: */

define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, false);
define(‘DOMAIN_CURRENT_SITE’, ‘backupnas’);
define(‘PATH_CURRENT_SITE’, ‘/wordpress/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);

/* That’s all, stop editing! Happy blogging. */

if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);

require_once(ABSPATH . ‘wp-settings.php’);
define(‘DISALLOW_FILE_EDIT’, true);

Falls später euer WordPress nicht richtig startet, tragt bitte (temporär) ein:

  • define( ‘WP_HOME’, ‘http://backupnas/wordpress’ );
  • define( ‘WP_SITEURL’, ‘http://backupnas/wordpress’ );

Zur .htaccess

Das übersteuert die Einträge in der Datenbank.

Einfacher ist die htaccess zu ändern. Diese entspricht im wesentlichen den WordPress Standards,  die einzige Abweichung ist die RewriteBase (rot), die jetzt den Pfad /wordpress/ zusätzlich enthalten muss. War diese Base vorher schon vorhanden und nicht “/”, kommt “/wordpress” zusätzlich dazu !!!!

# BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ – [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

</IfModule>

# END WordPress

Mit diesen Einstellungen sollte nun über “https://backupnas/wordpress” euer Blog aufrufbar sein. Bei dieser Gelegenheit ein ganz wichtiger Hinweis:

Nach Aktualisierung der 2 Files (z.B. wegen eines Fehlers) ist immer ein Apache Restart nötig. Der scheint die Files zu cachen.  Um den Restart durchzuführen mit Putty/Kitty auf die WD MyCloud aufschalten und “apache restart web” eingeben. Vergesst ihr das, so sucht ihr euch einen Wolf, weil eure Änderungen nicht wirken.

(Das editieren der Dateien geht übrigens auch sehr komfortabel mit WinSCP).

Und wenn ihr mal wieder ein htaccess Problem habt, so könnt ihr das auf dieser Seite durchtesten. Diehat mir schon ganz oft ein Licht aufgehen lassen!

Der letzte Schritt

Wenn ihr euch anmelden könnt, müsst ihr als nächstes mit dem Plugin “WP DB Migrate” wieder alle Verweise “https://altedomain” durch “https://backupnas/wordpress” ersetzen. Dann sollte alles klappen. Prüft aber unbedingt vorher, ob ihr tatsächlich auf dem Testblog und nicht auf dem produktiven seid. Ich hab es tatsächlich hingebracht, mir mein Produktivsystem zu zerschießen und durfte Datenbank-Restore üben  🙂

Je nach Komplexität eures Blogs werdet ihr merken, dass die Performance der WS MyCloud sehr zu wünschen übrig lässt. Hier merkt man, dass sie im Grunde nicht dafür vorgesehen ist. Ich habe, damit ich halbwegs arbeiten konnte, dann alle Plugins deaktiviert, die ich aktuell nicht testen wollte, und die ich nicht für die Darstellung benötigte. Lieber schalte ich diese gezielt wieder dazu, wenn ich sie testen will.

Des weiteren müsst ihr euch natürlich um alle Funktionalitäten “nach außen” kümmern. Diese müssen deaktiviert werden. Fatal wäre es beispielsweise, wenn ihr einen Shop betreibt und automatische Mails “doppelt” rausgehen weil ihr den TestBlog mit dem Backup von vor einer Woche aufgebaut habt. Und das sind noch die harmlosen Fehler.

Also ganz schnell alles deaktivieren, was kritisch werden könnte. In Fällen wie oben müsst ihr sicherheitshalber von vornherein verhindern, dass das Blog nach außen telefoniert !!! Zum Beispiel dadurch, dass der MyCloud der Internet-Zugang temporär entzogen wird. Das geht mit der Fritzbox ganz gut.

Damit ihr eine Idee habt, was zu beachten ist die Punkte, die bei mir relevant waren:

  • UPDRAFT:  in der Pro-Version könnt ihr einen 2. Pfad für die DropBox-Ablage angeben, in der Standard-Version geht das nicht. Für so ein reines Testblog verzichtet einfach auf den Drop-Box Spiegel und nutzt nur das Backup auf die MyCloud selbst.
  • Yoast-SEOs Interaktionen mit den Suchmaschinen bitte abschalten (kein Ryte-Anfrage, keine Sitemaps etc.) Sicherheitshalber auch die Google-Autorisierungsfile löschen, falls ihr sie habt. Nicht schlimmer als wenn euer produktiver Blog durch Duplicate Content oder Zugriffsfehler abgewertet würde.
  • Und natürlich wechselt ihr auch das Blog-Passwort bei der Gelegenheit, um zu verhindern, dass ihr versehentlich Tests am produktiven Blog macht.
  • Eine gute Idee ist auch, den Blog irgendwie kenntlich zu machen, über die Cookie -Notiz, oder über eigene Blog-Logos. Dazu gibt es geeignete Plugins

Und macht euch eine kleine Checkliste über eure individuellen Themen, dann habt ihr sie greifbar, wenn erneut eine Kopie des produktiven Blogs auf die MyCloud erstellt werden soll.

Mein Fazit

Prinzipiell funktioniert ein WordPress Blog auf der WS MyCloud, trotz der alten Versionen von MySQL und PHP konnte ich in meiner Umgebung keine Inkompatibilitäten erkennen. Es ist aber sicher kein vollwertiges Stagingsystem als das ich es ursprünglich einsetzen wollte. Als ein einfaches, kleines Testsystem um mal neue Plugins zu testen, ist es  verwendbar.

Für ein Stagingsystem mit dem man verlässlich Veränderungen testen möchte, ist die Umgebung aber zu unterschiedlich:

  • Die PHP Version ist nicht mehr die Jüngste
  • Auch MySQL ist schon in die Jahre gekommen
  • Immerhin wird schon Apache 2 eingesetzt, aber nicht 2.4.x
  • Aus  Performance Gründen musste ich Plugins deaktivieren, die durchaus Einfluss auf die Funktionsfähigkeit des Blogs haben können.
  • Vielleicht gibt es doch noch Inkompatibilitäten mit den alten Versionen? Auch wenn ich bisher keine gefunden habe? Meine BLOG-Hauptseite wird zum Beispiel im Internet Explorer anders dargestellt als in der produktiven Umgebung. (Ursache muss ich noch erforschen, möglicherweise sind da PHP-Fehler die Ursache (Ich werde berichten)
  • https funktioniert nicht vollständig, da das “eingebaute” Zertifikat der WD MyCloud auf einen kryptischen Namen ausgestellt ist.

Also wenn ihr wirklich ein Stagingsytem braucht, dann sucht euch einen Hoster, der das mit anbietet. Das ist wirklich professioneller . Aber wenn man nur ein wenig spielen will … warum, nicht 🙂

Nachsatz

Falls einer von euch eine Idee hat, wie man einfach aktuelle Versionen (PHP, MySQL,…) auf die Box bringt, ohne deren Hautpfunktion zu stören, dann wäre ein e-mail oder ein Kommentar toll 🙂

One Response

  1. […] WordPress auf der WD My Cloud Ex2 […]

Leave a Reply

Your email address will not be published. Required fields are marked *