Conditions préalables à la mise à niveau

Il est important de comprendre ce qui est nécessaire pour exécuter Adobe Commerce. Vous devez d’abord consulter la section configuration requise pour la version vers laquelle vous envisagez d’effectuer la mise à niveau.

Après avoir examiné la configuration requise, vous devez remplir les conditions préalables suivantes avant de mettre à niveau votre système :

  • Mettre à jour tous les logiciels
  • Vérification de l’installation d’un moteur de recherche pris en charge
  • Conversion du format de tableau de la base de données
  • Définition de la limite des fichiers ouverts
  • Vérification de l’exécution des tâches cron
  • Définir DATA_CONVERTER_BATCH_SIZE
  • Vérification des autorisations du système de fichiers
  • Définissez la variable pub/ racine du répertoire
  • Installation du module externe de mise à jour du compositeur

Mettre à jour tous les logiciels

La variable configuration requise décrire exactement les versions de logiciels tiers qui ont été testées avec les versions d’Adobe Commerce.

Veillez à mettre à jour toutes les exigences et dépendances du système dans votre environnement. Voir PHP 7,4, PHP 8,0, PHP 8.1, et paramètres PHP requis.

NOTE
Pour Adobe Commerce sur les projets d’infrastructure cloud Pro, vous devez créer une Assistance pour installer ou mettre à jour des services dans les environnements d’évaluation et de production. Indiquez les modifications de service nécessaires et incluez vos mises à jour .magento.app.yaml et services.yaml fichiers et version PHP dans le ticket. La mise à jour de votre projet peut prendre jusqu’à 48 heures pour que l’équipe chargée de l’infrastructure du cloud. Voir Logiciels et services pris en charge.

Vérification de l’installation d’un moteur de recherche pris en charge

Adobe Commerce nécessite l’installation d’Elasticsearch ou d’OpenSearch pour pouvoir utiliser le logiciel.

Si vous effectuez une mise à niveau de 2.3.x vers 2.4, vous devez vérifier si vous utilisez MySQL, Elasticsearch ou une extension tierce comme moteur de recherche de catalogue dans votre instance 2.3.x. Le résultat détermine ce que vous devez faire. before mise à niveau vers 2.4.

Si vous mettez à niveau des versions de correctif dans les lignes de version 2.3.x ou 2.4.x, si Elasticsearch 7.x est déjà installé, vous pouvez éventuellement migrer vers OpenSearch.

Vous pouvez utiliser la ligne de commande ou l’ administrateur pour déterminer votre moteur de recherche de catalogue :

  • Saisissez le bin/magento config:show catalog/search/engine . La commande renvoie une valeur de mysql, elasticsearch (indiquant que l’Elasticsearch 2 est configuré), elasticsearch5, elasticsearch6, elasticsearch7ou une valeur personnalisée, indiquant que vous avez installé un moteur de recherche tiers. Pour les versions antérieures à la version 2.4.6, utilisez la variable elasticsearch7 pour le moteur Elasticsearch 7 ou OpenSearch. Pour les versions 2.4.6 et ultérieures, utilisez le opensearch pour le moteur OpenSearch.

  • Depuis l’administrateur, vérifiez la valeur de la variable Stores > Settings > Configuration > Catalog > Catalog > Catalog Search > Search Engine champ .

Les sections suivantes décrivent les actions que vous devez entreprendre avant de passer à la version 2.4.0.

MySQL

Depuis la version 2.4, MySQL n’est plus un moteur de recherche de catalogue pris en charge. Vous devez installer et configurer Elasticsearch ou OpenSearch avant la mise à niveau. Utilisez les ressources suivantes pour vous aider à accomplir ce processus :

Certains moteurs de recherche de catalogue tiers s’exécutent sur le moteur de recherche Adobe Commerce. Contactez votre fournisseur pour déterminer si vous devez mettre à jour votre extension.

MariaDB

