Installer, configurer et sécuriser Magento sur Ubuntu et CentOS

Installation configuration et sécurité Magento sur Ubuntu 18.04/20.4/22.04 ou CentOS 7/8 redhat

Magento est une plateforme e-commerce open source populaire écrite en PHP. Elle fournit un système de panier flexible et un contrôle sur l’apparence, le contenu et les fonctionnalités de votre boutique en ligne. Magento peut être installé sur diverses distributions Linux comme Ubuntu, Debian, CentOS, RedHat etc.

Dans ce guide complet, nous verrons comment installer, configurer et sécuriser Magento 2 sur Ubuntu 18.04/20.4/22.04 et CentOS 7/8 à partir de zéro.

Prérequis

Avant de commencer l’installation, assurez-vous que votre serveur répond aux exigences suivantes :

  • Ubuntu 18.04/20.4/22.04 ou CentOS 7/8 avec accès root ou un utilisateur avec les privilèges sudo.
  • Serveur web Apache ou Nginx. Nous utiliserons Apache dans ce guide.
  • MySQL 5.6 ou MariaDB 10.0 ou supérieur.
  • PHP 7.4 ou plus récent avec les extensions requises comme php-mysql, php-curl, php-gd, php-bcmath, php-mbstring, php-xml, php-zip etc.
  • Gestionnaire de paquets Composer.
  • Certificat SSL pour l’accès HTTPS (optionnel mais recommandé).

Assurez-vous également que votre pare-feu autorise le trafic HTTP et HTTPS si vous avez activé le pare-feu sur le serveur.

Étape 1 – Installer la pile LAMP (Linux, Apache, MySQL, PHP)

Magento nécessite une pile LAMP ou LEMP pour fonctionner correctement. Voici les étapes pour installer Apache, MySQL et PHP sur Ubuntu :

# Installer Apache
$ sudo apt update
$ sudo apt install apache2
# Installer MySQL
$ sudo apt install mysql-server 
# Sécuriser l'installation de MySQL
$ sudo mysql_secure_installation
# Installer les paquets PHP requis
$ sudo apt install php php-cli php-mysql php-gd php-curl php-bcmath php-mbstring php-xml php-zip
# Redémarrer Apache
$ sudo systemctl restart apache2

Pour CentOS 7, vous pouvez installer la pile LAMP à l’aide des commandes suivantes :

# Installer Apache
$ sudo yum install httpd
# Démarrer Apache
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
# Installer MySQL
$ sudo yum install mysql-server
# Sécuriser l'installation de MySQL
$ sudo mysql_secure_installation
# Installer le dépôt EPEL  
$ sudo yum install epel-release yum-utils
# Installer le dépôt RPM Remi
$ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# Activer le dépôt PHP 7.3 Remi  
$ sudo yum-config-manager --enable remi-php74
# Installer PHP
$ sudo yum install php php-cli php-mysqlnd php-opcache php-gd php-curl php-mcrypt php-xml php-mbstring
# Redémarrer Apache
$ sudo systemctl restart httpd

Cela installera une pile LAMP de base sur les deux systèmes d’exploitation avec PHP 7.3 sur CentOS 7.

Étape 2 – Installer Composer

Composer est un gestionnaire de dépendances pour PHP qui vous permet d’installer Magento et ses dépendances. Voici les étapes pour installer Composer :

# Télécharger et installer Composer
$ curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Vérifiez l’installation avec :

$ composer --version

Étape 3 – Télécharger et installer Magento

Nous sommes maintenant prêts à installer Magento 2 à l’aide de Composer.

Créez le répertoire racine du document pour Magento :

$ sudo mkdir -p /var/www/html/magento2

Passez au répertoire racine du document :

$ cd /var/www/html/magento2

Exécutez Composer pour installer Magento :

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

Cela téléchargera et installera la dernière version de Magento 2 CE dans le répertoire actuel.

Étape 4 – Configurer la base de données pour Magento

Magento nécessite une base de données pour stocker ses données. Nous allons créer une nouvelle base de données et un nouvel utilisateur pour Magento.

Connectez-vous au shell MySQL :

$ sudo mysql -u root -p

Créez une nouvelle base de données :

CREATE DATABASE magento;

Créez un nouvel utilisateur et accordez les privilèges :

