FOL9000

Magento auf dem Mac installieren – The Hard Way

von

So gut wie jedes Buch zu Magento beginnt mit der Installation. Und in jedem Buch, dass ich kenne, wird die Installation mithilfe von XAMPP beschrieben. Klar, auch auf dem Mac nimmt das eine Menge Arbeit ab; aber auf dem Mac sind die nötigen Grundlagen – z.B. PHP und Apache – bereits installiert oder lassen sich einfach selbst installieren. Warum also alles ein zweites Mal auf die Platte packen? Vor allem, wenn man das alles schon nutzt, es also bereits problemlos läuft? Das geht doch alles ganz einfach mit Bordmitteln – dachte ich. Und fiel dann bei der Magento-Installation deutlich auf die Nase.

Update: Dieser Beitrag bezieht sich auf die Situation unter MacOS 10.6.8! Auf spätere Versionen ist diese Anleitung nicht einfach zu übertragen, weil u.a.(?) die Web-Freigabe entfallen ist.

Auf die Nase gefallen bin ich, weil zwar einiges auf dem Mac tatsächlich bereits installiert ist, aber nicht unbedingt so, wie man es braucht und teilweise sogar fehlerhaft. Und selbst, wenn die Laufzeit-Umgebung soweit in Ordnung ist, gibt es noch den einen oder anderen Fallstrick.

Da wir das ganze auf die harte Tour machen werden, sind natürlich eine ganze Reihe von Schritten notwendig.
Ordentlich Kaffee und vor allem Zeit sind also angesagt. Im einzelnen geht es wie folgt ab:

Apache und konfigurieren

Auf jedem Mac ist ein aktueller Apache-Server installiert, er läuft nur nicht. Das erste, was man also machen muss, ist den Server zu starten. Gottseidank geht das ganz einfach: In den Systemeinstellungen unter ‚Freigaben‘ den Punkt ‚Web-Freigabe‘ anwählen und schon läuft der Server. Im Browser kann man dies testen, indem man z.B. ‚http://localhost‘ als Adresse eingibt. Möglich ist auch ‚http://127.0.0.1‘ oder – eigentlich am schönsten – man nutzt in der Adresse den Namen des Rechners (ebenfalls in den Systemeinstellungen unter Web-Freigabe zu finden). Ist der Name ‚mymac‘, dann wäre die URL ‚http://mymac.local‘.

Möchte man URL-Rewriting benutzen, muss man nun zunächst sicherstellen, dass dies im Apache und für Magento richtig konfiguriert ist. Wie das geht, habe ich in einem anderen Artikel beschrieben.

Rufe ich die entsprechenden Adressen auf, erscheint bei mit der der Satz ‚It works!‘ – möglich, dass dies in verschiedenen Versionen anders ist.

PHP

Über PHP auf dem Mac habe ich schon an anderer Stelle geschrieben. Deshalb hier nur eine kleine Zusammenfassung: Auch PHP ist auf dem Mac vorinstalliert, muss aber noch aktiviert werden. Außerdem fehlt eine für Magento wichtige Library (mcrypt), die nachinstalliert werden muss. Ist durchaus machbar, wenn man weiß, wie.

MySQL

Als nächstes ist die Datenbank an der Reihe – die erste Software, die man wirklich selbst instalieren muss, sieht man mal von mcrypt ab.

Das geht ganz simpel mit einem Download des Disk-Images. Man kann natürlich auch ein anderes Format nehmen, aber ich finde die Installation über das Image am einfachsten.

Ist das geschehen, kann man sich Gedanken über ein Tool machen, mit dem man MySQL verwaltet, neuen Datenbanken anlegt usw. Da gibt es natürlich eine große Auswahl, ich mag das Tool von MySQL selbst, die MySQL Workbench am liebsten – ggf. also auch noch schnell installieren.

Magento

Jetzt ist die Umgebung für Magento komplett. Kein Fehler ist es sicher, vor dem eigentlichen Installieren von Magento nochmal schnell zu prüfen, ob es auch wirklich korrekt ist: Z.B. mit einem Test mit phpinfo() und einem Versuch sich, z.B. über die Workbench, mit MySQL zu verbinden.

