So installierst du Magento eCommerce auf Ubuntu 22.04 mit Nginx und Elasticsearch

Magento ist eine Open-Source-E-Commerce-Plattform, die in PHP geschrieben wurde. Sie wurde 2018 von Adobe übernommen und wurde in Adobe eCommerce umbenannt. Sie wird auch als kommerzielles und cloudbasiertes Produkt angeboten. Mit Magento kannst du professionelle Shopping-Websites mit hoher Kapazität erstellen. Es bietet sowohl einen Single-Store- als auch einen Multiple-Store-Modus. Es wird mit vielen Modulen geliefert, mit denen du seine Funktionalität erweitern kannst.

In diesem Lernprogramm werden wir die Open-Source-Community-Edition von Magento installieren. Sie bietet alle Funktionen, die du für die Einrichtung eines professionellen Online-Shops brauchst. Außerdem installieren wir Elasticsearch für die Suche im Produktkatalog, Redis für den Sitzungs- und Dateicache und nutzen den Nginx-Server.

Voraussetzungen

  • Ein Server mit Ubuntu 22.04 und mindestens 2 GB RAM. Je nach deinen Anforderungen benötigst du eventuell mehr RAM.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Ein vollständig qualifizierter Domainname (FQDN) für den Server, magento.example.com
  • Stelle sicher, dass alles auf dem neuesten Stand ist.
    $ sudo apt update
    $ sudo apt upgrade
    
  • Einige wenige Pakete, die dein System benötigt.
    $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    

    Einige dieser Pakete sind vielleicht schon auf deinem System installiert.

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) ausgeliefert.

Überprüfe, ob die Firewall läuft.

$ sudo ufw status

Du solltest die folgende Ausgabe erhalten.

Status: inactive

Erlaube den SSH-Port, damit die Firewall die aktuelle Verbindung nicht unterbricht, wenn du sie aktivierst.

$ sudo ufw allow OpenSSH

Lasse auch HTTP- und HTTPS-Ports zu.

$ sudo ufw allow http
$ sudo ufw allow https

Aktiviere die Firewall

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Überprüfe den Status der Firewall erneut.

$ sudo ufw status

Du solltest eine ähnliche Ausgabe sehen.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Schritt 2 – Installiere PHP und seine Erweiterungen

Ubuntu 22.04 wird mit der Version PHP 8.1.2 ausgeliefert, die ein wenig veraltet ist. Wir werden die neueste Version von PHP 8.2 mit Hilfe von Ondrejs PHP-Repository installieren.

$ sudo add-apt-repository ppa:ondrej/php

Als Nächstes installierst du PHP und die von Magento benötigten Erweiterungen.

$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap php8.2-xsl libsodium-dev libsodium23 libssl-dev libcurl14-openssl-dev

Überprüfe die Installation.

$ php --version
PHP 8.2.5 (cli) (built: Apr 14 2023 04:27:02) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.5, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.5, Copyright (c), by Zend Technologies

Schritt 3 – Installiere Composer

Composer ist ein Tool zur Verwaltung von Abhängigkeiten für PHP und wird für die Installation von Magento benötigt.

Führe die folgenden Befehle aus, um das Composer-Binary herunterzuladen. Magento benötigt Composer 2.2 LTS, daher haben wir den Befehl entsprechend angepasst.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"

Installiere Composer, indem du das Binary in das Verzeichnis /usr/local/bin verschiebst.

$ sudo mv composer.phar /usr/local/bin/composer

Überprüfe die Installation, indem du die Version überprüfst.

$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40

Schritt 4 – Installiere MySQL

Ubuntu 22.04 wird mit der neuesten Version von MySQL ausgeliefert. Du kannst sie mit einem einzigen Befehl installieren.

$ sudo apt install mysql-server

Überprüfe die Version von MySQL.

$ mysql --version
mysql  Ver 8.0.33-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

Dieser Schritt ist für die MySQL-Versionen 8.0.28 und höher notwendig. Rufe die MySQL-Shell auf.

$ sudo mysql