CREATE USER 'magento'@'localhost' IDENTIFIED BY 'mot_de_passe_fort';
GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost'; 

Vidage des privilèges et quitter :

FLUSH PRIVILEGES;
exit

Remplacez mot_de_passe_fort par un mot de passe fort de votre choix.

Étape 5 – Configurer Magento

Nous allons maintenant configurer Magento pour utiliser la base de données que nous venons de créer.

Renommez le fichier de configuration par défaut :

$ mv app/etc/env.php app/etc/env.php.bak

Ensuite, ouvrez app/etc/env.php dans votre éditeur :

$ sudo nano app/etc/env.php

Et mettez-le à jour avec vos informations d’identification de base de données :

return [
    'db' => [
        'table_prefix' => '',
        'connection' => [
            'default' => [
                'host' => 'localhost',
                'dbname' => 'magento',
                'username' => 'magento',
                'password' => 'mot_de_passe_fort',
                'model' => 'mysql4',
                'engine' => 'innodb',
                'initStatements' => 'SET NAMES utf8;',
                'active' => '1',
            ]
        ]
    ],
];

Enregistrez et fermez le fichier après avoir mis à jour les informations d’identification.

Étape 6 – Configurer les droits et autorisations

Pour des raisons de sécurité, les fichiers Magento doivent être détenus par l’utilisateur du serveur Web et définis avec les autorisations appropriées.

Trouvez votre utilisateur de serveur web :

$ ps aux | grep apache

Pour Ubuntu, il s’agit généralement de www-data. Pour CentOS, il s’agit de apache.

Définir le propriétaire :

$ sudo chown -R www-data:www-data /var/www/html/magento2

Définir les autorisations récursives :

$ sudo find /var/www/html/magento2 -type f -exec chmod 644 {} \;
$ sudo find /var/www/html/magento2 -type d -exec chmod 755 {} \;
$ sudo chmod o+w /var/www/html/magento2/var
$ sudo chmod o+w /var/www/html/magento2/pub/media
$ sudo chmod o+w /var/www/html/magento2/pub/static 

Cela restreint les autorisations et donne un accès approprié à l’utilisateur du serveur web pour lire/écrire des fichiers.

Étape 7 – Installer Magento

Nous pouvons maintenant procéder à l’installation finale à partir de l’interface web.

Accédez à http://votre_adresse_ip/magento2 dans votre navigateur. Cela lancera l’assistant d’installation.

  • Sélectionnez votre langue et cliquez sur Suivant.
  • Acceptez les conditions générales, entrez les détails de votre compte Admin et cliquez sur Suivant.
  • Configurez vos paramètres de boutique en ligne tels que l’URL de base, le fuseau horaire, etc. et cliquez sur Suivant.
  • Pour les données d’exemple, vous pouvez les ignorer pour l’instant.
  • Enfin, cliquez sur Installer pour terminer l’installation.

La configuration créera les tables de base de données nécessaires et installera Magento 2 CE !

Étape 8 – Configurer l’URL de base

Pour un fonctionnement correct, vous devez définir l’URL de base pour votre installation Magento 2.

Accédez au tableau de bord d’administration Magento à http://votre_adresse_ip/magento2/admin et connectez-vous avec vos informations d’identification d’administrateur.

Ensuite, allez dans Stores > Configuration > Général > Web.

Définissez Base URLs sur votre nom de domaine (exemple.com/magento2). Et cliquez sur Enregistrer la configuration.

Cela configurera l’URL de base afin que les assets et les liens fonctionnent correctement.

Étape 9 – Configurer les travaux cron

Magento nécessite certains travaux cron en arrière-plan pour gérer les tâches planifiées comme l’envoi d’e-mails, l’indexation, le nettoyage, etc.

Configurez cron pour Magento :

$ crontab -e

Ajoutez les lignes suivantes :

* * * * * /usr/bin/php /var/www/html/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/html/magento2/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/html/magento2/update/cron.php >> /var/www/html/magento2/var/log/update.cron.log  
* * * * * /usr/bin/php /var/www/html/magento2/bin/magento setup:cron:run >> /var/www/html/magento2/var/log/setup.cron.log

Cela exécutera respectivement le cron Magento, le cron de mise à jour et le cron de configuration et consignera la sortie dans des fichiers journaux.

