Comment installer la suite de commerce électronique Magento sur Debian 12 avec Nginx et Elasticsearch
Magento est une plateforme de commerce électronique open source écrite en PHP. Il a été acquis par Adobe en 2018. Il est également proposé sous forme de produit commercial et basé sur le cloud. Vous pouvez utiliser Magento pour créer des sites Web commerciaux professionnels de grande capacité. Il propose les deux : un mode magasin unique et un mode magasin multiple. Il est livré avec de nombreux modules pour étendre ses fonctionnalités.
Dans ce tutoriel, nous installerons l'édition communautaire open source de Magento. Il offre toutes les fonctionnalités dont vous avez besoin pour créer une boutique en ligne professionnelle. Nous installerons également Elasticsearch pour la recherche dans le catalogue de produits, Redis pour le cache de session et de fichiers, et le servirons à l'aide du serveur Nginx.
Conditions préalables
Un serveur exécutant Debian 12 avec un minimum de 2 Go de RAM. Vous aurez peut-être besoin de plus de RAM en fonction de vos besoins.
Un utilisateur non root avec les privilèges sudo.
Un nom de domaine complet (FQDN) pour le serveur, magento.example.com
Assurez-vous que tout est mis à jour.
$ sudo apt update
$ sudo apt upgrade
Peu de packages dont votre système a besoin.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
Certains de ces packages sont peut-être déjà installés sur votre système.
Étape 1 - Configurer le pare-feu
La première étape consiste à configurer le pare-feu. Debian est livré par défaut avec ufw (Uncomplicated Firewall).
Vérifiez si le pare-feu est en cours d'exécution.
$ sudo ufw status
Vous devriez voir quelque chose comme ce qui suit.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Autorisez également les ports HTTP et HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Vérifiez à nouveau l'état du pare-feu.
$ sudo ufw status
Vous devriez voir une sortie similaire.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Étape 2 - Installez PHP et ses extensions
Debian 12 est livré par défaut avec la version PHP 8.2. Vous pouvez l'installer ainsi que les extensions requises par Magento en exécutant la commande suivante.
$ sudo apt install php-fpm php-cli php-mysql php-mbstring php-xml php-gd php-bcmath php-zip php-curl php-tidy php-intl php-soap php-xsl libsodium-dev libsodium23 libssl-dev libcurl4-openssl-dev
Pour toujours rester sur la dernière version de PHP ou si vous souhaitez installer plusieurs versions de PHP, ajoutez le dépôt PHP d'Ondrej.
Tout d’abord, importez la clé PHP GPG du dépôt de Sury.
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Ajoutez le référentiel PHP d'Ondrej Sury.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Mettez à jour la liste des référentiels système.
$ sudo apt update
Ensuite, installez PHP et ses extensions requises par Magento.
$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap php8.2-xsl libsodium-dev libsodium23 libssl-dev libcurl4-openssl-dev
Vérifiez l'installation.
$ php --version
PHP 8.2.8 (cli) (built: Jul 16 2023 11:00:43) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.8, Copyright (c) Zend Technologies
with Zend OPcache v8.2.8, Copyright (c), by Zend Technologies
Étape 3 - Installer Composer
Composer est un outil de gestion des dépendances pour PHP et est requis pour l'installation de Magento.
Exécutez les commandes suivantes pour télécharger le binaire Composer. Magento nécessite Composer 2.2 LTS, nous avons donc modifié la commande en conséquence.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"
Installez Composer en déplaçant le binaire vers le répertoire /usr/local/bin
.
$ sudo mv composer.phar /usr/local/bin/composer
Vérifiez l'installation en vérifiant sa version.
$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40
Étape 4 - Installer MariaDB
Debian 12 n'est pas livré avec MySQL par défaut et n'a pas encore publié de package officiel pour celui-ci. Par conséquent, nous utiliserons MariaDB pour cela. MariaDB n'a pas non plus de package officiel pour Debian 12, mais Debian est livré avec. Par conséquent, installez-le à l’aide de la commande suivante.
$ sudo apt install mariadb-server
Vérifiez la version de MySQL.
$ mysql --version
mysql Ver 15.1 Distrib 10.11.3-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Désormais, cette version de MariaDB n'est pas prise en charge par Magento et le package officiel MariaDB pour Debian 12 n'est pas disponible pour le moment. Nous allons donc poursuivre l’installation et utiliser une solution de contournement ultérieurement pour contourner la restriction.
Exécutez le script d'installation sécurisée MariaDB.
$ sudo mysql_secure_installation
Il vous sera demandé le mot de passe root. Appuyez sur Entrée car nous n'avons défini aucun mot de passe pour cela.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
Ensuite, il vous sera demandé si vous souhaitez passer à la méthode d'authentification par socket Unix. Le plugin unix_socket
vous permet d'utiliser les informations d'identification de votre système d'exploitation pour vous connecter au serveur MariaDB. Puisque vous disposez déjà d'un compte root protégé, entrez n
pour continuer.
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
Ensuite, il vous sera demandé si vous souhaitez modifier votre mot de passe root. Sur Debian 12, le mot de passe root est étroitement lié à la maintenance automatisée du système, il doit donc être laissé tel quel. Tapez n
pour continuer.
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] n
Ensuite, certaines questions vous seront posées pour améliorer la sécurité de MariaDB. Tapez Y pour supprimer les utilisateurs anonymes, interdire les connexions root à distance, supprimer la base de données de test et recharger les tables de privilèges.
... skipping.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Vous pouvez accéder au shell MariaDB en tapant sudo mysql
ou sudo mariadb
sur la ligne de commande.
Étape 5 - Configurer MariaDB
Connectez-vous au shell MariaDB.
$ sudo mysql
Créez une base de données pour Magento.
mysql> CREATE DATABASE magento;
Créez un compte utilisateur SQL.
mysql> CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'Your_password2';
Accordez tous les privilèges sur la base de données à l'utilisateur.
mysql> GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';
Puisque nous ne modifions pas l'utilisateur root, vous devez créer un autre utilisateur SQL pour effectuer des tâches administratives qui utilisent l'authentification par mot de passe. Choisissez un mot de passe fort pour celui-ci.
MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;
Vider les privilèges utilisateur.
mysql> FLUSH PRIVILEGES;
Quittez le shell.
mysql> exit
Étape 6 - Installer Nginx
Debian 12 est livré avec une ancienne version de Nginx. Pour installer la dernière version, vous devez télécharger le référentiel officiel Nginx.
Importez la clé de signature de Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Ajoutez le référentiel pour la version stable de Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Mettez à jour les référentiels système.
$ sudo apt update
Installez Nginx.
$ sudo apt install nginx
Vérifiez l'installation. Sur les systèmes Debian, la commande suivante ne fonctionnera qu'avec sudo
.
$ sudo nginx -v
nginx version: nginx/1.24.0
Démarrez le serveur Nginx.
$ sudo systemctl start nginx
Vérifiez l'état du service.
? nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-08-02 06:45:52 UTC; 14s ago
Docs: https://nginx.org/en/docs/
Process: 18326 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 18327 (nginx)
Tasks: 2 (limit: 2315)
Memory: 1.8M
CPU: 11ms
CGroup: /system.slice/nginx.service
??18327 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??18328 "nginx: worker process"
Étape 7 - Installer SSL
Nous devons installer Certbot pour générer le certificat SSL. Vous pouvez soit installer Certbot à l'aide du référentiel Debian, soit récupérer la dernière version à l'aide de l'outil Snapd. Nous utiliserons la version Snapd.
Debian 12 n'est pas fourni avec Snapd installé. Installez le package Snapd.
$ sudo apt install snapd
Exécutez les commandes suivantes pour vous assurer que votre version de Snapd est à jour.
$ sudo snap install core && sudo snap refresh core
Installez Certbot.
$ sudo snap install --classic certbot
Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers le répertoire /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Vérifiez si Certbot fonctionne correctement.
$ certbot --version
certbot 2.6.0
Exécutez la commande suivante pour générer un certificat SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d magento.example.com
La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/magento.example.com
sur votre serveur.
Générez un certificat de groupe Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Vérifiez le service de planification de renouvellement Certbot.
$ sudo systemctl list-timers
Vous trouverez snap.certbot.renew.service
comme l'un des services dont l'exécution est planifiée.
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Wed 2023-08-02 08:09:00 UTC 9h left Wed 2023-08-02 07:39:06 UTC 2h 59min ago snap.certbot.renew.timer snap.certbot.renew.service
Thu 2023-08-03 06:41:11 UTC 9h left Wed 2023-08-02 06:24:33 UTC 10h ago apt-daily-upgrade.timer apt-daily-upgrade.service
Wed 2023-08-02 14:06:00 UTC 11h left Sun 2021-11-14 02:03:02 UTC 5min ago apt-daily.timer apt-daily.service
Effectuez un essai à sec du processus pour vérifier si le renouvellement SSL fonctionne correctement.
$ sudo certbot renew --dry-run
Si vous ne voyez aucune erreur, vous êtes prêt. Votre certificat se renouvellera automatiquement.
Étape 8 - Installer Elasticsearch
Elasticsearch est utilisé par Magento pour les recherches de produits. Nous installerons Elasticsearch 7.x en utilisant son référentiel officiel puisque c'est la version compatible avec Magento.
Importez la clé GPG d'Elasticsearch.
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
Ajoutez le référentiel Elasticsearch.
$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Mettez à jour la liste des référentiels du système.
$ sudo apt update
Installez Elasticsearch.
$ sudo apt install elasticsearch
Elasticsearch utilise beaucoup de mémoire. Vous devez limiter son utilisation en fonction de la taille de votre serveur. Créez le fichier /etc/elasticsearch/jvm.options.d/memory.options
et ouvrez-le pour le modifier.
$ sudo nano /etc/elasticsearch/jvm.options.d/memory.options
Collez-y le code suivant. Modifiez les valeurs en fonction de la taille de votre serveur. La première valeur fait référence à la mémoire initiale et la seconde à la mémoire maximale disponible. Pour 1 Go et plus, utilisez le format -Xms1g
.
-Xms512m
-Xmx784m
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité. Cela configure Elasticsearch pour utiliser 1 Go de RAM. Vous pouvez utiliser n'importe quelle valeur si nécessaire.
Démarrez et activez le service.
$ sudo systemctl enable elasticsearch --now
Vérifiez si Elasticsearch fonctionne.
$ curl http://localhost:9200
Vous devriez voir le résultat suivant.
{
"name" : "magento",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "LNFRevgvQIOGeWCdtvc7bA",
"version" : {
"number" : "7.17.12",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "e3b0c3d3c5c130e1dc6d567d6baef1c73eeb2059",
"build_date" : "2023-07-20T05:33:33.690180787Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Étape 9 - Installer le serveur Redis
Magento utilise Redis pour le stockage de session et de cache. C'est entièrement facultatif et vous pouvez utiliser la base de données pour le stockage de session. Mais Redis fait un meilleur travail. La dernière version de Magento fonctionne avec Redis 7.0. Debian est livré avec Redis 6.0, nous utiliserons donc le référentiel Redis pour l'installation.
Importez la clé officielle Redis GPG.
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
Ajoutez le référentiel APT à votre liste de sources.
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
Mettez à jour la liste des référentiels système.
$ sudo apt update
Exécutez la commande suivante pour installer le serveur Redis.
$ sudo apt install redis
Confirmez la version Redis.
$ redis-server -v
Redis server v=7.0.12 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=d706905cc5f560c1
Vérifions la connexion au service en utilisant la commande suivante.
$ redis-cli
Vous serez basculé vers le shell Redis.
La première étape consiste à définir le mot de passe de l'utilisateur par défaut de Redis. Remplacez Your_Redis_Password
par un mot de passe fort de votre choix. Assurez-vous de préfixer le mot de passe avec le caractère >
.
127.0.0.1:6379> acl setuser default >Your_Redis_Password
Testez l'authentification Redis.
127.0.0.1:6379> AUTH Your_Redis_Password
OK
Pingez le service.
127.0.0.1:6379> ping
PONG
Quittez le service en tapant exit
.
Étape 10 - Téléchargez Magento
Créez un répertoire racine Web pour Magento.
$ sudo mkdir /var/www/magento -p
Donnez les droits sur l'annuaire Magento à l'utilisateur actuel.
$ sudo chown $USER:$USER /var/www/magento/ -R
Avant d'aller plus loin, vous devez utiliser les clés d'authentification requises par le référentiel Magento. Visitez le site Web https://account.magento.com/
et vous obtiendrez la page suivante vous demandant de vous connecter à l'aide de votre Adobe ID.
Cliquez sur le bouton Connectez-vous avec Adobe ID pour accéder à la page suivante.
Si vous disposez d'un Adobe ID, saisissez vos informations d'identification pour continuer ou vous pouvez créer un compte ici. Une fois que vous avez créé votre compte et connecté, ouvrez l'URL https://marketplace.magento.com/customer/accessKeys/
. Vous pouvez également accéder à cette page en visitant votre profil et en cliquant sur le lien Clés d'accès.
Cliquez sur le bouton Créer une nouvelle clé d'accès pour créer votre clé d'authentification. Donnez un nom à votre clé pour identification.
Notez les clés publique et privée pour l'étape suivante.
Créez le fichier ~/.config/composer/auth.json
et ouvrez-le pour le modifier.
$ nano ~/.config/composer/auth.json
Collez-y le code suivant. Utilisez la clé publique pour le nom d'utilisateur et la clé privée pour le mot de passe.
{
"http-basic": {
"repo.magento.com": {
"username": "<public_key>",
"password": "<private_key>"
}
}
}
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.
Basculez vers le répertoire /var/www/magento
.
$ cd /var/www/magento
Créez le projet Magento. Notez le point
à la fin de la commande. Il fait référence au répertoire actuel dans lequel la commande est exécutée.
$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Vous devriez voir une sortie similaire.
Creating a "magento/project-community-edition" project at "./"
Installing magento/project-community-edition (2.4.6-p1)
- Downloading magento/project-community-edition (2.4.6-p1)
- Installing magento/project-community-edition (2.4.6-p1): Extracting archive
Created project in /var/www/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 565 installs, 0 updates, 0 removals
- Locking 2tvenom/cborencode (1.0.2)
- Locking adobe-commerce/adobe-ims-metapackage (2.2.0)
- Locking allure-framework/allure-codeception (v2.3.0)
- Locking allure-framework/allure-php-commons (v2.3.1)
- Locking allure-framework/allure-phpunit (v2.1.0)
...............................................
Il y a un problème avec l'exemple de fichier de configuration Nginx fourni par Adobe. Exécutez la commande suivante pour résoudre ce problème.
$ sed -i 's/php-fpm:9000/fastcgi_backend/g' /var/www/magento/nginx.conf.sample
Exécutez les commandes suivantes pour définir les autorisations de fichiers et rendre le binaire Magento exécutable. Définissez également le propriétaire du répertoire Magento sur l'utilisateur Nginx afin qu'il puisse accéder au site Web.
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
$ sudo chmod u+x bin/magento
Étape 11 - Installer Magento
Avant de procéder à l'installation, nous devons modifier le programme d'installation afin qu'il nous permette d'utiliser MariaDB 10.11.3 qui n'est actuellement pas pris en charge par Magento. Magento prend jusqu'à présent en charge les versions MariaDB 10.2-10.6.
Ouvrez le fichier /var/www/magento/app/etc/di.xml
pour le modifier.
$ sudo nano /var/www/magento/app/etc/di.xml
Recherchez la ligne suivante.
<item name="MariaDB-(10.2-10.6)" xsi:type="string">^10\.[2-6]\.</item>
Remplacez-le par le code suivant.
<item name="MariaDB-(10.2-10.11)" xsi:type="string">^10\.([2-9]|10|11)\.</item>
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.
Assurez-vous que vous êtes dans le répertoire Magento.
$ cd /var/www/magento
Exécutez la commande suivante pour installer Magento.
$ bin/magento setup:install \
--base-url=http://magento.example.com \
--use-secure=1 \
--base-url-secure=https://magento.example.com \
--use-secure-admin=1 \
--db-host=localhost \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
[email \
--admin-user=navjot \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=http://127.0.0.1 \
--elasticsearch-port=9200 \
--session-save=redis \
--session-save-redis-db=0 \
--session-save-redis-password=redis_password \
--cache-backend=redis \
--cache-backend-redis-db=2 \
--cache-backend-redis-password=redis_password \
--page-cache=redis \
--page-cache-redis-db=4 \
--page-cache-redis-password=redis_password
Une fois le processus terminé, vous obtiendrez un résultat similaire.
.......
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_11xb2x
Nothing to import.
Notez l'URI Admin dont vous aurez besoin plus tard pour accéder au panneau d'administration.
Créez des tâches cron Magento.
$ php bin/magento cron:install
Vérifiez la tâche cron.
$ crontab -l
Vous devriez voir le résultat suivant.
#~ MAGENTO START d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c
* * * * * /usr/bin/php8.2 /var/www/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/magento/var/log/magento.cron.log
#~ MAGENTO END d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c
Étape 12 - Configurer PHP-FPM
Ouvrez le fichier /etc/php/8.2/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Nous devons définir l'utilisateur/groupe Unix de processus PHP sur nginx. Recherchez les lignes user=www-data
et group=www-data
dans le fichier et remplacez-les par nginx
.
...
; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
; --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
; If the group is not set, the user's group is used.
user = nginx
group = nginx
...
Recherchez les lignes listen.owner=www-data
et listen.group=www-data
dans le fichier et remplacez-les par nginx
.
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.
Augmentez le temps d'exécution de PHP-FPM et PHP-CLI à 180 secondes.
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/cli/php.ini
Augmentez la limite de mémoire pour PHP-FPM de 128 Mo à 256 Mo. Vous pouvez augmenter la limite en fonction de la taille de votre serveur et de vos exigences.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini
Magento définit par défaut la limite de taille de fichier pour la bibliothèque multimédia à 2 Mo. Exécutez les commandes suivantes pour augmenter la limite de taille du fichier à 25 Mo.
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php/8.2/fpm/php.ini
Activez la compression Zlib.
$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php/8.2/fpm/php.ini
Redémarrez le service PHP-FPM.
$ sudo systemctl restart php8.2-fpm
Changez le groupe du répertoire des sessions PHP en Nginx.
$ sudo chgrp -R nginx /var/lib/php/sessions
Étape 13 - Configurer Nginx
Ouvrez le fichier /etc/nginx/nginx.conf
pour le modifier.
$ sudo nano /etc/nginx/nginx.conf
Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.
Créez et ouvrez le fichier /etc/nginx/conf.d/magento.conf
pour le modifier.
$ sudo nano /etc/nginx/conf.d/magento.conf
Collez-y le code suivant.
upstream fastcgi_backend {
server unix:/run/php/php8.2-fpm.sock;
}
server {
# Redirect any http requests to https
listen 80;
listen [::]:80;
server_name magento.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name magento.example.com;
set $MAGE_ROOT /var/www/magento;
include /var/www/magento/nginx.conf.sample;
client_max_body_size 25m;
access_log /var/log/nginx/magento.access.log;
error_log /var/log/nginx/magento.error.log;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/magento.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/magento.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/magento.example.com/chain.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
}
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.
Magento est livré avec un modèle de configuration Nginx sur /var/www/magento/nginx.conf.sample
que nous avons inclus dans notre configuration. La variable $MAGE_ROOT
pointe vers le répertoire racine Web de Magento que nous avons défini dans notre fichier et est utilisée dans l'exemple de fichier de configuration.
Vérifiez la syntaxe du fichier de configuration Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Redémarrez le service Nginx.
$ sudo systemctl restart nginx
Ouvrez le site Web Magento via l'URL https://magento.example.com
. Vous devriez voir la page suivante.
Si le CSS et le JS ne se chargent pas pour vous, exécutez les commandes suivantes.
$ cd /var/www/magento
$ php bin/magento setup:static-content:deploy -f
$ php bin/magento indexer:reindex
Étape 14 - Désactiver l'authentification à deux facteurs
Avant d'accéder au panneau d'administration, nous devons désactiver l'authentification à deux facteurs qui est activée par défaut. Magento essaie d'envoyer du courrier via sendmail
pour activer l'authentification à deux facteurs lors de l'installation, mais comme nous ne l'avons pas configuré, la seule façon d'accéder au tableau de bord est d'abord de désactiver la fonctionnalité.
Si sendmail
est configuré sur votre serveur pour envoyer des e-mails, vous pouvez ignorer cette étape. Pour désactiver l'authentification à deux facteurs, nous devons désactiver deux des modules de Magento à l'aide des commandes suivantes.
$ php /var/www/magento/bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:disable Magento_TwoFactorAuth
Exécutez la commande suivante pour créer les classes.
$ php /var/www/magento/bin/magento setup:di:compile
Nettoyez également le cache.
$ php /var/www/magento/bin/magento c:c
Étape 15 - Accédez au portail d'administration
Vous devrez ouvrir le portail d'administration en utilisant l'URI que le script d'installation de Magento vous a fourni. Si vous avez oublié de le noter ou si vous l'avez perdu, vous pouvez récupérer l'URI à l'aide de la commande suivante.
$ php /var/www/magento/bin/magento info:adminuri
Admin URI: /admin_11xb2x
Ouvrez l'URL https://magento.example.com/admin_11xb2x
dans votre navigateur et vous obtiendrez l'écran suivant.
Saisissez vos informations d'identification d'administrateur fournies lors de l'installation et cliquez sur le bouton Connexion pour continuer. Vous serez accueilli avec l’écran suivant.
Vous recevrez une fenêtre contextuelle demandant l'autorisation à Adobe de collecter des données d'utilisation. Cliquez sur le bouton Ne pas autoriser pour continuer.
L'étape suivante consiste à configurer SMTP pour les e-mails afin que nous puissions réactiver l'authentification à deux facteurs. Visitez le menu Magasins >> Configuration.
Développez le Menu avancé sur le côté gauche et cliquez sur l'option Systèmes pour ouvrir la page des paramètres de messagerie.
Décochez la case Utiliser la valeur système devant les options Transport, Hôte et Port. Cliquez sur le menu déroulant Transport et sélectionnez SMTP. Pour notre didacticiel, nous utilisons Amazon SES comme logiciel de messagerie.
Entrez votre hôte SMTP, 587 comme port, nom d'utilisateur et mot de passe, définissez Auth sur LOGIN et définissez SSL sur TLS dans les champs donnés. Cliquez sur le bouton Enregistrer la configuration lorsque vous avez terminé. Maintenant que nous avons configuré les paramètres de messagerie, l'étape suivante consiste à configurer les identifiants de messagerie du magasin afin que nous puissions les tester.
Faites défiler vers le haut et développez le menu Général sur la même page, puis sélectionnez l'option Enregistrer les adresses e-mail.
Décochez les champs Email de l'expéditeur par défaut et saisissez les identifiants de messagerie de votre boutique. Cliquez sur le bouton Enregistrer la configuration lorsque vous avez terminé. De même, ouvrez l'écran Contacts et effectuez les mêmes modifications, puis cliquez sur le bouton Enregistrer la configuration pour terminer.
La modification des options d'administrateur peut affecter le cache et vous recevrez un avertissement. Exécutez la commande suivante pour vider le cache manuellement.
$ php /var/www/magento/bin/magento c:c
Pour tester les e-mails, visitez la page vitrine et ouvrez la page Contactez-nous
. Vous pouvez utiliser l'URL https://magento.example.com/contact/
directement pour y accéder. Envoyez un message test et cliquez sur le bouton Envoyer. Vous devriez recevoir un mail similaire.
Étape 16 - Activer et configurer l'authentification à deux facteurs
Maintenant que nous avons activé le courrier SMTP, il est temps de réactiver l'authentification à deux facteurs. Exécutez les commandes suivantes pour activer l'authentification à deux facteurs.
$ php /var/www/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:enable Magento_TwoFactorAuth
Mettez à niveau la configuration des modules.
$ php /var/www/magento/bin/magento setup:upgrade
Exécutez la commande suivante pour créer les classes.
$ php /var/www/magento/bin/magento setup:di:compile
Nettoyez également le cache.
$ php /var/www/magento/bin/magento c:c
Si vous ne parvenez pas à accéder à la zone d'administration, exécutez également les commandes suivantes.
Forcez le déploiement du contenu statique.
$ php /var/www/magento/bin/magento setup:static-content:Deploy -f
Définissez les autorisations du fichier.
$ cd /var/www/magento
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
Visitez le portail d'administration et vous obtiendrez l'écran suivant.
Nous utiliserons la méthode Google Authenticator. Vous pouvez utiliser une clé matérielle si vous en avez. La méthode Google Authenticator fonctionne avec n'importe quelle application TOTP, notamment Authy, 1Password, Bitwarden, Microsoft Authenticator, etc. Cliquez sur le bouton Appliquer pour continuer.
Sur la page suivante, vous obtiendrez le code QR à scanner avec votre application 2FA. Saisissez les détails dans votre application et copiez le code généré dans le champ Code d'authentification. Cliquez sur le bouton Confirmer pour accéder au tableau de bord d'administration.
Conclusion
Ceci conclut notre tutoriel sur l'installation du site de commerce électronique Magento sur un serveur Debian 12 avec un serveur Nginx et Elasticsearch. Si vous avez des questions, postez-les dans les commentaires ci-dessous.