Ist man sich sicher, dass alles ok ist, kann es mit dem Download von Magento weitergehen. Dazu wählt man das Full-Release und die Beispiel-Daten. Das eigentliche Magento entpackt man in sein Server-Verzeichnis, die Beispiel-Daten kommen irgendwo anders hin.

Magento-Datenbank erzeugen und Beispieldaten installieren

Wie man die folgenden Schritte genau durchführt, ist stark abhängig vom Datenbank-Tool; deshalb hier nur eine grobe Darstellung von dem, was man machen muss.

Zunächst erzeugt man eine neue Datenbank und einen neuen Datenbank-User. Ich gehe hier von folgenden Namen aus:

  • Datenbank: maggi
  • Datenbank-User: maggiuser
  • Passwort: mupwd

Nun die Datenbank erzeugen:

CREATE DATABASE 'maggi'
    DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

CREATE USER 'maggiuser@localhost' IDENTIFIED BY 'maggiuserpwd'

GRANT USAGE ON *.* TO 'maggiuser@localhost' IDENTIFIED BY 'mupwd'
    WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0
    MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
    CREATE TEMPORARY TABLES ON 'maggi' TO 'maggiuser@localhost'

Eine kleiner Hinweis noch: Ich bin mir ziemlich sicher, dass das zweite GRANT-Statement mal funktioniert hat. Gerade aber bin ich damit gescheitert. Geklappt hats dann mit folgender leichter Änderung:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
    CREATE TEMPORARY TABLES ON maggi.* TO 'maggiuser'@'localhost'

Man beachte v.a. die anders gesetzten Anführungsstriche. Ich bin an diesen syntaktischen Feinheiten nicht unbedingt stark interessiert, deswegen sehe man mir bitte nach, dass ich hier nicht weiter recherchiere, sondern es bei diesem Hinweis belasse.

In die neue Datenbank können nun die Beispieldaten importiert werden. In der MySQL-Workbench z.B. über die entsprechende Import-Funktion. Dort gab es bei mir aber auch ein Problem, denn SQL wusste nicht, in welche Datenbank die Daten geladen werden sollten. Wenn man also die Datenbank nicht anders auswählen kann oder will, fügt man folgendes an den Anfang der SQL-Datei hinzu:

USE 'maggi';

Danach sollte der Import klappen.

Anschließend noch die Daten aus dem media-Verzeichnis der Beispiel-Daten in das media-Verzeichnis der Magento-Installation kopieren und die Beispieldaten sind installiert.

Magento installieren

Jetzt endlich kann es an die eigentlich Magento-Installation gehen. Grundsätzlich gibt es die Möglichkeit, den kleineren Downloader zu nutzen – dann werden die fehlenden Daten während der Installation nachgeladen – oder das vollständige Installationsarchiv zu benutzen. Ich gehe hier von letzterem aus. Also das Archiv bei Magento runterladen und in einem Web-Server-Verzeichnis auspacken. Das kann auch ein Unterverzeichnis sein, was ganz nützlich ist, will man auf dem lokalen Rechner verschiedene Anwendungen parallel installieren.

Damit Magento Daten in das eigene Verzeichnis schreiben kann, müssen anschließend dort die entsprechenden Rechte gesetzt werden. Im Terminal wechselt man dazu ins Magento-Installationsverzeichnis und macht die folgenden Verzeichnisse für Magento schreibbar:

chmod -R 777 ./app/etc
chmod -R 777 ./var
chmod -R 777 ./media

Diese Rechte müssen immer so bleiben. Anders verhält es sich mit den im folgenden Abschnitt gesetzten Rechten, die nur während der Installation zu setzen sind.

Die eigentlich Installation geht nun los, in dem man die Magento-URL im Browser aufruft – die ist natürlich abhängig von der Installation. Man wird nun durch eine knappe Installation geführt, bei der nur bei der Datenbank-Verbindung aufgepasst werden muss; aber dazu habe ich schon hier etwas geschrieben.

