Voraussetzungen für ein vollständiges Upgrade

Es ist wichtig zu verstehen, was zum Ausführen von Adobe Commerce erforderlich ist. Sie müssen zunächst die Systemanforderungen für die Version überprüfen, auf die Sie ein Upgrade durchführen möchten.

Nachdem Sie die Systemanforderungen überprüft haben, müssen Sie die folgenden Voraussetzungen erfüllen, bevor Sie Ihr System aktualisieren:

  • Gesamte Software aktualisieren
  • Überprüfen, ob eine unterstützte Suchmaschine installiert ist
  • Datenbanktabellenformat konvertieren
  • Festlegen des Limits für geöffnete Dateien
  • Überprüfen, ob Cron-Aufträge ausgeführt werden
  • DATA_CONVERTER_BATCH_SIZE festlegen
  • Überprüfen von Dateisystemberechtigungen
  • Festlegen des pub/ Ordnerstamms
  • Installieren des Composer-Aktualisierungs-Plug-ins

Gesamte Software aktualisieren

Die Systemanforderungen beschreiben genau, welche Versionen von Software von Drittanbietern mit Adobe Commerce-Versionen getestet wurden.

Stellen Sie sicher, dass Sie alle Systemanforderungen und Abhängigkeiten in Ihrer Umgebung aktualisiert haben. Siehe PHP 7.4, PHP 8.0, PHP 8.1 und erforderlichen PHP-Einstellungen.

NOTE
Für Adobe Commerce in Cloud Infrastructure Pro-Projekten müssen Sie ein Support-Ticket erstellen, um Services in Staging- und Produktionsumgebungen zu installieren oder zu aktualisieren. Geben Sie die erforderlichen Service-Änderungen an und fügen Sie Ihre aktualisierten .magento.app.yaml- und services.yaml-Dateien sowie die PHP-Version in das Ticket ein. Es kann bis zu 48 Stunden dauern, bis das Cloud-Infrastruktur-Team Ihr Projekt aktualisiert. Siehe Unterstützte Software und Services.

Überprüfen, ob eine unterstützte Suchmaschine installiert ist

Adobe Commerce erfordert die Installation von Elasticsearch oder OpenSearch, damit die Software verwendet werden kann.

Wenn Sie ein Upgrade von 2.3.x auf 2.4 durchführen, müssen Sie überprüfen, ob Sie MySQL, Elasticsearch oder eine Drittanbietererweiterung als Katalogsuchmaschine in Ihrer 2.3.x-Instanz verwenden. Das Ergebnis bestimmt, was Sie tun müssen bevor Sie 2.4 aktualisieren.

Wenn Sie Patch-Versionen innerhalb der Versionen 2.3.x oder 2.4.x aktualisieren und Elasticsearch 7.x bereits installiert ist, können Sie optional zu OpenSearch migrieren.

Sie können die Befehlszeile oder den Administrator verwenden, um Ihre Katalogsuchmaschine zu bestimmen:

  • Geben Sie den bin/magento config:show catalog/search/engine Befehl ein. Der Befehl gibt den Wert mysql, elasticsearch (was bedeutet, dass Elasticsearch 2 konfiguriert ist), elasticsearch5, elasticsearch6, elasticsearch7 oder einen benutzerdefinierten Wert zurück, was bedeutet, dass Sie eine Suchmaschine eines Drittanbieters installiert haben. Verwenden Sie für ältere Versionen als 2.4.6 den elasticsearch7 für die Elasticsearch 7- oder OpenSearch-Engine. Verwenden Sie für Version 2.4.6 und höher den opensearch für die OpenSearch-Engine.

  • Überprüfen Sie in der Admin den Wert des Felds Stores > Settings > Configuration > Catalog > Catalog > Catalog Search > Search Engine .

In den folgenden Abschnitten wird beschrieben, welche Aktionen Sie durchführen müssen, bevor Sie ein Upgrade auf 2.4.0 durchführen.

MySQL

Ab Version 2.4 ist MySQL keine unterstützte Katalogsuchmaschine mehr. Sie müssen Elasticsearch oder OpenSearch vor dem Upgrade installieren und konfigurieren. Verwenden Sie die folgenden Ressourcen, um Sie durch diesen Prozess zu führen:

Einige Katalogsuchmaschinen von Drittanbietern werden zusätzlich zur Adobe Commerce-Suchmaschine ausgeführt. Wenden Sie sich an Ihren Anbieter, um zu entscheiden, ob Sie Ihre Erweiterung aktualisieren müssen.

MariaDB

Die Neuindizierung auf MariaDB 10.4 und 10.6 dauert im Vergleich zu früheren MariaDB- oder MySQL-Versionen länger. Um die Neuindizierung zu beschleunigen, empfehlen wir die folgenden MariaDB-Konfigurationsparameter festzulegen:

Wenn nach dem Upgrade auf MariaDB 10.6 eine Leistungsbeeinträchtigung auftritt, die nicht mit einer Indizierung in Zusammenhang steht, sollten Sie die --query-cache-type aktivieren. Beispiel: --query-cache-type=ON.

Vor einem Upgrade von Adobe Commerce in Cloud-Infrastrukturprojekten müssen Sie möglicherweise auch MariaDB aktualisieren (siehe Best Practices für MariaDB-Upgrades).

Beispiel:

  • Adobe Commerce 2.4.6 mit MariaDB-Version 10.5.1 oder höher
  • Adobe Commerce 2.3.5 mit MariaDB Version 10.3 oder früher

Zusätzlich zu diesen Empfehlungen sollten Sie sich mit Ihrem Datenbankadministrator über die Konfiguration der folgenden Parameter beraten:

NOTE
Diese Einstellungen sind nur für lokale Bereitstellungen verfügbar. Kunden von Adobe Commerce in Cloud-Infrastrukturen haben keinen Zugriff auf diese Einstellungen.

Suchmaschine

Sie müssen entweder Elasticsearch 7.6 oder höher oder OpenSearch 1.2 installieren und konfigurieren, bevor Sie ein Upgrade auf 2.4.0 durchführen. Adobe unterstützt nicht mehr die Elasticsearch 2.x, 5.x und 6.x. Suchmaschinenkonfiguration im Konfigurationshandbuch beschreibt die Aufgaben, die Sie nach dem Upgrade von Elasticsearch auf eine unterstützte Version ausführen müssen.

Unter Elasticsearch aktualisieren finden Sie vollständige Anweisungen zum Sichern Ihrer Daten, Erkennen potenzieller Migrationsprobleme und Testen von Upgrades vor der Bereitstellung in der Produktion. Abhängig von Ihrer aktuellen Version des Elasticsearchs kann ein vollständiger Neustart des Clusters erforderlich sein oder nicht.

Elasticsearch erfordert Java Development Kit (JDK) 1.8 oder höher. Siehe Installieren des Java Software Development Kit (JDK), um zu überprüfen, welche Version von JDK installiert ist.

OpenSearch

OpenSearch ist eine Open-Source-Version von Elasticsearch 7.10.2, die auf die Lizenzänderung von Elasticsearch folgt. Mit den folgenden Versionen von Adobe Commerce wird Unterstützung für OpenSearch eingeführt:

  • 2.4.6 (OpenSearch verfügt über ein separates Modul und Einstellungen)
  • 2,4,5
  • 2,4,4
  • 2.4.3-p2
  • 2.3.7-p3

Sie können von Elasticsearch zu OpenSearch migrieren nur, wenn Sie ein Upgrade auf eine der oben aufgeführten Adobe Commerce-Versionen (oder höher) durchführen.

OpenSearch erfordert JDK 1.8 oder höher. Siehe Installieren des Java Software Development Kit (JDK), um zu überprüfen, welche Version von JDK installiert ist.

Suchmaschinenkonfiguration beschreibt die Aufgaben, die nach einem Wechsel der Suchmaschine ausgeführt werden müssen.

Upgrade-Elasticsearch

Die Unterstützung für Elasticsearch 8.x wurde mit Adobe Commerce 2.4.6 eingeführt. Die folgenden Anweisungen zeigen ein Beispiel für die Aktualisierung von Elasticsearch von 7.x auf 8.x:

  1. Aktualisieren Sie den Elasticsearch 7.x-Server auf 8.x, und stellen Sie sicher, dass ausgeführt wird. Siehe die Elasticsearch-Dokumentation.

  2. Aktivieren Sie das Feld id_field_data , indem Sie die folgende Konfiguration zu Ihrer elasticsearch.yml hinzufügen und den Elasticsearch 8.x-Service neu starten.

    code language-yaml
    indices:
      id_field_data:
        enabled: true
    
    note info
    INFO
    Um Elasticsearch 8.x zu unterstützen, deaktiviert Adobe Commerce 2.4.6 standardmäßig die indices.id_field_data-Eigenschaft und verwendet das _id in der docvalue_fields-Eigenschaft.
  3. Aktualisieren Sie im Stammverzeichnis Ihres Adobe Commerce-Projekts Ihre Composer-Abhängigkeiten, um das Magento_Elasticsearch7 zu entfernen und das Magento_Elasticsearch8 zu installieren.

    code language-bash
    composer require magento/module-elasticsearch-8 --update-with-all-dependencies
    
  4. Aktualisieren Sie Ihre Projektkomponenten.

    code language-bash
    bin/magento setup:upgrade
    
  5. Elasticsearch konfigurieren im Admin.

  6. Indizieren Sie den Katalogindex neu.

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  7. Löschen Sie alle Elemente aus den aktivierten Cache-Typen.

    code language-bash
    bin/magento cache:clean
    

Elasticsearch herunterstufen

Wenn Sie versehentlich die Elasticsearch-Version auf Ihrem Server aktualisieren oder feststellen, dass Sie aus einem anderen Grund ein Downgrade durchführen müssen, müssen Sie auch Ihre Adobe Commerce-Projektabhängigkeiten aktualisieren. Beispielsweise für ein Downgrade von Elasticsearch 8.x auf 7.x

  1. Führen Sie ein Downgrade des Elasticsearch 8.x-Servers auf 7.x durch und stellen Sie sicher, dass der läuft. Siehe die Elasticsearch-Dokumentation.

  2. Aktualisieren Sie im Stammverzeichnis Ihres Adobe Commerce-Projekts Ihre Composer-Abhängigkeiten, um das Magento_Elasticsearch8 und seine Composer-Abhängigkeiten zu entfernen und das Magento_Elasticsearch7 zu installieren.

    code language-bash
    composer remove magento/module-elasticsearch-8
    
  3. Aktualisieren Sie Ihre Projektkomponenten.

    code language-bash
    bin/magento setup:upgrade
    
  4. Elasticsearch konfigurieren im Admin.

  5. Indizieren Sie den Katalogindex neu.

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  6. Löschen Sie alle Elemente aus den aktivierten Cache-Typen.

    code language-bash
    bin/magento cache:clean
    

Erweiterungen von Drittanbietern

Es wird empfohlen, sich an den Suchmaschinenanbieter zu wenden, um festzustellen, ob Ihre Erweiterung vollständig mit einer Adobe Commerce-Version kompatibel ist.

Datenbanktabellenformat konvertieren

Sie müssen das Format aller Datenbanktabellen von COMPACT in DYNAMIC konvertieren. Außerdem müssen Sie den Speichermodultyp von MyISAM in InnoDB konvertieren. Siehe Best Practices.

Festlegen des Limits für geöffnete Dateien

Das Festlegen des Grenzwerts für offene Dateien (ulimit) kann dazu beitragen, Fehler durch mehrere rekursive Aufrufe langer Abfragezeichenfolgen oder Probleme mit der Verwendung des bin/magento setup:rollback-Befehls zu vermeiden. Dieser Befehl unterscheidet sich für verschiedene UNIX-Shells. Einzelheiten zum Befehl ulimit sind in der jeweiligen Variante zu finden.

Adobe empfiehlt, die geöffneten Dateien ulimit auf einen Wert von 65536 oder mehr festzulegen, Sie können jedoch bei Bedarf einen größeren Wert verwenden. Sie können ulimit auf der Befehlszeile festlegen oder es zu einer dauerhaften Einstellung für die Shell des Benutzers machen.

So legen Sie ulimit über die Befehlszeile fest:

  1. Wechseln Sie zum Dateisystembesitzer.

  2. Setzen Sie ulimit auf 65536.

    code language-bash
    ulimit -n 65536
    

So legen Sie den Wert in Ihrer Bash-Shell fest:

  1. Wechseln Sie zum Dateisystembesitzer.

  2. Öffnen Sie /home/<username>/.bashrc in einem Texteditor.

  3. Fügen Sie die folgende Zeile hinzu:

    code language-bash
    ulimit -n 65536
    
  4. Speichern Sie Ihre Änderungen in der .bashrc und beenden Sie den Texteditor.

