0 0 0

Magento auf Ubuntu 16.04 installieren

vom gridscale Team Apache CMS Ubuntu

Übersicht

Mit Magento 2 CE (Community Edition) ist es sehr einfach, seinen eigenen Online-Shop zu bauen. Es gibt unzählige Erweiterung und vorgefertigte Themes, die größtenteils auch kostenlos zu haben sind.

In diesem Beitrag beschreibe ich dir Schritt für Schritt, wie du deinen Server für Magento vorbereitest und anschließend die kostenlose Community Edition installierst.

Schaffe ein paar Vorraussetzungen

Erstelle dir bei einem Anbieter deiner Wahl einfach einen neuen Cloud-Server. Bei gridscale kannst du z.B. direkt ein entsprechendes Betriebssystem (Ubuntu 16.04. LTS oder Debian 8) auswählen und bist in 20 Sekunden startklar.

Melde dich auf deinem neuen Cloud Server per SSH als Benutzer-Root an und folge den nächsten Schritten.

Ich gehe mal davon aus, dass der Server noch komplett leer ist und fange daher bei den Grundlagen an. Je nachdem wie weit dein System schon vorkonfiguriert ist, kannst du die jeweiligen Schritte einfach überspringen.

Vor jeder Installation ist es empfehlenswert, den Server auf den neuesten Stand zu bringen. Bei gridscale ist dein Server nach der Installation bereits auf dem aktuellsten Stand, sollte das bei deinem Provider nicht der Fall sein, kannst du das mit folgendem Befehl nacholen:

$ sudo apt-get –y update && sudo apt-get –y upgrade

Schritt 1 – Installiere einen Webserver

Installiere erstmal Apache2 als Webserver:

$ sudo apt-get –y install apache2

Als nächstes konfiguriere deinen Apache noch. Dazu deaktiviere erstmal die default-config:

$ sudo a2dissite 000-default.conf

Als nächstes lege dir eine Config-Datei für unseren Online-Shop an. Dazu kannst du die Default-Config als Vorlage nehmen:

$ cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/magento.conf

Jetzt bearbeite die gerade erstellte Config wie folgt:

$ nano /etc/apache2/sites-available/magento.conf

Anstelle von Nano kannst du natürlich auch jeden anderen Editor benutzen.

Falls du bereits eine Domain für euren Shop besitzt und diese dem Server zugeordnet hast, trage diese an folgenden Stellen ein. Wenn du erstmal mit der IP arbeiten willst, dann ignoriert diesen Schritt, ich erkläre dir später, wie du die Domain auch nachträglich hinzufügen kannst:

<VirtualHost meinedomain.abc:80>
...
...
...
ServerName meinedomain.abc
ServerAlias www.meinedomain.abc

Jetzt lege das Root-Verzeichnis für unser Magento-System fest:

DocumentRoot /var/www/magento

Magento arbeitet mit mod_rewrite. Daher müssen wir noch folgenden Block in die Config mit einbauen:

<Directory /var/www/magento/>

Options Indexes FollowSymLinks MultiViews

AllowOverride All

</Directory>

Als nächstes benennst du noch die Log-Files um, so dass sich später leichter filtern lässt, welche Logs zu welcher Seite gehören.

ErrorLog ${APACHE_LOG_DIR}/error-magento.log
CostumLog ${APACHE_LOG_DIR}/access-magento.log combined

Hier ist die komplette Config:

<VirtualHost meiedomain.abc:80>

ServerName meinedomain.abc
ServerAlias www.meinedomain.abc
ServerAdmin webmaster@localhost
DocumentRoot /var/www/magento/

<Directory /var/www/magento/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error-magento.log
CustomLog ${APACHE_LOG_DIR}/access-magento.log combined
</VirtualHost>

Dann speichere alles ab. Unter Nano beendest du den Editor mit Strg+X auf die Frage, ob du das Dokument speichern willst antwortest du mit Y.

Jetzt nur noch die neu erstellte Config, mod_rewrite und SSL aktivieren:

$ sudo a2ensite magento.conf && sudo a2enmod SSL && sudo a2enmod rewrite

Apache ist damit bereits fertig. Für unser Magento System allerdings brauchst du noch ein bisschen mehr.

Schritt 2 – Datenbankserver

Für dieses Tutorial nutze ich MySQL, du kannst aber natürlich auch einen anderen Datenbankserver nehmen. Installieren lässt sich MySQL ganz bequem über apt-get.

$ sudo apt-get –y install mysql-server

Während der Installation wirst du nach einem Passwort gefragt. Dieses kann man zwar leer lassen, aber ich empfehle dir ein Passwort zu setzen.