Étape 10 – Sécuriser Magento

Magento fournit une plateforme flexible pour les sites de commerce électronique. Cependant, l’installation par défaut rend le site vulnérable aux exploits. Nous allons discuter ici de quelques étapes pour sécuriser davantage votre boutique Magento 2.

Utiliser HTTPS

Activez HTTPS sur votre serveur avec un certificat SSL valide. Tout le trafic, y compris l’accès administrateur, doit utiliser le protocole HTTPS. Il chiffre les communications et empêche l’écoute du trafic.

Informations d’identification administrateur solides

Changez le nom d’utilisateur administrateur par défaut et utilisez un mot de passe très robuste. Le compte admin a un accès complet à votre boutique, vos données et vos configurations. Protégez-le avec un mot de passe long et complexe.

Vous pouvez également configurer l’authentification à deux facteurs pour la connexion admin.

Limiter le chemin d’accès à l’administration

Changez le chemin /admin par défaut du tableau de bord d’administration en quelque chose d’unique comme /admin-secret. Cela empêche l’accès non autorisé via le chemin bien connu.

Désactiver l’exécution de fichiers

Désactivez l’exécution de fichiers PHP dans les répertoires Magento comme app, lib, dev, var, generated.

DisablePHPInDir /var/www/html/magento2/app
DisablePHPInDir /var/www/html/magento2/lib
DisablePHPInDir /var/www/html/magento2/dev 
DisablePHPInDir /var/www/html/magento2/var
DisablePHPInDir /var/www/html/magento2/generated

Cela empêche l’exécution de scripts PHP malveillants en cas de piratage du site.

Restreindre les autorisations

Suivez le principe du moindre privilège. Définissez des autorisations restrictives pour les fichiers/dossiers accessibles depuis le web. Limitez l’accès en écriture uniquement aux dossiers requis comme media, var, generated.

Surveiller les activités suspectes

Vérifiez régulièrement les journaux pour détecter toute activité non autorisée ou inhabituelle comme de multiples tentatives de connexion échouées à l’administration, modifications de fichiers, exécution de PHP dans des répertoires interdits, etc. Surveillez également les problèmes de performance.

Gardez les logiciels à jour

Magento publie fréquemment des correctifs de sécurité et des mises à jour de fonctionnalités. Gardez votre version Magento et vos extensions à jour pour bénéficier des dernières corrections de sécurité et améliorations.

Ajoutez des extensions de sécurité

Il existe plusieurs extensions comme Magento Security Scan, Magento Malware Scanner qui offrent une protection supplémentaire en surveillant les modifications, en vérifiant l’injection de malwares, en effectuant des audits de sécurité, etc.

Utilisez un pare-feu d’applications Web (WAF)

Un WAF fournit une protection supplémentaire en analysant le trafic web et en bloquant les exploits courants comme XSS, SQLi, RFI, etc. Il ajoute une couche de sécurité supplémentaire pour votre boutique en ligne.

En prenant ces mesures, vous pouvez avoir une installation Magento 2 sécurisée. La clé est de suivre les meilleures pratiques de sécurité, de restreindre l’accès, de surveiller les problèmes et de garder le logiciel à jour. Cela aidera à prévenir les compromissions et à protéger les données de vos clients.

Conclusion

Magento est une plateforme de commerce électronique riche en fonctionnalités qui fournit aux marchands des outils puissants pour créer des boutiques en ligne personnalisées. Ce guide détaillé a couvert la façon d’installer, configurer et sécuriser Magento 2 sur Ubuntu et CentOS pour une utilisation en production.

Quelques points clés sont :

  • Installer la pile LAMP ou LEMP comme prérequis
  • Utiliser Composer pour installer la dernière version de Magento
  • Créer la base de données et configurer les identifiants
  • Terminer la configuration initiale depuis l’interface web
  • Définir l’URL de base, les tâches cron planifiées
  • Sécuriser l’accès admin, activer HTTPS, restreindre les autorisations
  • Surveiller les problèmes, appliquer régulièrement les mises à jour/correctifs

Avec ces étapes, vous pouvez déployer Magento de manière sécurisée et tirer parti de ses capacités de commerce flexibles pour construire une boutique en ligne entièrement fonctionnelle.

Laisser un commentaire