WordPress lokal unter Mac OS X laufen lassen

Sonntag, 8.1.2012, 12:00 > daMax

Gestern hatte ich es mir zur Aufgabe gemacht, die aktuelle WordPress-Version zu installieren. Außerdem wollte ich die Datenbank mal entschlacken, zum Beispiel die Artikel-Revisionen wegwerfen. Und wenn ich schon mal dabei bin, könnte ich auch noch ein bisschen am Aussehen rumschrauben. Das alles würde ich mich allerdings nicht im Live-Betrieb getrauen. Dazu muss schon eine lokale Instanz her. Nun habe ich natürlich auf meinem PC eine lokale Instanz von meinem Blog laufen, was dank XAMPP kein Hexenwerk mehr ist. XAMPP ist ein Rundumsorglospaket bestehend aus einem Webserver (Apache), einer Datenbank (MySQL), sowie den Sprachen PHP und Perl. Quasi alles was mehr als WordPress so benötigt.

XAMPP gibt es auch für den Mac und ich kann das eigentlich nur empfehlen, aber gestern wollte ich mal sehen, wie einfach bzw. umständlich man auch mit Mac-Bordmitteln zum Ziel kommt. Vorweg möchte ich an meinen Administrator DidiDaDude ein ganz dickes Dankeschön loswerden, er hat mich nämlich tatkräftig dabei unterstützt.

Ganz wichtig für die folgende Anleitung ist, dass ihr den Befehl sudo ausführen könnt. Falls das nicht geht ("Benutzername is not in the sudoers file.") findet ihr hier eine Anleitung, wie ihr das umgehen könnt und hier eine Anleitung, wie ihr euch der Gruppe sudoers hinzufügen könnt (im Endeffekt passt ihr die Datei /etc/sudoers an. Achtung: damit reißt ihr ein ziemliches Loch in das Sicherheitskonzept von Mac OS X, macht das also nur, wenn ihr wirklich sicher seid, dass ihr wisst, was ihr tut).

1. Webserver
MAC OSX bringt einen fertigen Apache-Server schon mit, der muss nur aktiviert werden. Wenn man dieser Anleitung folgt, ist das wirklich ein Kinderspiel. Im Endeffekt muss man nur unter Einstellungen -> Sharing -> Web Sharing aktivieren und fertig! Das war schonmal eine echt positive Überraschung.

2. PHP
Auch PHP ist schon fertig integriert, es muss nur aktiviert werden. Auch das ist echt ein Kinderspiel. Ich zitiere:

Zunächst lädt man im Terminal die Hauptkonfigurationsdatei des Apache in den Editor:

sudo pico /etc/apache2/httpd.conf

Dann entfernt man in der Zeile

#LoadModule php5_module libexec/apache2/libphp5.so

das Kommentarzeichen (#) und speichert die Datei mit Strg + O.
Jetzt muss man nur noch den Webserver neustarten, sodass dieser die geänderte Konfiguration einliest.

Easy, hm? Den Webserver startet man neu, indem man das Häkchen von "Web sharing" entfernt und wieder setzt.

3. MySQL
Jetzt wird's leider doch etwas komplizierter, MySQL muss nämlich gesondert installiert werden. Das aktuelle Package findet ihr bei MySQL.com (auf MySQL Community Server klicken, dort gibt es eine Mac-Version. Achtung: aktuelle MacBooks benötigen die 64-bit-Variante), wo es auch eine recht verständliche Anleitung gibt. Wichtig: installiert euch unbedingt das mitgelieferte PrefPane dazu wenn ihr MySQL per Mausklick in den Settings starten können wollt.

Allerdings gingen jetzt die Probleme los. Ich bin ein fauler Sack und habe keine Lust auf Kommandozeilenhäcksleien. Ich will also eine Klickibunti-Oberfläche, um meine Datenbank verwalten zu können. In XAMPP ist PHPMyAdmin integriert, in MAC OS X leider nicht. Ich hätte es vielleicht selbst installieren sollen. Statt dessen habe ich es mit den MySQL-GUI-Tools versucht, wovon ich aber abraten möchte. Vielleicht hatte ich eine alte Version erwischt, was weiß ich, auf jeden Fall purzelte das ganze Programm immer auseinander, weil das Fenster nicht richtig skalierte und ich war auch nicht in der Lage, einen Benutzer einzurichten oder sonst was. Vielleicht habe ich mich aber auch nur doof angestellt.

Besser gefallen hat mir da Sequel Pro, ein Freeware-Tool, das aus dem Project cocoaMySQL hervorgegangen ist. Flugs heruntergeladen und installiert, war ich recht bald in der Lage, meinen Datenbank-Dump zu installieren, nachdem ich eine Datenbank mit dem passenden Namen sowie einen User mit richtigem Namen und Rechten eingerichtet hatte. Bei der Gelegenheit solltet ihr vielleicht dem Root-User ein Passwort vergeben, das könnt ihr aber auch später noch machen. Nur machen solltet ihr es auf jeden Fall.

4. Datenbank exportieren
Ihr müsst nun erstmal von der Datenbank eures Blogs einen Dump ziehen. Ich habe keine Ahnung, was bei euch im Webserver-Admin-Bereich so an Tools vorhanden ist, das müsst ihr schon selbst heraus finden. Die meisten werden wohl PHPMyAdmin haben, das ist allerdings schonmal ein Problem. Sobald eine DB mal "etwas größer wird", rennt PMA ständig in einen Timeout sowohl beim im- als auch beim exportieren. Mein Blog hat ungepackt z.Z. etwa 110 MB, das war schon zuviel! Unter uns Pastorentöchtern: eine 110 MB Datenbank ist eigentlich ein Witz. Aber mit so PHP-Krams ist halt alles nicht immer so einfach. Redet ggf. mit eurem Provider bzw. Administrator mal darüber, wie ihr an einen solchen Dump kommt. Am einfachsten ist ein kompletter SQL-Export in einer Textdatei, wie er auch von WordPress empfohlen wird. Eine ausführlichere Anleitung gibt es hier.

5. Datenbank importieren
Das war nun wieder recht einfach. Zunächst müsst ihr aber sicherstellen, dass entweder die Datenbank bei euch lokal genau so heißt wie eure Online-DB (siehe Schritt 3), oder ihr müsst das SQL File entsprechend ändern! Der Import per Sequel Pro war ein Kinderspiel, mit PHPMyAdmin könnt ihr das unter Umständen leider wieder vergessen. Sicherer ist es, ein Terminal zu öffnen und folgenden Einzeiler zu tippseln:

mysql --user=USERNAME --pass=PASSWORD --host=localhost DATABASE < /PATH/FILE.SQL

wobei ihr USERNAME, PASSWORD, DATABASE und den Pfad zu eurem Dump entsprechend anpassen müsst.

Wenn ihr noch die Standard-MySQL-Installation habt, bei der der User "root" kein Passwort hat, dann sieht das so aus:

mysql --host=localhost DATABASE < /PATH/FILE.SQL

6. WordPress lokal installieren
Nun müsst ihr noch eure komplette WordPress-Instanz zu euch "nach Hause" holen. Das geht am einfachsten per FTP, z.B. mit CyberDuck. Zielverzeichnis bei euch auf dem Rechner sollte dabei der Ordner Sites (deutsch: "Websites") in eurem Home-Verzeichnis sein. Dort richtet ihr euch einen neuen Ordner ein ("MeinBlog"), in das ihr dann sämtliche WordPress-Dateien und -Ordner von eurem Webserver kopiert.

7. Tut's jetzt?
Wenn alles gut lief, könnt ihr jetzt einfach im Browser unter

http://localhost/~BENUTZERNAME/PFAD/ZUM/BLOG

eure lokale Instanz bewundern. Natürlich war es bei mir nicht ganz so einfach, mein Karma, ihr wisst schon. Ich wurde erstmal begrüßt mit

"Error establishing a database connection"

Das lag zunächst mal an der Datei wp-config.php, in der noch die falschen User/Passwort-Daten angegeben waren. Einfach anpassen.

Leider lief es dann immer noch nicht :(

8. Problem, officer?
Auch mit korrekten credentials in wp-config.ini bekam ich nur einen Connection-Error zu sehen. Bei mir lag das daran, dass ich keine korrekte php.ini hatte. Dazu müsst ihr im Terminal erstmal die php.ini.default kopieren:

sudo cp /etc/php.ini.default /etc/php.ini

und anschließend das writable-Flag setzen:

sudo chmod +w /etc/php.ini

Diese Datei muss eventuell angepasst werden. Ich bin wie gesagt ein Klicki-Bunti-Mensch und will so etwas in einem echten Texteditor machen, nicht in VI oder Pico oder so einem Nerdtool. Leider kommt man nicht so einfach an /etc/php.ini, weil der Finder einen gar nicht da hin lässt. Auch das geht aber:

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/php.ini

Nun musste ich den MySQL-Socket eintragen. Die entsprechende Stelle sieht so aus:

; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/pdo_mysql.default-socket
pdo_mysql.default_socket=/var/mysql/mysql.sock

das rot markierte kommentiert ihr aus mit einem ";" davor und schreibt anschließend folgende Zeile darunter:
mysql.default_socket = /tmp/mysql.sock

Nach einem erneuten Apache-Neustart" begrüßte mich mein Blog unter der Adresse http://localhost/~BENUTZERNAME/todamax/blog.

Endlich.

Leider hat es sämtliche Umlaute zerlegt, das ist mir aber erstmal herzlich egal. Hauptsache, ich kann jetzt gefahrlos Sachen ausprobieren, ohne mein Blog dabei tatsächlich zu zerlegen.

Ach ja: die Permalinks funktionieren lokal auch nicht. Ein Klick auf einen Artikel oder eine Kategorie oder so führt immer zu "404 - Object not found". Ich habe lange nach der Ursache gesucht und angeblich soll das auch ein PHP.ini-Problem sein, nämlich dass mod_rewrite nicht aktiviert ist. Bei mir ist das aber aktiviert, tut trotzdem nicht, weder aufm PC noch aufm Mac. Egal. Einfach in WP-Admin unter Permalinks das Default-Verhalten (?p=1234) einstellen und gut ist.