Unter Debian und Ubuntu liefert dir das Paket ‚mysql-server‘ eine kleine Unterstützung mit, die dir erlaubt ganz einfach die Installation deines MySQL-Servers abzusichern. Führe dazu folgendes aus:

$ mysql_secure_installation

Du wirst nun nach deinem Kennwort für den MySQL-Administrator gefragt. Gebe das Kennwort ein bzw. lasse das Feld leer, wenn kein Kennwort gesetzt ist.

Nun wirst du durch ein paar Optionen geführt, um den MySQL -erver sicherer zu machen. Der Dialog sollte dem Folgenden sehr ähnlich sein:

$ mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n

... skipping.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y

... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y

... Success!

By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y

- Dropping test database...

ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
... Failed! Not critical, keep moving...
- Removing privileges on test database...

... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y

... Success!

Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

Schritt 3 – Erstelle eine Datenbank für Magento

Nun erstelle eine neue Datenbank für Magento. Dazu meldest du dich per Benutzer ‚root‘ auf deinem MySQL-Server an.

$ mysql -u root -p

Sofern du kein Kennwort gesetzt hast, lass den Parameter ‚-p‘ weg. Du solltest das MySQL prompt erhalten. Hier kannst du MySQL nun konfigurieren, neue Benutzer und Datenbanken anlegen und Rechte vergeben.

Also Datenbank anlegen:

$ create database magento;

Wenn du ein MySQL-Kommando abschickst, achte darauf, dass dieses mit einem ‚;‘ endet. Andernfalls erkennt MySQL nicht, dass du das Kommando zur Ausführung abgeschickt hast und wartet auf weitere Eingaben. Wenn du das ‚;‘ einmal vergessen solltest, tippe es einfach nachträglich in der neuen Zeile ein. MySQL baut daraus das richtige Kommando.

Nun solltest du noch einen eigenen Benutzer für die neue Datenbank anlegen. Ich benenne die Benutzer meistens identisch zur Datenbank, auf die ein Benutzer zugreifen soll. Du kannst dir aber auch einen anderen Benutzernamen ausdenken. Nachfolgend lege ich den Benutzer mit dem Kennwort ‚mein_passwort‘ an, am besten du ersetzt diesen String gegen ein sicheres Kennwort:

$ create user magento@localhost identified by 'mein_passwort';

Nun hast du einen Benutzer und eine Datenbank, aber es sind noch keine Rechte vergeben, damit der neue Benutzer auch auf die neue Datenbank zugreifen kann.

Am einfachsten ist es sicherlich, pauschal alle Berechtigungen für den Benutzer ‚magento‘ auf die Datenbank ‚magento‘ zuzuweisen. Das geht mit folgendem Kommando:

$ grant all privileges on magento.* to magento@localhost;

MySQL cached die Rechte, du musst MySQL also anweisen die Rechtetabellen neu einzulesen. Anschließend verlässt du das MySQL-Promt:

$ flush privileges;
$ exit;

Das war es auch schon, weiter geht es mit dem nächsten Schritt.

Schritt 4 – PHP installieren

PHP installierst du ebenfalls schnell über apt-get und dazu außerdem noch einige Erweiterungen, die Magento voraussetzt. Mit folgendem Befehl installierst du alle benötigten Module auf einmal:

$ sudo apt-get -y install php libapache2-mod-php php-curl php-mcrypt php-intl php-mbstring php-common php-zip php-gd php-xml php-mysql

Anschließend starte den Apache einmal neu:

$ sudo service apache2 restart

Schritt 5 – Magento installieren

Um Magento zu installieren, musst du dich einmal auf der offiziellen Magento-Seite Magento.com registrieren. Den Login brauchst du auch später, um Zugriff auf die Plug-Ins zu bekommen.

Nachdem du dich auf Magento.com registriert hast, gelangst du über den Reiter „Products & Solutions“ in der oberen Menüleiste auf „Products“ -> „Community Edition“ und anschließend auf „Download Now“. Für deine Server brauchst du die aktuellste Version der „Full Release (ZIP with no sample data)“. Bei „Select your format“ empfehle ich die „Magento Community Edition 2.*.*.tar.gz“.

Entpacke die Datei nun in das Verzeichnis /var/www/magento/:

$ tar -xzf magento-CE-2.*.*-****-**-**-**-**-**.tar.gz -C /var/www/

Kleiner Tipp: Schreibt den Anfang des Dateinamens, z.B. „magen“ und nutzt mit der Tab-Taste die Autovervollständigung. Damit ersparst du dir das ausschreiben des langen Dateinamens.

Anschließend musst du den gerade erstellten Ordner nur noch umbenennen:

$ mv /var/www/ magento-CE-2.*.*-****-**-**-**-**-**.tar.gz /var/www/magento

Jetzt nur noch die richtigen Berechtigungen für die Ordner festlegen. Dazu folgende Befehle nacheinader ausführen:

$ chown www-data:www-data –R /var/www/magento/*

$ cd /var/www/magento

$ find var vendor pub/static pub/media app/etc -type f -exec chmod g+w {} \;

$ find var vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} \;

$ chmod u+x bin/magento

Schritt 6 – Magento einrichten

Ruft in eurem Browser jetzt euren neuen Server auf http://IP-oder-Domain/setup

Wenn alles geklappt hat, solltest du jetzt etwas in diese Richtung sehen:

magento_einrichten

Nach klicken auf „Agree and Setup Magento“ kommst du zum Readiness-Check, wenn du alle Schritte befolgt habt, sollte dieser wie folgt aussehen:

magento_einrichten_1

Nach klicken auf „Next“ kannst du im nächsten Schritt deine Datenbank Infos wie folgt eingeben:

magento_einrichten_2

Anschließend klickst du wieder auf „Next“ und richtest deine Webadressen an. Falls du eine Domain für deinen Server hast, gebe hier diese statt der IP an:

magento_einrichten_3

ACHTUNG! Um HTTPS nutzen zu können ist eine Domain und ein gültiges Zertifikat notwendig. Wie ihr kostenlos an ein anerkanntes Zertifikat kommt, zeigen wir euch hier.

Im nächsten Schritt legst du deine Zeitzone, Währung und Sprache fest. Anschließend wieder auf „Next“:

magento_einrichten_5

Nun wird es Zeit für deinen Admin-Account. Gebe hier deine Daten an und klicke dann wieder auf „Next“.

Jetzt bist du bereit deine Installation abzuschließen. Die eigentliche Installation kann je nach Leistung des Servers einige Zeit dauern. Auf der letzten Seite der Installation werden dir wichtige Informationen, wie zum Beispiel der Encryption-Key, mitgeteilt. Mache dir am besten einen Screenshot oder speichert den Inhalt der Seite irgendwo ab. Bewahre die Information auf jeden Fall auf.

Sobald die Installation abgeschlossen ist, steht euch euer Magento-Shop zur Verfügung. Damit er richtig funktioniert, musst du nur noch die Cron Jobs erstellen.

Für den nächsten Schritt wechsle wieder auf die SSH Konsole.

Schritt 7 – Cron Jobs einrichten

Um die Cron Jobs zu erstellen wechsle in den Crontab:

$ crontab -u www-data -e

Beim ersten Öffnen vom Crontab wirst du gefragt, welchen Editor du nehmen willst. Ich empfehle hier wieder Nano [2] zu nehmen.

Kopiere den folgenden Code ans Ende der Datei und speichere diese dann ab. Denk bitte dran, dass der Magento-Pfad hier eventuell angepasst werden muss:

* * * * * /usr/bin/php /var/www/magento/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/magento/update/cron.php >> /var/www/magento/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/magento/bin/magento setup:cron:run >> /var/www/magento/var/log/setup.cron.log

Anschließend führst du die Cron Jobs gleich zweimal aus, beim ersten Mal indexiert Magento alles und beim zweiten Mal fängt Magento an den Cache aufzubauen. Keine Sorge, das ist nur beim allerersten Mal so:

$ /var/www/magento/bin/magento cron:run && /var/www/magento/bin/magento cron:run

Jetzt solltest du folgende Ausgabe sehen:

Ran jobs by schedule.
Ran jobs by schedule.

Sollte das nicht der Fall sein, überprüfe bitte noch einmal, ob du überall den Pfad richtig angegeben hast.

Als nächstes wechsle das erste Mal in das Magento-Backend. Hierzu rufst du den während der Installation festgelegten Pfad auf:

http://185.102.***.***/admin_******

Nach dem du Dich eingeloggt hast, bekommst du oben eine Leiste mit einer Fehlermeldung.

One or more of the Cache Types are invalidated: Page Cache. Please go to Cache Management and refresh cache types. System Messages: 1

Einfach direkt auf Cache Managment klicken und einen Refresh des Caches machen.

Magento ist jetzt einsatzbereit. Klicke dich durch die einzelnen Einstellungen und richte deinen Online-Shop ein.

Wie du deinen Online-Shop noch sicherer machen kannst und ihn mit einem kostenlosen SSL-Zertifikat ausstatten kannst, zeigen ich dir hier.

Schade, dass dir der Artikel nicht gefallen hat.
Was sollten wir deiner Meinung nach besser machen?

Vielen Dank für dein Feedback!
Wir melden uns bei dir, sobald der Artikel zu deinem Wunschthema fertig ist.

Übrigens: kennst du schon unser Tutorial zum Thema Installiere Rancher v1.3 auf Ubuntu 16.04?