Dans ce troisième article, je vais vous guider à travers l’installation et la configuration d’un site Magento sur un serveur VPS (Virtual Private Server). Ce guide détaillé couvre toutes les étapes nécessaires pour déployer Magento de manière sécurisée et optimale. Suivez attentivement chaque étape pour assurer une installation réussie.
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un serveur Linux (on utilise Ubuntu 24.04 dans ce guide).
- L’utilisateur du système est ubuntu.
- Un accès SSH au serveur avec des privilèges sudo.
- Une stack technologique déjà configurée comprenant Apache, PHP, MySQL, Elasticsearch, RabbitMQ, Redis et Composer (voir les articles précédents pour plus de détails).
- Un nom de domaine dont l’entrée A de la zone dns pointe vers l’adresse ip de votre serveur, ici monsitemagento.com
Création du Répertoire pour Magento
Commencez par créer un répertoire dédié pour votre installation Magento.
sudo mkdir /var/www/magento
Configuration du Virtual Host Apache
On va créer un Virtual Host Apache pour notre site web.
Navigation vers le Répertoire des Sites Disponibles
Accédez au répertoire où sont stockés les fichiers de configuration des sites disponibles d’Apache.
cd /etc/apache2/sites-available
ls -l
Création d’un Fichier de Configuration pour Magento
Copiez le fichier de configuration par défaut et créez un nouveau fichier spécifique à Magento.
sudo cp 000-default.conf demo.conf
sudo nano magento.conf
Modification du Fichier demo.conf
Modifiez le fichier magento.conf
en y ajoutant les directives suivantes. Remplacez monsitemagento.com
par votre propre nom de domaine et /var/www/magento/
par le chemin souhaité pour votre site Magento.
<VirtualHost *:80>
ServerName monsitemagento.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/magento
AllowEncodedSlashes NoDecode
<Directory "/var/www/magento/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Activation du Virtual Host
Activez le nouveau Virtual Host et rechargez Apache pour appliquer les changements.
sudo a2ensite magento
sudo systemctl reload apache2
Vérification des DNS
Assurez-vous que l’entrée A de votre domaine (monsitemagento.com
) pointe bien vers l’adresse IP de votre serveur VPS. Vous pouvez vérifier cela via votre gestionnaire de domaine ou en utilisant des outils comme What’s My DNS.
Obtention d’un Certificat SSL avec Certbot
Sécurisez votre site Magento en utilisant Certbot pour obtenir un certificat SSL de Let’s Encrypt.
sudo certbot --apache
Suivez les instructions à l’écran :
- Entrez votre adresse email pour recevoir les notifications concernant le renouvellement des certificats (si pas encore fait).
- Acceptez les termes du service en répondant
Y
. - Répondez
N
si vous ne souhaitez pas partager votre adresse email avec l’Electronic Frontier Foundation. - Choisissez le numéro correspondant à votre domaine (
monsitemagento.com
) pour configurer automatiquement HTTPS.
Vérification de l’Obtention du Certificat
Assurez-vous que Certbot a correctement configuré le certificat SSL en vérifiant les messages de succès affichés à l’écran. Vous pouvez également tester le renouvellement automatique avec la commande suivante :
sudo certbot renew --dry-run
Configuration des Permissions
Il est essentiel de configurer correctement les permissions des fichiers et répertoires pour assurer la sécurité et le bon fonctionnement de Magento.
Ajout de l’Utilisateur au Groupe www-data
Ajoutez votre utilisateur (ubuntu
) au groupe www-data
pour pouvoir éxecuter des commandes php bin/magento… sans erreurs.
sudo usermod -aG www-data ubuntu
sudo reboot
Attribution des Permissions Correctes
Assignez les bonnes permissions au répertoire de Magento. Ici le propriétaire sera l’utilisateur Apache (www-data et le groupe celui de notre utilisateur ubuntu).
sudo chown www-data:ubuntu /var/www/magento
sudo chmod 774 /var/www/magento
Création du projet Magento via Composer
Magento utilise Composer, un gestionnaire de dépendances pour PHP, pour gérer ses paquets et bibliothèques.
Obtention des Clés d’Authentification Magento
Pour télécharger Magento, vous aurez besoin de vos clés publiques et privées depuis le Magento Marketplace. Connectez-vous à votre compte et récupérez vos clés API.
Création du projet Magento avec Composer
Naviguez vers le répertoire de votre site Magento et créez le projet Magento. On utilise la Community Edition qui est la version open-source, Adobe Commerce, anciennement appelé Magento Enterprise est la version sous licence.
cd /var/www/magento
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Lors de l’exécution de cette commande, Composer vous demandera vos identifiants Magento Marketplace. Utilisez vos clés publique et privée respectivement pour le nom d’utilisateur et le mot de passe.
Vous serez également invité à stocker les informations d’authentification dans le fichier auth.json
. Répondez Y
pour les sauvegarder.
Composer téléchargera et installera toutes les dépendances nécessaires pour Magento.
Configuration des Permissions Post-Installation
Après la création du projet, configurez les permissions des fichiers et répertoires pour assurer la sécurité. Ces permissions sont très importantes sinon vous aurez des erreurs lors du build entre autre.
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 {} +
sudo chown -R ubuntu:www-data .
chmod u+x bin/magento
Installation de Magento
Lancez l’installation de Magento en utilisant la commande suivante. Remplacez les paramètres par vos propres informations.
Nous allons prendre le temps de décrypter cette commande, sa bonne compréhension est cruciale pour le bon déroulement.
php bin/magento setup:install \
--base-url="https://magento.pierrebultez.com/" \
--base-url-secure="https://magento.pierrebultez.com/" \
--db-host="127.0.0.1" \
--db-name="demo" \
--db-user="user" \
--db-password="password" \
--admin-firstname="Pierre" \
--admin-lastname="Bultez" \
--admin-email="contact@pierrebultez.com" \
--admin-user="admin" \
--admin-password="aC1fHNfaGd0ac06NEJ0y" \
--language="fr_FR" \
--currency="EUR" \
--timezone="Europe/Paris" \
--use-rewrites="1" \
--search-engine="elasticsearch7" \
--elasticsearch-host="localhost" \
--elasticsearch-port=9200 \
--elasticsearch-enable-auth="false" \
--elasticsearch-index-prefix=magento_demo \
--elasticsearch-timeout=15 \
--amqp-host="localhost" \
--amqp-port="5672" \
--amqp-user="user" \
--amqp-password="password" \
--amqp-virtualhost="/"
- –base-url = url de base du site
- –base-url-secure = url sécurisée du site
- –db-host = serveur de la base de données (pour nous localhost ou 127.0.0.1
- –db-name = nom de la base de données
- –db-user = utilisateur de la base de données
- –db-password = mot de passe de la base de données
- –admin-firstname = prénom du compte administrateur Magento
- –admin-lastname = nom de compte administrateur Magento
- –admin-email = email de l’administrateur
- –admin-user = identifiant du compte administrateur
- –admin-password = mot de passe du compte administrateur
- –language = language (bien que vous verrez Magento sera en Anglais, nous aborderons la traduction dans un autre article)
- –currency = devise utilisée sur la boutique
- –timezone = fuseau horaire de la boutique
- –use-rewrites = utiliser les réécritures Apache (toujours 1)
- –search-engine = outil de base de données pour indéxer le catalogue et permettre une recherche, pour nous Elasticsearch)
- –elasticsearch-host = adresse du serveur Elasticsearch (pour nous localhost ou 127.0.0.1)
- –elasticsearch-port = port utilisé par Elasticsearch (par defaut 9200)
- –elasticsearch-enable-auth = Activer ou non l’authentification par user/pass lors de la connection à Elasticsearch (pour notre configuration ce sera non)
- –elasticsearch-index-prefix = index de la base de données Elasticsearch
- –elasticsearch-timeout = timeout Elasticsearch (laisser par défaut)
- –amqp-host = adresse du serveur RabbitMQ (dans notre cas localhost ou 127.0.0.1)
- –amqp-port = port utilisé par RabbitMQ (5672 par défaut)
- –amqp-user = utilisateur RabbitMQ
- –amqp-password = motde passe de l’utilisateur RabbitMQ
- –amqp-virtualhost = virtual host RabbitMQ que nous allons utiliser (dans notre cas on va utiliser / qui est celui par defaut)
Confirmation de l’Installation
Une fois l’installation terminée, vous devriez voir un message de succès indiquant que Magento a été installé correctement. Notez l’URI d’administration fourni ce sera l’adresse de votre backoffice (https://monsitemagento.com/admin_hga8x3c dans notre cas).
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_hga8x3c
Nothing to import.
Désactivation des Modules de Sécurité Adobe
Par défaut Adobe Commerce / Magento utilise un système d’authentification à deux facteurs pour se connecter.
Notre serveur n’étant pas configuré pour l’envoi d’emails nous ne pourrons pas nous connecter. Alors on désactive les modules en question.
Si votre serveur est capable d’envoyer des emailsv (PHPmailer par exemple) alors vous pouvez laisser activer pour plus de sécurité.
Toutes les commandes php bin/magento ou bin/magento sont à executer dans le dossier d’installation du projet (var/www/magento dans notre cas).
bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth Magento_TwoFactorAuth
Passage en Mode Développeur
Configurez Magento en mode développeur pour faciliter le développement et le débogage.
php bin/magento deploy:mode:set developer
php bin/magento setup:upgrade
bin/magento indexer:reindex
bin/magento cache:clean && bin/magento cache:flush
- php bin/magento deploy:mode:set developer = activation du mode développeur
- php bin/magento setup:upgrade = mise à jour des modules Magento
- bin/magento indexer:reindex = réindexation de tous les index
- bin/magento cache:clean && bin/magento cache:flush = nettoyage et purge du cache Magento
Validation de l’Installation
Accès au Frontend et Backend
Accédez à votre site Magento via l’URL https://monsitemagento.com/
pour vérifier le frontend.
Et à l’URI d’administration https://monsitemagento.com/admin_hga8x3c
pour accéder au backend avec les identifiants que vous avez configurés.
Vérification des Fichiers et Permissions
Assurez-vous que tous les fichiers et permissions sont correctement configurés pour garantir la sécurité et les performances optimales de votre site Magento.
Configuration des Cron Jobs
Les tâches cron sont essentielles pour le bon fonctionnement de Magento, notamment pour la réindexation, les newsletters, les e-mails et les plans de site.
Installation des Cron Jobs
Installez les tâches cron en utilisant les commandes suivantes :
bin/magento cron:install
crontab -l
bin/magento cron:run
bin/magento cron:run --group default
- bin/magento cron:install = installe les tâches cron par défaut
- crontab -l = liste les tâches cron activées
- bin/magento cron:run = lance les tâches cron
- bin/magento cron:run –group default = lance les tâches cron pour le groupe par défaut
Il faut executer deux fois chaque commandes cron:run, une fois pour découvrir les tâches à executer, une seconde fois pour les executer. Après les tâches se feront automatiquement aux intervalles données.
Gestion des Tâches Cron
Magento utilise plusieurs groupes de tâches cron, notamment default
, index
, consumers
, staging
et catalog_event
. Assurez-vous que ces tâches sont correctement configurées pour éviter les problèmes de performance et de fonctionnalité.
Résolution des Erreurs Cron
Si vous rencontrez des erreurs, par exemple :
One or more indexers are invalid. Make sure your Magento cron job is running.
Vérifiez que les cron jobs sont bien en cours d’exécution et qu’ils sont correctement configurés.
Vous pouvez réindexer manuellement avec la commande bin/magento indexer:reindex
Résolution des Problèmes Spécifiques
Correction d’une Exception dans le Fichier Calendar.php
Si vous rencontrez l’exception suivante :
Exception #0 (Exception): Warning: Trying to access array offset on null in /var/www/magento/vendor/magento/framework/View/Element/Html/Calendar.php on line 114
Modifiez les lignes problématiques dans le fichier Calendar.php
:
sudo nano +114 /var/www/magento/vendor/magento/framework/View/Element/Html/Calendar.php
Remplacez les deux lignes concernées par le code suivant :
$this->assign('am', $this->encoder->encode($localeData['calendar']['gregorian']['AmPmMarkersAbbr'][0] ?? null));
$this->assign('pm', $this->encoder->encode($localeData['calendar']['gregorian']['AmPmMarkersAbbr'][1] ?? null));
Conclusion
Vous avez maintenant une boutique Magento entièrement fonctionnelle et sécurisée sur votre serveur.
Cette configuration de base est optimisée pour la performance et la sécurité, vous offrant une plateforme solide pour développer et gérer votre boutique en ligne. N’hésitez pas à explorer davantage les options de personnalisation et les extensions disponibles pour enrichir votre site selon vos besoins spécifiques.
Pour toute question ou assistance supplémentaire, je vous invite à me contacter directement.