Magento ist ein Open-Source-Shop (E-Commerce-Software) und Content-Management-System für E-Commerce-Websites auf Basis des PHP Zend Framework. Magento wendet die Konventionen der objektorientierten Programmierung und der MVC-Architektur (Model-View-Controller) an und verwendet MySQL/MariaDB als Datenbank. Die entwickelte Software wurde 2008 von Varien Inc. gestartet. In den vergangenen Jahren hat sich Magento zu einer vertrauenswürdigen Plattform für E-Commerce-Software entwickelt, die Online-Unternehmen auf der ganzen Welt antreibt.
In diesem Tutorial werde ich Sie durch die Installation von Magento 2.1 führen. Wir werden Magento 2.1 mit Nginx und Php7.0-fpm und MySQL als Datenbank installieren. Zu diesem Zweck werde ich einen CentOS 7-Server mit aktiviertem SELinux verwenden.
Schritt 1 – Nginx installieren
In diesem Schritt installieren wir Nginx aus dem Epel-Repository. Epel ist standardmäßig nicht verfügbar, daher müssen wir das Epel-Repository installieren, bevor wir Nginx installieren.
Installieren Sie das Epel-Repository mit diesem yum-Befehl.
yum -y install epel-release
Jetzt können wir Nginx aus dem Epel-Repository installieren.
yum -y install nginx
Nachdem die Installation abgeschlossen ist, starten Sie Nginx und fügen Sie es hinzu, um es beim Booten zu starten.
systemctl start nginx
systemctl enable nginx
Nginx wird auf Port 80 gestartet, Sie können dies mit dem netstat-Befehl unten überprüfen.
netstat -plntu
Falls Sie das Ergebnis 'Befehl nicht gefunden' sehen, können Sie Net-Tools wie dieses installieren.
yum -y install net-tools
Schritt 2 – PHP-FPM installieren und konfigurieren
In diesem Tutorial verwenden wir PHP-FPM 7 für die Magento-Installation. Ich werde PHP 7-Pakete aus dem Webtatic-Repository verwenden.
Laden Sie ein neues webtatic-Repository herunter und fügen Sie es dem System hinzu.
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Führen Sie nun den folgenden Befehl aus, um PHP-FPM7 mit allen Paketen und Erweiterungen zu installieren, die für die Magento-Installation benötigt werden.
yum -y install php70w-fpm php70w-mcrypt php70w-curl php70w-cli php70w-mysql php70w-gd php70w-xsl php70w-json php70w-intl php70w-pear php70w-devel php70w-mbstring php70w-zip php70w-soap
Wenn eine PHP-FPM7-Installation abgeschlossen ist, müssen wir sie konfigurieren. Wir werden die php.ini-Datei und die php-fpm-Konfigurationsdatei 'www.conf' konfigurieren.
Bearbeiten Sie php.ini mit vim.
vim /etc/php.ini
Entkommentieren Sie die cgi.fix_pathinfo-Zeile 762 und ändern Sie den Wert auf 0.
cgi.fix_pathinfo=0
Konfigurieren Sie das Speicherlimit, die maximale Ausführungszeit und aktivieren Sie die zlib-Ausgabekomprimierung. Stellen Sie sicher, dass Sie die Werte wie unten gezeigt einstellen.
memory_limit = 512M
max_execution_time = 1800
zlib.output_compression = On
Kommentieren Sie das Sitzungspfadverzeichnis aus und ändern Sie das Verzeichnis wie folgt.
session.save_path = "/var/lib/php/session"
Speichern und beenden.
Bearbeiten Sie als Nächstes die php-fpm-Konfigurationsdatei www.conf mit dem Befehl vim.
vim /etc/php-fpm.d/www.conf
PHP-FPM7 wird unter dem Benutzer und der Gruppe „nginx“ ausgeführt. Ändern Sie den Wert für die Benutzer- und Gruppenzeilen in „nginx“.
user = nginx
group = nginx
Wir werden php-fpm unter einer Socket-Datei ausführen, nicht unter einem Serverport. Ändern Sie den Wert der listen-Zeile in den Pfad der Socket-Datei.
listen = /var/run/php/php-fpm.sock
Die Socket-Datei muss dem Benutzer und der Gruppe „nginx“ gehören, kommentieren Sie die listen-Zeilen aus und ändern Sie die Werte wie unten gezeigt.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Entkommentieren Sie abschließend die PHP-FPM-Umgebungszeilen 366-370.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Speichern und beenden.
Erstellen Sie als Nächstes ein neues Verzeichnis für den Sitzungspfad und den Speicherort der PHP-Sockendatei. Ändern Sie dann den Eigentümer in den Benutzer und die Gruppe „nginx“.
Erstellen Sie ein neues Verzeichnis für den Sitzungspfad.
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Erstellen Sie ein neues Verzeichnis für den Speicherort der php-fpm-Socket-Datei.
mkdir -p /run/php/
chown -R nginx:nginx /run/php/
Die PHP-FPM7-Konfiguration ist abgeschlossen, starten Sie jetzt den Daemon und aktivieren Sie ihn mit dem folgenden systemctl-Befehl, damit er beim Booten startet.
systemctl start php-fpm
systemctl enable php-fpm
Wenn keine Fehler vorhanden sind, können Sie den folgenden Befehl verwenden, um zu überprüfen, ob php-fpm unter der Socket-Datei ausgeführt wird.
netstat -pl | grep php-fpm.sock
Schritt 3 – MySQL 5.7 Server installieren
Magento 2.1 setzt eine aktuelle MySQL-Version voraus, für die Installation können Sie MySQL 5.6 oder 5.7 verwenden. In diesem Tutorial verwenden wir MySQL 5.7, das aus dem offiziellen MySQL-Repository installiert werden kann. Also müssen wir zuerst das neue MySQL-Repository hinzufügen.
Laden Sie das neue MySQL-Repository für die Installation von MySQL 5.7 herunter und fügen Sie es hinzu.
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Installieren Sie nun MySQL 5.7 aus dem MySQL-Repository mit dem folgenden Befehl yum.
yum install mysql-community-server
Wenn die Installation abgeschlossen ist, starten Sie mysql und fügen Sie es hinzu, um beim Booten zu starten.
systemctl start mysqld
systemctl enable mysqld
MySQL 5.7 wurde mit einem Standard-Root-Passwort installiert, das in der Datei mysqld.log gespeichert ist. Verwenden Sie den Befehl grep, um das Standardkennwort für MySQL 5.7 anzuzeigen. Führen Sie den folgenden Befehl aus.
grep 'temporary' /var/log/mysqld.log
Jetzt sehen Sie das aktuelle MySQL-Root-Passwort, Sie sollten das Standardpasswort ändern.
Verbinden Sie sich mit dem Benutzer root und dem Standardpasswort mit der MySQL-Shell.
mysql -u root -p
TYPE DEFAULT PASSWORD
Ändern Sie das Standard-Root-Passwort mit der folgenden Abfrage. Ich werde hier das neue Passwort „[email protected]“ verwenden. Bitte wählen Sie ein sicheres Passwort.
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]';
flush privileges;
Das standardmäßige MySQL-Root-Passwort wurde geändert. Als nächstes müssen wir einen neuen Benutzer und eine neue Datenbank für die Magento-Installation erstellen.
Wir erstellen eine neue Datenbank mit dem Namen „magentodb“ und einen neuen Benutzer „magentouser“ mit dem Passwort „[email protected]“. Gewähren Sie dann dem neuen Benutzer alle Rechte der Datenbank. Führen Sie die Mysql-Abfrage unten aus.
create database magentodb;
create user [email protected] identified by '[email protected]';
grant all privileges on magentodb.* to [email protected] identified by '[email protected]';
flush privileges;
Die Installation und Konfiguration von MySQL 5.7 ist abgeschlossen und eine Datenbank für die Magento-Installation wurde erstellt.
Schritt 4 Magento installieren und konfigurieren
In diesem Schritt beginnen wir mit der Installation und Konfiguration von Magento. Für das Web-Root-Verzeichnis verwenden wir das Verzeichnis ‚/var/www/magento2‘. Wir benötigen PHP Composer für die Installation des Magento-Pakets.
Installieren Sie PHP Composer
Wir werden Composer für die Installation von PHP-Paketabhängigkeiten verwenden. Installieren Sie Composer mit dem folgenden Curl-Befehl.
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
Wenn die Installation abgeschlossen ist, können Sie die Composer-Version wie unten gezeigt überprüfen.
composer -v
PHP Composer wurde installiert.
Magento herunterladen und extrahieren
Gehen Sie in das Verzeichnis ‚/var/www‘ und laden Sie den Magento-Code mit dem Befehl wget herunter.
cd /var/www/
wget https://github.com/magento/magento2/archive/2.1.zip
Unzip installieren mit yum.
yum -y install unzip
Extrahieren Sie den Magento-Code und benennen Sie das Verzeichnis in das Verzeichnis „magento2“ um.
unzip 2.1.zip
mv magento2-2.1 magento2
Installieren Sie PHP-Abhängigkeiten
Wechseln Sie in das Verzeichnis magento2 und installieren Sie alle Magento-Abhängigkeiten mit dem Composer-Befehl.
cd magento2
composer install -v
Warten Sie, bis die Installation der PHP-Abhängigkeit abgeschlossen ist.
Konfigurieren Sie den virtuellen Magento-Host
Wechseln Sie in das Nginx-Verzeichnis und erstellen Sie eine neue virtuelle Host-Konfigurationsdatei mit dem Namen „magento.conf“ im Verzeichnis „conf.d“.
cd /etc/nginx/
vim conf.d/magento.conf
Fügen Sie die Konfiguration des virtuellen Hosts unten ein.
upstream fastcgi_backend {
server unix:/run/php/php-fpm.sock;
}
server {
listen 80;
server_name magento.hakase-labs.com;
set $MAGE_ROOT /var/www/magento2;
set $MAGE_MODE developer;
include /var/www/magento2/nginx.conf.sample;
}
Speichern und beenden.
Testen Sie nun die Konfiguration. Wenn kein Fehler auftritt, starten Sie den Nginx-Dienst neu.
nginx -t
systemctl restart nginx
Installieren Sie Magento 2.1
Wechseln Sie in das Verzeichnis magento2, um Magento über die Befehlszeile zu installieren.
cd /var/www/magento2
Führen Sie den folgenden Befehl aus und stellen Sie sicher, dass Sie die richtige Konfiguration haben. Die Werte, die von Ihnen geändert werden müssen, werden unten erklärt.
bin/magento setup:install --backend-frontname="adminlogin" \
--key="biY8vdWx4w8KV5Q59380Fejy36l6ssUb" \
--db-host="localhost" \
--db-name="magentodb" \
--db-user="magentouser" \
--db-password="[email protected]" \
--language="en_US" \
--currency="USD" \
--timezone="America/New_York" \
--use-rewrites=1 \
--use-secure=0 \
--base-url="http://magento.hakase-labs.com" \
--base-url-secure="https://magento.hakase-labs.com" \
--admin-user=adminuser \
[email protected] \
[email protected] \
--admin-firstname=admin \
--admin-lastname=user \
--cleanup-database
Wert ändern für:
- --backend-frontname:Magento-Admin-Anmeldeseite „adminlogin“
- --key:eigenen Schlüssel generieren
- --db-host:Datenbankhost localhost
- --db-name:Datenbankname ‚magentodb‘
- --db-user:Datenbankbenutzer „magentouser“
- --db-password:Datenbankpasswort „[email protected]“
- --base-url:Magento-URL
- --admin-user:Ihr Admin-Benutzer
- --admin-password:Ihr Magento-Admin-Passwort
- --admin-email:Ihre E-Mail-Adresse
Wenn Sie keinen Fehler im Befehl haben, werden die Ergebnisse unten angezeigt.
Magento 2.1 ist installiert. Führen Sie den folgenden Befehl aus, um die Berechtigung für das etc-Verzeichnis zu ändern und den Besitzer des magento2-Verzeichnisses auf den Benutzer „nginx“ zu ändern.
chmod 700 /var/www/magento2/app/etc
chown -R nginx:nginx /var/www/magento2
Magento Cron konfigurieren
Dieser Cronjob wird für den Magento Indexer benötigt. Erstellen Sie einen neuen Cronjob als 'nginx'-Benutzer (weil Magento unter nginx-Benutzer und -Gruppe läuft).
crontab -u nginx -e
Fügen Sie die Konfiguration unten ein.
* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/magento2/update/cron.php >> /var/www/magento2/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/magento2/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.log
Speichern und beenden.
Schritt 5 – Konfigurieren Sie SELinux und Firewalld
In diesem Tutorial belassen wir SELinux im Modus „Enforcing“. Führen Sie die folgenden Befehle aus, um den SELinux-Status zu überprüfen.
sestatus
SELinux befindet sich im 'Enforcing'-Modus.
Installieren Sie das SELinux-Verwaltungstool „policycoreutils-python“ mit dem folgenden Befehl yum.
yum -y install policycoreutils-python
Wechseln Sie in das Verzeichnis „/var/www/“.
cd /var/www/
Führen Sie die folgenden Befehle aus, um den Sicherheitskontext für die Magento-Dateien und -Verzeichnisse zu ändern.
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/app/etc(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/var(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/media(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/static(/.*)?'
restorecon -Rv '/var/www/magento2/'
Die SELinux-Konfiguration ist abgeschlossen. Jetzt müssen wir firewalld konfigurieren.
Installieren Sie das Firewalld-Paket, wenn Sie es noch nicht auf Ihrem Server haben.
yum -y install firewalld
Starten Sie die Firewall und fügen Sie firewalld hinzu, um beim Booten zu starten.
systemctl start firewalld
systemctl enable firewalld
Öffnen Sie die Ports für HTTP und HTTPS, damit wir über einen Webbrowser auf die Magento-URL zugreifen können.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Zeigen Sie die offenen Ports für Dienste mit dem folgenden Befehl an.
firewall-cmd --list-all
HTTP und HTTPS sind bereit für Verbindungen.
Schritt 6 – Testen
Öffnen Sie Ihren Webbrowser und durchsuchen Sie die Magento-URL. Meine ist:
magento.hakase-labs.com
Und Sie sehen die Standard-Startseite von Magento.
Melden Sie sich als Nächstes beim Admin-Dashboard an, indem Sie die Admin-Login-URL öffnen.
magento.hakase-labs.com/adminlogin
Melden Sie sich mit Ihrem Admin-Benutzer und Passwort an.
Magento-Admin-Dashboard.
Magento 2.1 wurde erfolgreich mit Nginx, PHP-FPM7 und MySQL 5.7 auf einem CentOS 7-Server installiert.