In diesem Artikel erkläre ich Schritt für Schritt, wie du Magento 2 unter Ubuntu mit Hilfe von Git und Composer installieren kannst.
1. Systemvoraussetzungen
Zunächst musst du überprüfen ob auf deiner Entwicklungsumgebung mindestens Apache Version 2.2 oder höher verwendet wird.
1 2 3 |
$ apache2 -v Server version: Apache/2.4.7 (Ubuntu) Server built: Oct 14 2015 14:18:49 |
Du solltest ebenfalls mindestens PHP Version 5.5.x verwenden.
1 2 3 |
$ php -v PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:32:13) Copyright (c) 1997-2014 The PHP Group |
Magento 2 setzt zudem mindestens MySQL Version 5.6 voraus. Falls deine Version kleiner ist, wirst du im Magento 2 Installer Probleme haben.
1 2 3 4 5 |
$ mysql -u {root or another mysql user} -p $ Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 167 Server version: 5.5.46-0ubuntu0.14.04.2 (Ubuntu) |
Informiere dich allenfalls selbst wie du dein System mit apt-get update und upgrade aktualisieren kannst.
2. Vorbereitungen
Für die Installation muss einiges vorbereitet werden.
2.1 Composer
Die Installation von Magento 2 wird mit Composer vorgenommen. Es vereinfacht den gesamten Installationsprozess um einiges und stellt sicher, dass am während oder am Ende keine Pakete fehlen. Falls du bisher noch nicht mit Composer gearbeitet hast, wirst du jetzt quasi dazu gezwungen damit anzufangen. Überprüfe kurz ob Composer korrekt installiert ist, bevor du zum nächsten Schritt übergehst.
1 2 |
$ composer --version Composer version 1.0-dev (764de14b5eb2980ba9d479865b075ef3bf858600) 2016-01-07 14:56:48 |
Falls Composer nicht installiert ist, kannst du dies mit apt-get nachholen.
1 |
$ apt-get install composer |
2.2 Git
Für die nächsten Schritte als auch in Zukunft musst du mit Git arbeiten. Keine Sorge, falls du bisher noch nicht mit Git gearbeitet hast. Für die Magento 2 Installation must du nur einen Befehl ausführen, ohne Vorkenntnisse zu haben. Falls Git nicht installiert ist, kannst du dies mit apt-get install git nachholen.
Für einen Personal Access Token, den du später in die Datei auth.json einfügen musst, brauchst du zudem einen kostenlosen GitHub Account den du unter https://github.com/join erstellen kannst.
2.1.1 Personal Access Token
Einen Personal Access Token bei GitHub zu erstellen ist recht einfach. Gehe dazu einfach in den Bereich Settings deines Profils und öffne anschliessend den Tab Personal Access Tokens auf der linken Seite.
Dort klickst du auf den Link Generate a personal access token. Auf der nächsten Ansicht definierst du eine kurze Beschreibung ( z.b Magento 2 ) und erstellst den neuen Token mit den vorausgewählten Scopes.
Auf der nachfolgenden Seite wird dir der Token nur einmal angezeigt. Diesen musst du also kopieren und sicher aufbewahren.
2.2 Magento Connect
Du brauchst zudem einen kostenlosen Account auf Magento Connect um dort einen Sicherheitsschlüssel für die Magento 2 Installation zu generieren. Das ganze hört sich komplizierter an als es tatsächlich ist.
- Log dich auf Magento Connect ein.
- Klicke auf My Account oben rechts.
- Auf der linken Seite öffne den Tab Developers.
- Klicke auf den Link Secure Keys.
- Erstelle einen neuen Key und verwende als Name zum Beispiel den Namen deines Kunden.
- Dort wo vorher ” There are no Secure Keys … ” zu sehen war solltest du nun einen Public Key und einen Private Key sehen.
2.3 Benutzer und Berechtigungen
Hin und wieder passiert es, dass Dateien für die Konfiguration ( z.b Auth.json, local.xml oder andere Dateien ) mit dem User root kopiert oder entpackt werden, der Webserver welcher mit dem User apache oder www-data läuft, darauf jedoch keinen Zugriff hat. Das Resultat ist oft ein Installationsprozess welcher mittendrin mit einer Exception abbricht. Um solche Probleme hier zu vermeiden, erstellst du einen neuen SSH Account und verknüpfst diesen mit der Gruppe vom Apache.
2.3.1 Benutzer erstellen
Log dich zunächst mit SSH auf deine Entwicklungsumgebung ein. Entweder mit root oder einem anderen Benutzer der dir erlaubt mit super-user rechten zu arbeiten.
1 2 |
$ ssh username@hostname username@hostname's password: |
Nun erstellst du den neuen Benutzer. In diesem Fall passt magento_user ganz gut.
1 2 3 4 5 6 |
$ adduser magento_user Adding user `magento_user' ... Adding new group `magento_user' (1001) ... Adding new user `magento_user' (1001) with group `magento_user' ... Creating home directory `/home/magento_user' ... Copying files from `/etc/skel' ... |
Du wirst im Anschluss aufgefordert ein Passwort für diesen Benutzer zu erstellen. Für die Entwicklungsumgebung genügt ein einfaches Passwort.
1 2 3 4 5 6 7 8 9 10 11 |
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for magento_user Enter the new value, or press ENTER for the default Full Name []: Tobias Forkel Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y |
Jetzt musst du den neuen Benutzer magento_user in die Gruppe hinzufügen, welche von Apache verwendet wird. In den meisten Fällen ist es www-data, was aber je nach Linux Distribution anders sein kann.
1 2 |
$ ps axo user,group,comm | egrep '(apache|httpd)' www-data www-data apache2 |
Füge nun den Benutzer magento_user in die Gruppe von www-data hinzu.
1 |
$ usermod -g www-data magento_user |
Überprüfe anschliessend ob die Gruppeneinstellungen für den Benutzer magento_user korrekt übernommen wurden.
1 2 |
$ groups magento_user magento_user : www-data |
Zum Schluss musst du den Webserver einmal neu starten.
1 2 |
$ service apache2 restart * Restarting web server apache2 |
Du kannst dich nun als magento_user einloggen und mit den nächsten Schritten weiterfahren.
1 2 |
$ su magento_user Password: |
2.4 Dateisystem
Wenn wir gerade beim Thema Berechtigung sind, kannst du gleich die Berechtigungen für Dateien und Verzeichnisse korrekt setzen. Zuerst setzt du die Gruppe www-data.
1 2 |
$ cd /var/www/html/{VirtualHost}/ $ chown -R :www-data . |
Nun kannst du im gleichen Verzeichnis die Berechtigungen setzen. Verzeichnisse benötigen volle Berechtigung ( 770 ) ausschliesslich für den Besitzer. Für Dateien gilt, Lese und Schreibberechtigung für den Besitzer und die Gruppe, und keine Berechtigung für andere.
1 |
$ find . -type d -exec chmod 770 {} \; && find . -type f -exec chmod 660 {} \; && chmod u+x bin/magento |
2.5 Auth.json
Einloggt als magento_user erstellst du nun die Datei auth.json im Home Verzeichnis.
1 2 |
$ mkdir ~/.composer/ $ nano ~/.composer/auth.json |
In der Datei auth.json fügst du folgende JSON Konfiguration ein.
1 2 3 4 5 6 7 8 9 10 11 |
{ "github-oauth": { "github.com": "{GITHUB_PERSONAL_ACCESS_TOKEN}" }, "http-basic": { "repo.magento.com": { "username": "{MAGENTO_CONNECT_PUBLIC_KEY}", "password": "{MAGENTO_CONNECT_PRIVATE_KEY}" } } } |
3. Installation durchführen
Gehe nun in dein Hauptverzeichnis, für das ein VirtualHost existiert und welches über den Browser aufrufbar ist.
1 |
$ cd /var/www/html/ |
3.1 Source klonen
Starte git clone und warte bis der Source fertig geladen ist.
1 2 3 4 5 6 7 8 9 |
$ git clone -b 2.0 https://github.com/magento/magento2.git ./{VirtualHost}/ Cloning into './{VirtualHost}/'... remote: Counting objects: 937933, done. remote: Compressing objects: 100% (3505/3505), done. remote: Total 937933 (delta 2255), reused 0 (delta 0), pack-reused 933736 Receiving objects: 100% (937933/937933), 246.94 MiB | 487.00 KiB/s, done. Resolving deltas: 100% (525819/525819), done. Checking connectivity... done. Checking out files: 100% (22910/22910), done. |
In meinem Beispiel verwende ich -b 2.0 um den Source aus dem Release Branch zu kopieren. Ohne -b 2.0 wird der Source vom Develop Branch heruntergeladen welcher evt. noch untested Code enthält.
3.2 Installation starten
Nun kannst du mit der Installation beginnen. Bitte stelle sicher, dass du weiterhin als magento_user eingeloggt bist um Berechtigungsprobleme zu vermeiden.
1 |
$ cd /var/www/html/{VirtualHost}/ && composer install |
Composer wird Anhand der von Magento 2 mitgelieferten Datei composer.json diverse Abhängigkeiten überprüfen und gegebenenfalls die Installation mit detaillierten Fehlermeldungen abbrechen. Es lohnt zudem einen Blick in die Datei composer.json zu werfen um zu verstehen, was wahrend der Installation passiert.
Hier ein Beispiel für eine Fehlermeldung.
1 2 3 4 5 6 7 8 |
Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Your requirements could not be resolved to an installable set of packages. Problem 1 - The requested PHP extension ext-intl * is missing from your system. Install or enable PHP's intl extension. Problem 2 - The requested PHP extension ext-xsl * is missing from your system. Install or enable PHP's xsl extension. |
Je nach Server Setup kann es also sein, dass diverse PHP Erweiterungen manuell nachinstalliert werden müssen. Sind alle Abhängigkeiten auf dem Server installiert, kann die Installation mit dem Composer wiederholt werden. Die Installation sollte mit Generating autoload_files Erfolgreich enden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ composer install magento_user@hostname:/var/www/html/{VirtualHost}/$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) from lock file - Installing magento/magento-composer-installer (0.1.5) Downloading: 100% - Installing braintree/braintree_php (2.39.0) Downloading: 100% - Installing justinrainbow/json-schema (1.5.0) Downloading: 100% - Installing symfony/console (v2.6.11) Downloading: 100% .......... phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1) phpunit/phpunit suggests installing phpunit/php-invoker (~1.1) sjparkinson/static-review suggests installing sensiolabs/security-checker (Required for ComposerSecurityReview.) Generating autoload files magento_user@hostname:/var/www/html/{VirtualHost}/$ |
3.3 Setup starten
Um mit dem Setup zu beginnen, musst du nun die URL in deinem Browser aufrufen welche im VirtualHost definiert ist. Du solltest folgenden Screen sehen. Klicke auf Agree and Setup Magento um mit dem Installer fortzufahren.
3.3.1 Installer
Im Magento 2 Installer wird unter anderem die Datenbank hinzugefügt, sowie einige Standard Konfigurationen vorgenommen.
3.3.2 Readiness Check
Mit dem Readiness Check überprüft Magento 2 nochmals ob alle nötigen Erweiterungen installiert sind. Du solltest nur fortfahren wenn der Readiness Check erfolgreich ist.
3.3.3 Add Database
Falls du für deinen VirtualHost noch keine Datenbank erstellt hast, kannst du dies hier kurz nachholen.
1 2 3 4 5 |
$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 119 Server version: 5.5.46-0ubuntu0.14.04.2 (Ubuntu) |
Im folgendem Beispiel erstelle ich nur einen neuen Benutzer mit allen Berechtigungen sowie eine Date
1 2 3 4 5 6 7 8 9 10 11 |
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.01 sec) mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> create database username; Query OK, 1 row affected (0.00 sec) |
Anschliessend kannst du den neuen Benutzer
3.3.4 Web Configuration
In diesem Schritt wird die BaseURL sowie der Pfad zum Admin Panel festgelegt.
3.3.5 Customize Your Store
Hier kannst du die Standard Zeitzone, Währung sowie Sprache festlegen. Falls du dir nicht sicher bist, kannst du einfach fortfahren und die Anpassungen später vornehmen.
3.3.6 Create Admin Account
Erstelle einen Admin Account und stelle sicher, dass du das Passwort in Zukunft auch nicht vergisst.
3.3.6 Install
You’re ready! Super, du kannst nun mit der Installation fortfahren. Warte bitte bis die Installation abgeschlossen ist. Wird die Installation erfolgreich abgeschlossen, bekommst du im Anschluss eine Zusammenfassung. Dieses solltest du dir wenn möglich als PDF drucken, oder zumindest solltest du den Encryption Key sicher ablegen.
Fehlermeldungen, Verbesserungsvorschläge und Kritik bitte unten als Kommentar.