IMPORTANT
Es wird empfohlen, in der php.ini-Datei keinen Wert für die pcre.recursion_limit-Eigenschaft festzulegen, da dies zu unvollständigen Rollbacks ohne Fehlermeldung führen kann.

Überprüfen, ob Cron-Aufträge ausgeführt werden

Der UNIX-Aufgabenplaner cron ist für den täglichen Adobe Commerce-Betrieb von entscheidender Bedeutung. Es werden Dinge wie Neuindizierung, Newsletter, E-Mails und Sitemaps geplant. Einige Funktionen erfordern mindestens einen Cron-Auftrag, der als Dateisysteminhaber ausgeführt wird.

Um sicherzustellen, dass Ihr Cron-Auftrag ordnungsgemäß eingerichtet ist, überprüfen Sie die Registerkarte crontab , indem Sie den folgenden Befehl als Dateisystembesitzer eingeben:

NOTE
Die crontab ist die Konfigurationsdatei, die für die Ausführung von Cron-Aufträgen zuständig ist.
crontab -l

Es sollten Ergebnisse ähnlich den folgenden angezeigt werden:

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

Ein weiteres Symptom dafür, dass cron nicht ausgeführt wird, ist der folgende Fehler in der Admin-Datei:

Systemmeldungen - Cron läuft nicht

Um den Fehler anzuzeigen, klicken Sie Systemmeldungen oben im Fenster wie folgt:

Systemnachrichten-Benachrichtigung

Weitere Informationen finden unter „KonfigurierenAusführen von cron“.

SET DATA_CONVERTER_BATCH_SIZE

Adobe Commerce 2.4 enthält Sicherheitsverbesserungen, die erfordern, dass einige Daten von serialisierten in JSON-Dateien konvertiert werden. Diese Konvertierung findet während des Upgrades statt und kann lange dauern, je nachdem, wie viele Daten sich in Ihrer Datenbank befinden.

Die folgenden Tabellen sind am stärksten betroffen:

  • catalogrule
  • core_config_data
  • magento_reward_history
  • quote_payment
  • quote
  • sales_order_payment
  • sales_order
  • salesrule
  • url_rewrite

Wenn Sie über eine große Datenmenge verfügen, können Sie die Leistung verbessern, indem Sie DATA_CONVERTER_BATCH_SIZE den Wert einer Umgebungsvariablen festlegen. Standardmäßig ist der Wert auf 50,000 festgelegt.

So legen Sie die Umgebungsvariable fest:

  1. Wechseln Sie zum Dateisystembesitzer.

  2. Legen Sie die Variable fest:

    code language-bash
    export DATA_CONVERTER_BATCH_SIZE=100000
    
    note note
    NOTE
    DATA_CONVERTER_BATCH_SIZE erfordert Arbeitsspeicher. Stellen Sie ihn nicht auf einen großen Wert (ca. 1 GB) ein, ohne ihn zuerst zu testen.
  3. Nach Abschluss des Upgrades können Sie die Variable deaktivieren:

    code language-bash
    unset DATA_CONVERTER_BATCH_SIZE
    

Überprüfen von Dateisystemberechtigungen

Aus Sicherheitsgründen erfordert Adobe Commerce bestimmte Berechtigungen für das Dateisystem. Berechtigungen unterscheiden sich von Inhaberschaft. Die Eigentümerschaft bestimmt, wer Aktionen im Dateisystem durchführen kann. Berechtigungen bestimmen, was der Benutzer tun kann.

Verzeichnisse im Dateisystem müssen von der Gruppe Dateisystemeigentümer“ beschreibbar.

Um sicherzustellen, dass Ihre Dateisystemberechtigungen ordnungsgemäß festgelegt sind, melden Sie sich entweder beim Anwendungsserver an oder verwenden Sie die Dateimanager-Anwendung Ihres Hosting-Anbieters.

Geben Sie beispielsweise den folgenden Befehl ein, wenn die Anwendung in /var/www/html/magento2 installiert ist:

ls -l /var/www/html/magento2

Beispielausgabe:

total 1028
drwxrwx---. 12 magento_user apache   4096 Jun  7 07:55 .
drwxr-xr-x.  3 root         root     4096 May 11 14:29 ..
drwxrwx---.  4 magento_user apache   4096 Jun  7 07:53 app
drwxrwx---.  2 magento_user apache   4096 Jun  7 07:53 bin
-rw-rw----.  1 magento_user apache 439792 Apr 27 21:23 CHANGELOG.md
-rw-rw----.  1 magento_user apache   3422 Apr 27 21:23 composer.json
-rw-rw----.  1 magento_user apache 425214 Apr 27 21:27 composer.lock
-rw-rw----.  1 magento_user apache   3425 Apr 27 21:23 CONTRIBUTING.md
-rw-rw----.  1 magento_user apache  10011 Apr 27 21:23 CONTRIBUTOR_LICENSE_AGREEMENT.html
-rw-rw----.  1 magento_user apache    631 Apr 27 21:23 COPYING.txt
drwxrwx---.  4 magento_user apache   4096 Jun  7 07:53 dev
-rw-rw----.  1 magento_user apache   2926 Apr 27 21:23 Gruntfile.js
-rw-rw----.  1 magento_user apache   7592 Apr 27 21:23 .htaccess
-rw-rw----.  1 magento_user apache   6419 Apr 27 21:23 .htaccess.sample
drwxrwx---.  4 magento_user apache   4096 Jun  7 07:53 lib
-rw-rw----.  1 magento_user apache  10376 Apr 27 21:23 LICENSE_AFL.txt
-rw-rw----.  1 magento_user apache  30634 Apr 27 21:23 LICENSE_EE.txt
-rw-rw----.  1 magento_user apache  10364 Apr 27 21:23 LICENSE.txt
-rw-rw----.  1 magento_user apache   4108 Apr 27 21:23 nginx.conf.sample
-rw-rw----.  1 magento_user apache   1427 Apr 27 21:23 package.json
-rw-rw----.  1 magento_user apache   1659 Apr 27 21:23 .php_cs
-rw-rw----.  1 magento_user apache    804 Apr 27 21:23 php.ini.sample
drwxrwx---.  2 magento_user apache   4096 Jun  7 07:53 phpserver
drwxrwx---.  6 magento_user apache   4096 Jun  7 07:53 pub
-rw-rw----.  1 magento_user apache   2207 Apr 27 21:23 README_EE.md
drwxrwx---.  7 magento_user apache   4096 Jun  7 07:53 setup
-rw-rw----.  1 magento_user apache   3731 Apr 27 21:23 .travis.yml
drwxrwx---.  7 magento_user apache   4096 Jun  7 07:53 update
drwxrws---. 11 magento_user apache   4096 Jun 13 16:05 var
drwxrws---. 29 magento_user apache   4096 Jun  7 07:53 vendor

Eine Erläuterung der Beispielausgabe finden Sie im Folgenden:

  • Die meisten Dateien sind -rw-rw----, was 660 ist
  • drwxrwx--- = 770
  • -rw-rw-rw- = 666
  • Der Dateisystembesitzer ist magento_user

Um genauere Informationen zu erhalten, können Sie den folgenden Befehl eingeben:

ls -la /var/www/html/magento2/pub

Da Adobe Commerce statische Datei-Assets in Unterverzeichnissen von pub bereitstellt, empfiehlt es sich, auch dort die Berechtigungen und die Eigentümerschaft zu überprüfen.

Weitere Informationen finden Sie unter Dateisystemberechtigungen und -eigentümerschaft.

Festlegen des pub/ Ordnerstamms

Weitere finden Sie unter „Ändern deszur Verbesserung der Sicherheit“.

Installieren des Composer-Aktualisierungs-Plug-ins

Das Plug-in magento/composer-root-update-plugin Composer löst Änderungen auf, die an der composer.json-Datei des Stammprojekts vorgenommen werden müssen, bevor sie auf eine neue Produktanforderung aktualisiert werden.

Das Plug-in automatisiert die manuelle Aktualisierung teilweise, indem es Abhängigkeitskonflikte identifiziert und behebt, anstatt sie manuell identifizieren und beheben zu müssen.

So installieren Sie das Plug-in:

  1. Fügen Sie das Paket zu Ihrer composer.json hinzu.

    code language-bash
    composer require magento/composer-root-update-plugin ~2.0 --no-update
    
  2. Aktualisieren Sie die Abhängigkeiten:

    code language-bash
    composer update
    
recommendation-more-help
83a60e0e-8849-4685-a8cd-c129ecd795ea