Führe den folgenden Befehl aus, um das Passwort für deinen Root-Benutzer festzulegen. Achte darauf, dass es eine Mischung aus Zahlen, Groß- und Kleinbuchstaben und Sonderzeichen enthält.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Beende die Shell.

mysql> exit

Führe das Skript für die sichere Installation von MySQL aus.

$ sudo mysql_secure_installation

Zuerst wirst du nach deinem Root-Passwort gefragt. Gib es ein. Als Nächstes wirst du aufgefordert, die Validate Password Component zu installieren. Sie prüft die Stärke der in MySQL verwendeten Passwörter. Drücke Y, um sie zu installieren. Als Nächstes wirst du aufgefordert, die Stufe der Passwortvalidierung festzulegen. Wähle 2, da dies die stärkste Stufe ist.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 100

Gib N ein, um die Änderung deines Root-Passworts abzulehnen. Gib außerdem Y ein, um anonyme Benutzer zu entfernen, Remote-Root-Logins zu verbieten, die Testdatenbank zu entfernen und die Berechtigungstabellen neu zu laden.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - 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? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Schritt 5 – MySQL konfigurieren

Melde dich in der MySQL-Shell an. Gib dein Root-Passwort ein, wenn du dazu aufgefordert wirst.

$ sudo mysql -u root -p

Erstelle eine Datenbank für Magento.

mysql> CREATE DATABASE magento;

Erstelle ein SQL-Benutzerkonto.

mysql> CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'Your_password2';

Erteile dem Benutzer alle Rechte für die Datenbank.

mysql> GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';

Lösche die Benutzerrechte.

mysql> FLUSH PRIVILEGES;

Beende die Shell.

mysql> exit

Schritt 6 – Nginx installieren

Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.

Importiere den Signierschlüssel von Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Füge das Repository für die stabile Version von Nginx hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Aktualisiere die System-Repositories.

$ sudo apt update

Installiere Nginx.

$ sudo apt install nginx

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.24.0

Starte den Nginx-Server.

$ sudo systemctl start nginx

Schritt 7 – SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu erstellen. Du kannst Certbot entweder über das Repository von Ubuntu installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.

Bei Ubuntu 22.04 ist Snapd standardmäßig installiert. Führe die folgenden Befehle aus, um sicherzustellen, dass deine Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Installiere Certbot.

$ sudo snap install --classic certbot

Verwende den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link zum Verzeichnis /usr/bin erstellst.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d magento.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/magento.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Überprüfe den Certbot Erneuerungszeitplanungsdienst.

$ sudo systemctl list-timers

Du findest snap.certbot.renew.service als einen der Dienste, die für die Ausführung vorgesehen sind.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-02-26 06:32:00 UTC 9h left       Sat 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left       Sat 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left      Sat 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Führe einen Probelauf des Prozesses durch, um zu prüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, bist du bereit. Dein Zertifikat wird automatisch erneuert.

Schritt 8 – Installiere Elasticsearch

Elasticsearch wird von Magento für die Produktsuche verwendet. Wir werden Elasticsearch 7.x über das offizielle Repository installieren, da diese Version mit Magento kompatibel ist.

Importiere den GPG-Schlüssel von Elasticsearch.

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

Füge das Elasticsearch-Repository hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

Aktualisiere die Repository-Liste des Systems.

$ sudo apt update

Installiere Elasticsearch.

$ sudo apt install elasticsearch

Elasticsearch verbraucht viel Speicher. Du musst seine Nutzung je nach Größe deines Servers begrenzen. Erstelle die Datei /etc/elasticsearch/jvm.options.d/memory.options und öffne sie zur Bearbeitung.

$ sudo nano /etc/elasticsearch/jvm.options.d/memory.options

Füge den folgenden Code darin ein.

-Xms1g
-Xmx1g

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Damit wird Elasticsearch so konfiguriert, dass es 1 GB RAM verwendet. Du kannst bei Bedarf jeden beliebigen Wert verwenden.

Starte und aktiviere den Dienst.

$ sudo systemctl enable elasticsearch --now

Überprüfe, ob Elasticsearch funktioniert.

