Béjean Développement

Installation de Magento 2.4

Cet article a été entièrement revu et mis à jour. Il se consacre exclusivement à l'installation de Magento 2.4 avec Nginx et PHP-FPM 7.4 sous Debian Buster. Je n'aborde pas l'installation d'e 'Elasticsearch, Redis, Varnish et RabbitMQ.

Objectif

Installer Magento 2.4.2 depuis Composer.

Installation

Pré-requis

Avant de procéder à l'installation de Magento 2, vous devez avoir installer :

Composants indispensables

Pour installer Magento, il est nécessaire d'installer les composants de base :

apt-get install gnupg2 zip git curl lsb-release apt-transport-https ca-certificates cron

Nginx 1.19

Pour installer la version 1.19, lancer les commandes suivantes :

cd /tmp
wget https://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key

Puis, créer un fichier nommé nginx.list dans le dossier /etc/apt/sources.list.d/ et y insérer le contenu suivant :

deb https://nginx.org/packages/mainline/debian/ buster nginx
deb-src https://nginx.org/packages/mainline/debian/ buster nginx

Réaliser une mise à jour de la base de données des paquets, puis installer Nginx :

apt-get update
apt-get install nginx

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

PHP-FPM 7.4

Pour installer la version 7.4, lancer 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

Réaliser une mise à jour de la base de données des paquets, puis installer PHP-FPM :

apt-get update
apt-get install php7.4-fpm php7.4-bcmath php7.4-curl php7.4-xml php7.4-mysql php7.4-gd php7.4-common php7.4-intl php7.4-mbstring php7.4-pdo php7.4-soap php7.4-xsl php7.4-zip

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

Composer 2

Pour installer la version 2, lancer les commandes suivantes :

curl -sS https://getcomposer.org/installer | 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/7.4/cli/php.ini et /etc/php/7.4/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/7.4/fpm/php.ini, il faut modifier le paramètre memory_limit :

memory_limit = 2G

Relancer le service PHP : /etc/init.d/php7.4-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/magento. Car à l'installation de la version 1.19.x de Nginx, le dossier n'est pas 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 accès à Magento Marketplace.

Installation de Magento 2

Avant de terminer, nous allons lancer les dernières lignes de commandes permettant de créer les tables dans la bases 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.localhost/ \
  --backend-frontname=system \
  --admin-firstname=Magento \
  --admin-lastname=Magento \
  --admin-email=magento@magento.com \
  --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, 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/php7.4-fpm.sock;
}

server {
    listen 80;
    server_name magento.localhost;

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

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

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

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
service nginx restart