La réindexation sur MariaDB 10.4 et 10.6 prend plus de temps que les versions précédentes de MariaDB ou de MySQL. Pour accélérer la réindexation, nous vous recommandons de définir les paramètres de configuration MariaDB suivants :

Si vous constatez une dégradation des performances non liée à l’indexation après la mise à niveau vers MariaDB 10.6, envisagez d’activer la variable --query-cache-type . Par exemple : --query-cache-type=ON.

Avant de mettre à niveau Adobe Commerce sur des projets d’infrastructure cloud, vous devrez peut-être également mettre à niveau MariaDB (voir Bonnes pratiques de mise à niveau de MariaDB).

Par exemple :

  • Adobe Commerce 2.4.6 avec MariaDB version 10.5.1 ou ultérieure
  • Adobe Commerce 2.3.5 avec MariaDB version 10.3 ou antérieure

Outre ces recommandations, consultez l’administrateur de la base de données pour configurer les paramètres suivants :

NOTE
Ces paramètres sont disponibles uniquement pour les déploiements sur site. Les clients d’Adobe Commerce sur l’infrastructure cloud n’ont pas accès à ces paramètres.

Moteur de recherche

Vous devez installer et configurer Elasticsearch 7.6 ou version ultérieure ou OpenSearch 1.2 avant de passer à la version 2.4.0. Adobe ne prend plus en charge Elasticsearch 2.x, 5.x et 6.x. Configuration du moteur de recherche dans le Guide de configuration décrit les tâches que vous devez effectuer après la mise à niveau d’Elasticsearch vers une version prise en charge.

Voir Mise à niveau d’Elasticsearch pour obtenir des instructions complètes sur la sauvegarde de vos données, la détection des problèmes de migration potentiels et le test des mises à niveau avant le déploiement en production. Selon votre version actuelle d’Elasticsearch, un redémarrage complet de la grappe peut être nécessaire ou non.

Elasticsearch requiert Java Development Kit (JDK) 1.8 ou version ultérieure. Voir Installation de Java Software Development Kit (JDK) pour vérifier quelle version de JDK est installée.

OpenSearch

OpenSearch est un double open source de 7.10.2 Elasticsearch, suite à un changement de licence de l’Elasticsearch. Les versions suivantes d’Adobe Commerce prennent en charge OpenSearch :

  • 2.4.6 (OpenSearch possède un module et des paramètres distincts)
  • 2.4.5
  • 2.4.4
  • 2.4.3-p2
  • 2.3.7-p3

Vous pouvez migrer de l’Elasticsearch vers OpenSearch uniquement si vous effectuez une mise à niveau vers une version d’Adobe Commerce répertoriée ci-dessus (ou ultérieure).

OpenSearch requiert JDK 1.8 ou version ultérieure. Voir Installation de Java Software Development Kit (JDK) pour vérifier quelle version de JDK est installée.

Configuration du moteur de recherche décrit les tâches à effectuer après avoir modifié les moteurs de recherche.

Elasticsearch de mise à niveau

La prise en charge d’Elasticsearch 8.x a été introduite dans Adobe Commerce 2.4.6. Les instructions suivantes présentent un exemple de mise à niveau d’Elasticsearch de 7.x vers 8.x :

  1. Mettez à niveau le serveur Elasticsearch 7.x vers 8.x et assurez-vous qu’il est en cours d’exécution. Voir Documentation Elasticsearch.

  2. Activez la variable id_field_data en ajoutant la configuration suivante à votre elasticsearch.yml et redémarrez le service Elasticsearch 8.x.

    code language-yaml
    indices:
      id_field_data:
        enabled: true
    
    note info
    INFO
    Pour prendre en charge Elasticsearch 8.x, Adobe Commerce 2.4.6 désactive la fonction indices.id_field_data par défaut et utilise la propriété _id dans le champ docvalue_fields .
  3. Dans le répertoire racine de votre projet Adobe Commerce, mettez à jour les dépendances du compositeur afin de supprimer la variable Magento_Elasticsearch7 et installez le module Magento_Elasticsearch8 module .

    code language-bash
    composer require magento/module-elasticsearch-8 --update-with-all-dependencies
    
  4. Mettez à jour les composants de votre projet.

    code language-bash
    bin/magento setup:upgrade
    
  5. Configurer l’Elasticsearch dans le Admin.

  6. Réindexez l’index du catalogue.

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  7. Supprimez tous les éléments des types de cache activés.

    code language-bash
    bin/magento cache:clean
    

Rétrogradation d’Elasticsearch

Si vous mettez par inadvertance à niveau la version d’Elasticsearch sur votre serveur ou déterminez que vous devez effectuer une mise à niveau pour toute autre raison, vous devez également mettre à jour les dépendances de votre projet Adobe Commerce. Par exemple, pour passer de Elasticsearch 8.x à 7.x

  1. Réduisez le serveur Elasticsearch 8.x à 7.x et assurez-vous qu’il est en cours d’exécution. Voir Documentation Elasticsearch.

  2. Dans le répertoire racine de votre projet Adobe Commerce, mettez à jour les dépendances du compositeur afin de supprimer la variable Magento_Elasticsearch8 et ses dépendances de compositeur, puis installez Magento_Elasticsearch7 module .

    code language-bash
    composer remove magento/module-elasticsearch-8
    
  3. Mettez à jour les composants de votre projet.

    code language-bash
    bin/magento setup:upgrade
    
  4. Configurer l’Elasticsearch dans le Admin.

  5. Réindexez l’index du catalogue.

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  6. Supprimez tous les éléments des types de cache activés.

    code language-bash
    bin/magento cache:clean
    

Extensions tierces

Nous vous recommandons de contacter le fournisseur de votre moteur de recherche pour déterminer si votre extension est entièrement compatible avec une version d’Adobe Commerce.

Conversion du format de tableau de la base de données

Vous devez convertir le format de toutes les tables de base de données à partir de COMPACT to DYNAMIC. Vous devez également convertir le type de moteur de stockage à partir de MyISAM to InnoDB. Voir bonnes pratiques.

Définition de la limite des fichiers ouverts

La définition de la limite des fichiers ouverts (ulimit) peut permettre d’éviter l’échec de plusieurs appels récursifs de longues chaînes de requête ou des problèmes liés à l’utilisation de la variable bin/magento setup:rollback . Cette commande est différente pour différents shells UNIX. Consultez votre goût individuel pour plus d’informations sur la ulimit .

Adobe recommande de définir les fichiers ouverts ulimit à une valeur de 65536 ou plus, mais vous pouvez utiliser une valeur plus grande si nécessaire. Vous pouvez définir l’ulimit sur la ligne de commande ou en faire un paramètre permanent pour le shell de l’utilisateur.

Pour définir ulimit à partir de la ligne de commande :

  1. Basculez vers le propriétaire du système de fichiers.

  2. Définissez la ulimit sur 65536.

    code language-bash
    ulimit -n 65536
    

Pour définir la valeur dans votre shell Bash :

  1. Basculez vers le propriétaire du système de fichiers.

  2. Ouvrir /home/<username>/.bashrc dans un éditeur de texte.

  3. Ajoutez la ligne suivante :

    code language-bash
    ulimit -n 65536
    
  4. Enregistrez vos modifications dans le .bashrc et quittez l’éditeur de texte.

IMPORTANT
Il est recommandé d’éviter de définir une valeur pour la variable pcre.recursion_limit dans la propriété php.ini car cela peut entraîner des restaurations incomplètes sans préavis d’échec.

Vérification de l’exécution des tâches cron

Planificateur de tâches UNIX cron est essentiel pour les opérations Adobe Commerce quotidiennes. Il planifie des choses comme la réindexation, les newsletters, les e-mails et les plans de site. Plusieurs fonctionnalités nécessitent au moins une tâche cron s’exécutant en tant que propriétaire du système de fichiers.

Pour vérifier que votre tâche cron est configurée correctement, vérifiez crontab en saisissant la commande suivante en tant que propriétaire du système de fichiers :

NOTE
crontab est le fichier de configuration responsable de l’exécution des tâches cron.
crontab -l

Les résultats semblables à ceux-ci doivent s’afficher :

#~ 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

Un autre symptôme de l’inexécution de cron est l’erreur suivante dans l’administrateur :

Pour afficher l’erreur, cliquez sur Messages système en haut de la fenêtre, comme suit :

Voir Configuration et exécution de cron pour plus d’informations.

Set DATA_CONVERTER_BATCH_SIZE

Adobe Commerce 2.4 comprend des améliorations de sécurité qui nécessitent que certaines données soient converties de la version sérialisée vers JSON. Cette conversion survient lors de la mise à niveau et peut prendre du temps, selon la quantité de données contenues dans votre base de données.

Les tableaux suivants sont les plus affectés :

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

Si vous disposez d’une grande quantité de données, vous pouvez améliorer les performances en définissant la valeur d’une variable d’environnement, DATA_CONVERTER_BATCH_SIZE. Par défaut, la valeur est définie sur 50,000.

Pour définir la variable d’environnement :

  1. Basculez vers le propriétaire du système de fichiers.

  2. Définissez la variable :

    code language-bash
    export DATA_CONVERTER_BATCH_SIZE=100000
    
    note note
    NOTE
    DATA_CONVERTER_BATCH_SIZE nécessite de la mémoire ; évitez de la définir sur une valeur élevée (environ 1 Go) sans la tester au préalable.
  3. Une fois la mise à niveau terminée, vous pouvez annuler la définition de la variable :

    code language-bash
    unset DATA_CONVERTER_BATCH_SIZE
    

Vérification des autorisations du système de fichiers

Pour des raisons de sécurité, Adobe Commerce requiert certaines autorisations sur le système de fichiers. Les autorisations sont différentes de propriétaire. La propriété détermine qui peut effectuer des actions sur le système de fichiers ; les autorisations déterminent ce que l’utilisateur peut faire.

Les répertoires du système de fichiers doivent pouvoir être écrits par le fichier système propriétaire groupe.

Pour vérifier que les autorisations de votre système de fichiers sont correctement définies, connectez-vous au serveur d’applications ou utilisez l’application de gestionnaire de fichiers de votre fournisseur d’hébergement.

Par exemple, saisissez la commande suivante si l’application est installée dans /var/www/html/magento2:

ls -l /var/www/html/magento2

Exemple de sortie :

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

Pour obtenir une explication de l’exemple de sortie, reportez-vous aux sections suivantes :

  • La plupart des fichiers sont -rw-rw----, qui est 660
  • drwxrwx--- = 770
  • -rw-rw-rw- = 666
  • Le propriétaire du système de fichiers est magento_user

Pour obtenir des informations plus détaillées, saisissez la commande suivante :

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

Parce qu’Adobe Commerce déploie des fichiers statiques dans des sous-répertoires de pub, il est préférable de vérifier également les autorisations et la propriété dans cette zone.

Pour plus d’informations, voir Autorisations et propriété du système de fichiers.

Définissez la variable pub/ racine du répertoire

Voir Modification de docroot pour améliorer la sécurité pour plus d’informations.

Installation du module externe de mise à jour du compositeur

La variable magento/composer-root-update-plugin Le module externe Composer résout les modifications qui doivent être apportées au projet racine. composer.json avant d’effectuer une mise à jour vers un nouveau produit requis.

Le module externe automatise partiellement la mise à niveau manuelle en identifiant et en vous aidant à résoudre les conflits de dépendance au lieu d’exiger que vous les identifiiez et les corrigiez manuellement.

Pour installer le module externe :

  1. Ajoutez le module à votre composer.json fichier .

    code language-bash
    composer require magento/composer-root-update-plugin ~2.0 --no-update
    
  2. Mettez à jour les dépendances :

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