$ curl http://localhost:9200

Du solltest die folgende Ausgabe sehen.

{
  "name" : "magento",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "6yks8tZ6T4GskIwWoXuSLA",
  "version" : {
    "number" : "7.17.10",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "fecd68e3150eda0c307ab9a9d7557f5d5fd71349",
    "build_date" : "2023-04-23T05:33:18.138275597Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Schritt 9 – Redis-Server installieren

Magento verwendet Redis für die Sitzungs- und Cache-Speicherung. Es ist völlig optional und du kannst auch die Datenbank für die Sitzungsspeicherung verwenden. Aber Redis macht einen besseren Job. Die neueste Version von Magento arbeitet mit Redis 7.0. Ubuntu wird mit Redis 6.0 ausgeliefert, also werden wir das Redis-Repository für die Installation verwenden.

Importiere den offiziellen Redis GPG-Schlüssel.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Füge das APT-Repository zu deiner Quellenliste hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Aktualisiere die Liste der System-Repositorys.

$ sudo apt update

Gib den folgenden Befehl ein, um den Redis-Server zu installieren.

$ sudo apt install redis

Bestätige die Redis-Version.

$ redis-server -v
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9

Überprüfe die Verbindung zum Dienst mit dem folgenden Befehl.

$ redis-cli

Du wirst auf die Redis-Shell umgeschaltet.

Der erste Schritt besteht darin, das Passwort für den Redis-Standardbenutzer festzulegen. Ersetze Your_Redis_Password durch ein sicheres Passwort deiner Wahl. Achte darauf, dass du dem Passwort das Zeichen > voranstellst.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Teste die Redis-Authentifizierung.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

Pinge den Dienst an.

127.0.0.1:6379> ping
PONG

Beende den Dienst, indem du exit eingibst.

Schritt 10 – Magento herunterladen

Erstelle ein Web-Root-Verzeichnis für Magento.

$ sudo mkdir /var/www/magento -p

Gib dem aktuellen Benutzer die Rechte für das Magento-Verzeichnis.

$ sudo chown $USER:$USER /var/www/magento/ -R

Wechsle in das Verzeichnis /var/www.

$ cd /var/www

Bevor wir weitermachen, brauchst du die Authentifizierungsschlüssel, die für das Magento-Repository erforderlich sind. Besuche die Website https://account.magento.com/ und du wirst auf der folgenden Seite aufgefordert, dich mit deiner Adobe ID anzumelden.

Adobe ID Anmeldeseite

Klicke auf die Schaltfläche Mit Adobe ID anmelden, um auf die folgende Seite zu gelangen.

Magento Adobe Login Seite

Wenn du eine Adobe ID hast, gib deine Anmeldedaten ein, um fortzufahren, oder du kannst hier ein Konto erstellen. Sobald du dein Konto erstellt und dich eingeloggt hast, öffne die URL https://marketplace.magento.com/customer/accessKeys/. Du kannst diese Seite auch aufrufen, indem du dein Profil aufrufst und auf den Link Zugangsschlüssel klickst.

Adobe Magento Profil Zugriffsschlüssel Seite

Klicke auf die Schaltfläche Einen neuen Zugangsschlüssel erstellen, um deinen Authentifizierungsschlüssel zu erstellen. Gib deinem Schlüssel einen Namen zur Identifizierung.

Magento Access Keys

Notiere dir sowohl den öffentlichen als auch den privaten Schlüssel für den nächsten Schritt.

Erstelle das Magento-Projekt.

$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento

Du wirst nach dem Benutzernamen und dem Passwort für das Repository gefragt. Verwende den öffentlichen Schlüssel als Benutzernamen und den privaten Schlüssel als Passwort. Du wirst gefragt, ob du die Anmeldedaten im Konfigurationsverzeichnis des Composers speichern möchtest. Gib y ein, um dies zu tun.

Creating a "magento/project-community-edition" project at "./magento"
    Authentication required (repo.magento.com):
      Username: 53211xxxxxxxxxxxxxxxxxxxxxxxxxxx
      Password:
Do you want to store credentials for repo.magento.com in /home/navjot/.config/composer/auth.json ? [Yn] y
Installing magento/project-community-edition (2.4.6)
  - Downloading magento/project-community-edition (2.4.6)
  - Installing magento/project-community-edition (2.4.6): Extracting archive
Created project in /var/www/magento
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 564 installs, 0 updates, 0 removals
  - Locking 2tvenom/cborencode (1.0.2)
  - Locking adobe-commerce/adobe-ims-metapackage (2.2.0)
...............................................

Führe die folgenden Befehle aus, um die Dateiberechtigungen festzulegen und die Magento-Binärdatei ausführbar zu machen. Setze außerdem den Besitzer des Magento-Verzeichnisses auf den Nginx-Benutzer, damit dieser auf die Website zugreifen kann.

$ cd /var/www/magento/
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
$ sudo chmod u+x bin/magento

Schritt 11 – Magento installieren

Vergewissere dich, dass du dich im Magento-Verzeichnis befindest.

$ cd /var/www/magento

Führe den folgenden Befehl aus, um Magento zu installieren.

$ bin/magento setup:install \
--base-url=http://magento.example.com \
--use-secure=1 \
--base-url-secure=https://magento.example.com \
--use-secure-admin=1 \
--db-host=localhost \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
--admin-email=navjot@example.com \
--admin-user=navjot \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=http://127.0.0.1 \
--elasticsearch-port=9200 \
--session-save=redis \
--session-save-redis-db=0 \
--session-save-redis-password=redis_password \
--cache-backend=redis \
--cache-backend-redis-db=2 \
--cache-backend-redis-password=redis_password \
--page-cache=redis \
--page-cache-redis-db=4 \
--page-cache-redis-password=redis_password

Sobald der Vorgang abgeschlossen ist, erhältst du eine ähnliche Ausgabe.

.......
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_19uadb
Nothing to import.

Notiere dir die Admin URI, die du später für den Zugriff auf das Administrationspanel brauchst.

Erstelle Magento Cron-Jobs.

$ php bin/magento cron:install

Überprüfe den Cron-Job.

$ crontab -l

Du solltest die folgende Ausgabe sehen.

#~ MAGENTO START d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c
* * * * * /usr/bin/php8.2 /var/www/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/magento/var/log/magento.cron.log
#~ MAGENTO END d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c

Schritt 12 – PHP-FPM konfigurieren

Öffne die Datei /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Wir müssen den Unix-Benutzer/die Unix-Gruppe der PHP-Prozesse auf nginx setzen. Finde die Zeilen user=www-data und group=www-data in der Datei und ändere sie in nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Finde die Zeilen listen.owner = www-data und listen.group = www-data in der Datei und ändere sie in nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Erhöhe die Ausführungszeit für PHP-FPM und PHP-CLI auf 180 Sekunden.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/cli/php.ini

Erhöhe das Speicherlimit für PHP-FPM von 128 MB auf 256 MB. Du kannst das Limit je nach Größe deines Servers und deinen Anforderungen erhöhen.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini

Magento setzt das Dateigrößenlimit für die Medienbibliothek standardmäßig auf 2 MB. Führe die folgenden Befehle aus, um die Dateigrößenbegrenzung auf 25 MB zu erhöhen.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php/8.2/fpm/php.ini

Schalte die Zlib-Komprimierung ein.

$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php/8.2/fpm/php.ini

Starte den PHP-FPM-Dienst neu.

$ sudo systemctl restart php8.2-fpm

Ändere die Gruppe des PHP-Sessions-Verzeichnisses auf Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Schritt 13 – Nginx konfigurieren

Öffne die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size  64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Erstelle und öffne die Datei /etc/nginx/conf.d/magento.conf zum Bearbeiten.

$ sudo nano /etc/nginx/conf.d/magento.conf

Füge den folgenden Code in die Datei ein.

upstream fastcgi_backend {
  server  unix:/run/php/php8.2-fpm.sock;
}

server {
  # Redirect any http requests to https
  listen 80;
  listen [::]:80;
  server_name magento.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name magento.example.com;

  set $MAGE_ROOT /var/www/magento;
  include /var/www/magento/nginx.conf.sample;
  client_max_body_size 25m;

  access_log /var/log/nginx/magento.access.log;
  error_log  /var/log/nginx/magento.error.log;

  # TLS configuration
  ssl_certificate /etc/letsencrypt/live/magento.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/magento.example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/magento.example.com/chain.pem;
  ssl_protocols TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 1d;

  # OCSP Stapling ---
  # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Magento wird mit einer Nginx-Konfigurationsvorlage unter /var/www/magento/nginx.conf.sample geliefert, die wir in unsere Konfiguration aufgenommen haben. Die Variable $MAGE_ROOT verweist auf das Magento-Web-Root-Verzeichnis, das wir in unserer Datei festgelegt haben und das in der Beispielkonfigurationsdatei verwendet wird.

Überprüfe die Syntax der Nginx-Konfigurationsdatei.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte den Nginx-Dienst neu.

$ sudo systemctl restart nginx

Öffne die Magento-Website über die URL https://magento.example.com. Du solltest die folgende Seite sehen.

Magento Homepage

Wenn das CSS und JS nicht geladen wird, führe die folgenden Befehle aus.

$ cd /var/www/magento
$ php bin/magento setup:static-content:deploy -f
$ php bin/magento indexer:reindex

Schritt 14 – Deaktivieren der Zwei-Faktor-Authentifizierung

Bevor wir auf das Administrationspanel zugreifen, müssen wir die Zwei-Faktor-Authentifizierung deaktivieren, die standardmäßig aktiviert ist. Magento versucht, während der Installation eine E-Mail an sendmail zu senden, um die Zwei-Faktor-Authentifizierung zu aktivieren, aber da wir das nicht konfiguriert haben, ist die einzige Möglichkeit, auf das Dashboard zuzugreifen, die Deaktivierung dieser Funktion.

Wenn du sendmail auf deinem Server für den Versand von E-Mails konfiguriert hast, kannst du diesen Schritt überspringen. Um die Zwei-Faktor-Authentifizierung zu deaktivieren, müssen wir zwei Module von Magento mit den folgenden Befehlen deaktivieren.

$ php /var/www/magento/bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:disable Magento_TwoFactorAuth

Führe den folgenden Befehl aus, um die Klassen zu erstellen.

$ php /var/www/magento/bin/magento setup:di:compile

Lösche auch den Cache.

$ php /var/www/magento/bin/magento c:c

Schritt 15 – Zugriff auf das Administrationsportal

Du musst das Administrationsportal mit der URI öffnen, die dir das Magento-Installationsskript mitgeteilt hat. Wenn du vergessen hast, sie zu notieren oder sie verloren hast, kannst du die URI mit folgendem Befehl wiederherstellen.

$ php /var/www/magento/bin/magento info:adminuri
Admin URI: /admin_19uadb

Öffne die URL https://magento.example.com/admin_19uadb in deinem Browser und du wirst den folgenden Bildschirm sehen.

Magento Admin Dashboard Login Seite

Gib deine Administrator-Anmeldedaten ein, die du während der Installation erhalten hast, und klicke auf die Schaltfläche Anmelden, um fortzufahren. Du wirst mit dem folgenden Bildschirm begrüßt.

Magento Admin Dashboard

Du wirst in einem Pop-up-Fenster gefragt, ob Adobe Nutzungsdaten sammeln darf. Klicke auf die Schaltfläche Nicht zulassen, um fortzufahren.

Im nächsten Schritt musst du SMTP für E-Mails konfigurieren, damit wir die Zwei-Faktor-Authentifizierung wieder aktivieren können. Rufe das Menü Stores >> Konfiguration auf.

Magento Stores > Config Menü

Erweitere das Menü Erweitert auf der linken Seite und klicke auf die Option Systeme, um die Seite E-Mail-Einstellungen zu öffnen.

Magento Einstellungen für den E-Mail-Versand

Deaktiviere die Option Systemwert verwenden vor den Optionen Transport, Host und Port. Klicke auf das Dropdown-Menü für Transport und wähle SMTP aus. Für unser Tutorial verwenden wir Amazon SES als Mailer.

Magento Amazon SES Mail Einstellungen

Gib deinen SMTP-Host, 587 als Port, deinen Benutzernamen und dein Kennwort ein, setze Auth auf LOGIN und SSL auf TLS in den entsprechenden Feldern. Klicke auf die Schaltfläche Save Config, wenn du fertig bist. Nachdem wir nun die E-Mail-Einstellungen konfiguriert haben, müssen wir als Nächstes die E-Mail-IDs der Filialen konfigurieren, damit wir sie testen können.

Scrolle nach oben, erweitere das Menü Allgemein auf derselben Seite und wähle die Option Filial-E-Mail-Adressen.

Magento Store E-Mail-Adressen Seite

Deaktiviere die Standardfelder für Absender-E-Mails und gib die E-Mail-Adressen deines Geschäfts ein. Klicke auf die Schaltfläche Konfiguration speichern, wenn du fertig bist. Öffne auf ähnliche Weise den Bildschirm Kontakte, nimm die gleichen Änderungen vor und klicke zum Abschluss auf die Schaltfläche Konfiguration speichern.

Magento Kontakt E-Mail Einstellungen

Wenn du die Administratoroptionen änderst, kann sich das auf den Cache auswirken und du bekommst eine Warnung. Führe den folgenden Befehl aus, um den Cache manuell zu löschen.

$ php /var/www/magento/bin/magento c:c

Um die E-Mails zu testen, rufe die Storefront-Seite auf und öffne die Seite Contact Us. Du kannst die URL https://magento.example.com/contact/ direkt verwenden, um sie aufzurufen. Sende eine Testnachricht und klicke auf die Schaltfläche Senden. Du solltest eine ähnliche E-Mail erhalten.

Magento E-Mail Test

Schritt 16 – Aktiviere und konfiguriere die Zwei-Faktor-Authentifizierung

Nachdem wir nun den SMTP-Mailer aktiviert haben, ist es an der Zeit, die Zwei-Faktor-Authentifizierung wieder zu aktivieren. Führe die folgenden Befehle aus, um die Zwei-Faktor-Authentifizierung zu aktivieren.

$ php /var/www/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:enable Magento_TwoFactorAuth

Aktualisiere das Setup für die Module.

$ php /var/www/magento/bin/magento setup:upgrade

Führe den folgenden Befehl aus, um die Klassen zu erstellen.

$ php /var/www/magento/bin/magento setup:di:compile

Lösche auch den Cache.

$ php /var/www/magento/bin/magento c:c

Wenn du nicht auf den Admin-Bereich zugreifen kannst, führe auch die folgenden Befehle aus.

Erzwinge die Bereitstellung der statischen Inhalte.

$ php /var/www/magento/bin/magento setup:static-content:Deploy -f

Lege die Dateiberechtigungen fest.

$ cd /var/www/magento
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .

Besuche das Admin-Portal und du wirst den folgenden Bildschirm sehen.

Magento 2FA konfigurieren

Wir werden die Google Authenticator-Methode verwenden. Du kannst auch einen Hardware-Schlüssel verwenden, wenn du einen hast. Die Google Authenticator-Methode funktioniert mit jeder TOTP-App, einschließlich Authy, 1Password, Bitwarden, Microsoft Authenticator, usw. Klicke auf die Schaltfläche Übernehmen, um fortzufahren.

Magento Google 2FA konfigurieren

Auf der nächsten Seite erhältst du den QR-Code, den du mit deiner 2FA-App scannen musst. Gib die Daten in deine App ein und kopiere den generierten Code in das Feld Authenticator-Code. Klicke auf die Schaltfläche Bestätigen, um zum Admin-Dashboard zu gelangen.

Fazit

Damit ist unser Tutorial zur Installation von Magento eCommerce Site auf einem Ubuntu 22.04 Server mit Nginx Server und Elasticsearch abgeschlossen. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …