WordPress lokal unter Mac OS X laufen lassen
Sonntag, 8.1.2012, 12:00 > daMaxGestern 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.
wordpress braucht perl??? wozu denn das?
btw das schöne an mac os x ist, dass vieles bereits OHNE xampp am start ist. php und perl zum beispiel und natürlich der apache. ok, zugegeben: php nur sehr rudimentär. aber dafür gibts ja php-osx.liip.ch.
dann nur noch die offizielle mysql installieren (aktuellste version und bequem per mac-installer), und schon gehts ohne xampp. wer also beim upload von worpress-sites auf den live-server plötzlich probleme wegen dubioser 8080-links bekommt, sollte mal über die alternative nachdenken
Wenn man keine Anhung hat sollte man sich raushalten. Das mache ich hiermit offiziell. Ihr seid so nerdig, da zieht es mir die Schuhe aus. Bei mir wird nur an der Live Seite gearbeitet, wenn es Änderungen gibt
hallo. bin sozusagen leidgenosse. der große unterschied: ich habe nicht halb soviel ahnung wie du: mehr als eine woche habe ich nun damit verbracht, ein abbild meines wordpress live-umgebung lokal zu installieren. gestern habe ich dann erstmals meinen blog über den localhost erreicht. Aber zu früh gefreut: im blogbereich wird nicht mehr als "Not Found - Apologies, but the page you requested could not be found. Perhaps searching will help." angezeigt. klicke ich z. b. auf irgendeinen link, verbindet sich der browser mit der live-seite. ich bin grad wirklich aufgeschmissen und wäre sehr dankbar für jeden lösungsvorschlag.
@SirHansPeter, wenn jeder Klick auf die Live-Seite führt, hast du das Standard-Root noch nicht eingestellt. In der Datenbank in der Tabelle wp_options musst du site_url auf http://localhost/ oder wie auch immer dein lokaler Pfad heißt, einstellen.
Was allerdings die "not found" Meldung ist, ist mir auch nicht klar.
Hi da]v[ax, danke für dein feedback. der gedanke war gut. habe es zwar noch nicht zum laufen gebracht, dafür aber mich mal näher mit dem sql-dumb beschäftigt. da es ja ein abbild der live-umgebung ist, sind dort natürlich alle links auf die live-url ausgerichtet. das muss natürlch geändert werden. mal schauen, mal schauen...
@SirHansPeter, das ist ein einfaches UPDATE-Statement. Das kriegste hin. Siehe hier: http://todamax.kicks-ass.net/blog/2011/domain-geaendert-und-nu/