Installation de Magento 2.4.5

Cet article se consacre exclusivement à l'installation de Magento 2.4.5 avec Nginx 1.22 et PHP-FPM 8.1 sous Debian Bullseye 11.4. Je n'aborde pas l'installation d'Elasticsearch, Redis, Varnish et de RabbitMQ.

Installation

Pré-requis

Avant de procéder à l'installation de Magento 2, vous devez posséder une installation fonctionnelle de :

Composants indispensables

Pour installer Nginx, PHP-FPM, Composer et Magento, il est nécessaire d'installer les composants de base :

apt install gnupg2 zip git curl lsb-release apt-transport-https ca-certificates cron debian-archive-keyring

Nginx 1.22

Pour installer la version 1.22, il faut importer une clé de signature Nginx officielle. Cela est indispensable pour que le gestionnaire de paquets apt puisse vérifier l'authenticité des paquets. Pour récupérer la clé, lancer la commande suivante :

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

Utiliser la commande ci-dessous pour vérifier que le fichier téléchargé contient la bonne clé :

gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

La commande précédente affichera, dans votre terminal, la clé complète. Cette dernière doit contenir 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62, voici la sortie complète :

pub   rsa2048 2011-08-19 [SC] [expire : 2024-06-14]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <[email protected]>

Si vous n'avez pas le même résultat, il faut supprimer le fichier /usr/share/keyrings/nginx-archive-keyring.gpg.

Si le résultat est identique, continuer la configuration en ajoutant les dépôts Nginx stable dans la configuration d'APT, à l'aide de la commande suivante :

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

Finaliser la configuration pour indiquer que nous préférons utiliser les paquets en provenance de Nginx à ceux de la distribution Debian :

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | tee /etc/apt/preferences.d/99nginx

Nous pouvons lancer l'installation de Nginx en exécutant les commandes suivantes :

apt update && apt install nginx

Vérifier la version installée en lançant la commande : /usr/sbin/nginx -v.

Source : Site officiel

PHP-FPM 8.1

Pour installer la version 8.1 de PHP-FPM, il est nécessaire d'ajouter les dépôts de PHP en lançant les commandes suivantes :

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

Puis, nous devons réaliser une mise à jour de la base de données des paquets avant de lancer l'installation de PHP-FPM :

apt update && apt install php8.1-amqp php8.1-bcmath php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-soap php8.1-xml php8.1-xsl php8.1-zip

Vérifier la version installée en lançant la commande : php -v.

Composer 2

Pour installer la version 2.2.17, lancer les commandes suivantes :

curl -O https://getcomposer.org/download/2.2.17/composer.phar | php
mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer

Vérifier la version installée en lançant la commande : composer -v.

Configuration

Configuration de PHP

Pour la configuration de PHP, il faut modifier 2 fichiers : /etc/php/8.1/cli/php.ini et /etc/php/8.1/fpm/php.ini.

zlib.output_compression = On
realpath_cache_size = 10M
realpath_cache_ttl = 7200
max_execution_time = 1800
date.timezone = Europe/Paris
opcache.save_comments=1

Seule particularité, pour le fichier /etc/php/8.1/fpm/php.ini, il faut modifier le paramètre memory_limit :

memory_limit = 2G

Relancer le service PHP : /etc/init.d/php8.1-fpm restart && /etc/init.d/nginx restart.

Les modifications ci-dessous sont des préconisations indiquées dans la documentation officielle :

Création du projet

Créer le dossier de votre boutique : mkdir -p /var/www/html. Car à l'installation de Nginx, le dossier /var/www/html n'est pas automatiquement créé. Après la création, il faut modifier le propriétaire et le groupe du dossier : chown -R www-data.www-data /var/www/ et ajuster les droits : chmod -R 775 /var/www/.

Lancer la commande suivante dans le dossier /var/www/html :

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

Renseigner vos identifiants fournis par Magento Marketplace pour l'installation des modules.

Installation de Magento 2

Avant de terminer, nous allons lancer les dernières lignes de commandes permettant de créer les tables dans la base de données et les fichiers de configuration propre à Magento 2.

bin/magento setup:install \
  --db-host=url-mysql \
  --db-name=magento \
  --db-user=magento \
  --db-password=magento \
  --base-url=http://magento.local/ \
  --backend-frontname=system \
  --admin-firstname=Magento \
  --admin-lastname=Magento \
  [email protected] \
  --admin-user=magento \
  --admin-password=magento \
  --language=fr_FR \
  --currency=EUR \
  --timezone=Europe/Paris \
  --use-rewrites=1 \
  --search-engine=elasticsearch7 \
  --elasticsearch-host=url-elasticsearch \
  --elasticsearch-port=9200 \
  --elasticsearch-index-prefix=magento

Pensez à renseigner un mot de place beaucoup plus complexe pour le paramètre --admin-password et de renseigner la bonne valeur pour --elasticsearch-host et --db-host.

Pour ne pas avoir de problèmes de droits sur les fichiers, lancer les commandes suivantes :

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

Installation des crons

Nous terminons l'installation par la mise en place des crons :

bin/magento cron:install

Création du vhost

Créer le fichier suivant : /etc/nginx/conf.d/magento.conf et y insérer le contenu ci-dessous :

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

server {
  listen       80;
  listen  [::]:80;
  server_name magento.local;

  set $MAGE_ROOT /var/www/html/magento;
  set $MAGE_DEBUG_SHOW_ARGS 0;

  include /var/www/html/magento/nginx.conf.sample;
}

Avant de terminer, remplacer l'utilisateur nginx par www-data dans le fichier /etc/nginx/nginx.conf.

Enregistrer et lancer les commandes suivantes pour activer le vhost :

/usr/sbin/nginx -t
/usr/sbin/service nginx restart