Der Rest dürfte offensichtlich sein und nach der Installation hat man einen fast fertigen Shop!

Erweiterte Schreibrechte setzen

Ein Thema, dass fast nie angesprochen wird, sind die Lese- und Schreibrechte für die weitere Installation. Für Magento müssen nicht nur die Rechte wie oben aufgeführt gesetzt sein; für die Installation der Extensions braucht es noch weitere Schreibrechte (die man hinterher wieder zurücksetzen kann/sollte).

Also im Magento-Verzeichnis die Schreibrechte ein wenig offener gestalten:

find . -type d -exec chmod 777 {} \;
chmod 666 downloader/config.ini

Dies wird im Weiteren wichtig sein, wenn das deutsche Sprachpaket nachinstalliert wird; auch für andere Erweiterungen können diese Einstellungen wichtig sein.

Deutsche Sprachpaket installieren

Sind die entsprechenden Schreibrechte gesetzt, gestaltet sich dieser Schritt mal wieder einfacher. Ich muss an dieser Stelle gestehen, dass ich nicht mehr weiß, ob dazu ein Account bei Magento-Connect nötig ist. Im Zweifel ja, man kann es ja auch erstmal ohne ausprobieren. Um an den Schlüssel zu kommen, den wir gleich brauchen (den ich aber auch hier angeben werde) ist der Account auf jeden Fall nötig.

Nun meldet man sich bei Magento an und öffnet den Magento-Connect-Manager: System → Magento Connect → Magento Connect Manager. Erneut als Admin einloggen und schon ist man im Connect Manager.

Unter ‚Install New Extensions‘ gibt man unter Punkt 2 folgenden Key ein:

http://connect20.magentocommerce.com/community/Locale_Mage_community_de_DE

Mit dem ‚Install‘- oder ‚Proceed‘-Button (meine, in unterschiedlichen Versionen schon beides gesehen zu haben) geht’s – selbsterklärend – weiter.

Klappt es nicht, kann es an den Rechten liegen, die oben gesetzt wurden, oder der Key ist falsch. Über den Magento Connect Account kann man sich den leicht selbst beschaffen und es nochmal versuchen.

Erweiterte Schreibrechte zurücksetzen

Jetzt ist es fast geschafft und man kann die oben gesetzten erweiterten Schreibrechte wieder aus dem Magento-Verzeichnis heraus zurücksetzen.

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod -R 777 ./app/etc
chmod -R 777 ./var
chmod -R 777 ./media

RewriteBase anpassen

Hat man Magento in einem Unterverzeichnis installiert (und natürlich nur dann), muss noch der RewriteBase-Eintrag in der .htaccess von Magento angepasst werden. Dazu in der Datei .htaccess im Magento-Root-Verzeichnis nach RewriteBase suchen. Wenn vor der Zeile ein ‚#‘-Zeichen steht, dieses Zeichen löschen und nach RewriteBase das Unterverzeichnis angeben, in dem Magento liegt. Wichtig: Mit führendem und abschließendem Slash! Liegt Magento im Verzeichnis tests/magento_test1, sähe die Zeile so aus:

RewriteBase /tests/magento_test1/

Backup

Kaum zu glauben: Die Installation ist komplett! Was ich jetzt noch gemacht habe ist ein Backup. Dazu hab ich in Magento den Cache geleert und sogar die Dateien in /var/cache gelöscht und hinterher – ohne weiteren Magento-Aufruf! – das komplette Magento-Verzeichnis gesichert.

Index

Beim ersten Aufruf von Magento werden die Artikel noch nicht richtig dargestellt. Das liegt daran, dass der Index noch nicht aufgebaut ist. Wenn auch das nachgeholt ist, sollte alles laufen wie erwartet.

Fertig!

Hat sich das nun alles gelohnt? Wäre es mit XAMPP nicht einfacher gewesen? Klar. Aber erstens hat man was dazugelernt, was in der einen oder anderen schwierigen Situation vielleicht mal weiterhelfen kann und zweitens war einiges (PHP) ja auch für andere Projekte zu gebrauchen.

Kommentare sind geschlossen.