Installation de Magento 2.4.6
Cet article se consacre exclusivement à l'installation de Magento 2.4.6 avec Nginx 1.22 et PHP-FPM 8.1 sous Debian Bullseye 11.6. 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 :
- MySQL 8.0, lien vers l'article
- Elasticsearch, lien vers l'article
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.21, lancer les commandes suivantes :
curl -O https://getcomposer.org/download/2.2.21/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 :
zlib.output_compression
: Permet d'activer la compression à la volée des pages PHP, lien vers Magento DevDocs, lien vers la documentation PHPmax_execution_time
: Permet de définir un temps maximal d'exécution des scripts dans le but d'éviter les boucles infinies, lien vers Magento DevDocs, lien vers la documentation PHPmemory_limit
: Permet de définir la mémoire limite autorisé pour un script, lien vers Magento DevDocs, lien vers la documentation PHPrealpath_cache_size
: Permet de déterminer la taille du cache qui sera utilisé par PHP, lien vers Magento DevDocs, lien vers la documentation PHPrealpath_cache_ttl
: Permet de définir un temps de persistance du cache en secondes, lien vers Magento DevDocs, lien vers la documentation PHPopcache.save_comments
: Permet de garder les commentaires de documentation dans le cache, lien vers Magento DevDocs, lien vers la documentation PHPdate.timezone
: Permet de définir le décalage horaire par défaut qui sera utilisé pour toutes les fonctions date/heure, lien vers la documentation PHP
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