Modification de docroot pour améliorer la sécurité

Dans une installation standard avec un serveur web Apache, Adobe Commerce est installé sur la racine web par défaut : /var/www/html/magento2.

Le répertoire magento2/ contient les éléments suivants :

  • pub/
  • setup/
  • var/

L’application est diffusée à partir de /var/www/html/magento2/pub. Le reste du système de fichiers est vulnérable, car il est accessible à partir d’un navigateur.
La définition du dossier webroot sur le répertoire pub/ empêche les visiteurs du site d’accéder à des zones sensibles du système de fichiers à partir d’un navigateur.

Cette rubrique décrit comment modifier le docroot Apache sur une instance existante pour servir les fichiers du répertoire pub/, qui est plus sécurisé.

Remarque concernant nginx

Si vous utilisez nginx et le fichier nginx.conf.sample inclus dans le répertoire d’installation, vous diffusez probablement déjà des fichiers à partir du répertoire pub/.

Lorsqu'elle est utilisée dans le bloc de votre serveur qui définit votre site, la configuration nginx.conf.sample remplace les paramètres docroot de votre serveur pour servir les fichiers du répertoire pub/. Voir par exemple la dernière ligne dans la configuration suivante :

# /etc/nginx/sites-available/magento

upstream fastcgi_backend {
   server  unix:/run/php/php7.4-fpm.sock;
}

server {

         listen 80;
         server_name 192.168.33.10;
         set $MAGE_ROOT /var/www/html/magento2ce;
         include /var/www/html/magento2ce/nginx.conf.sample;
}

Avant de commencer

Pour terminer ce tutoriel, vous devez accéder à une installation opérationnelle s’exécutant sur une pile LAMP :

  • Linux
  • Apache (2.4+)
  • MySQL (5.7+)
  • PHP (7.4)
  • Elasticsearch (7.x) ou OpenSearch (1.2)
  • Adobe Commerce (2.4+)
NOTE
Pour plus d’informations, consultez les Conditions préalables et le Guide d’installation .

1. Modifiez la configuration de votre serveur

Le nom et l’emplacement de votre fichier d’hôte virtuel dépendent de la version d’Apache que vous exécutez. Cet exemple illustre le nom et l’emplacement du fichier d’hôte virtuel sur Apache v2.4.

  1. Connectez-vous à votre serveur d’applications.

  2. Modifiez votre fichier d’hôte virtuel :

    code language-bash
    vim /etc/apache2/sites-available/000-default.conf
    
  3. Ajoutez le chemin d’accès à votre répertoire pub/ à la directive DocumentRoot :

    code language-conf
    <VirtualHost *:80>
    
             ServerAdmin webmaster@localhost
             DocumentRoot /var/www/html/magento2ce/pub
    
             ErrorLog ${APACHE_LOG_DIR}/error.log
             CustomLog ${APACHE_LOG_DIR}/access.log combined
    
             <Directory "/var/www/html">
                         AllowOverride all
             </Directory>
     </VirtualHost>
    
  4. Redémarrez Apache :

    code language-bash
    systemctl restart apache2
    

2. Mettre à jour l’URL de base

Si vous avez ajouté un nom de répertoire au nom d’hôte ou à l’adresse IP de votre serveur pour créer l’URL de base lors de l’installation de l’application (par exemple, http://192.168.33.10/magento2), vous devez la supprimer.

NOTE
Remplacez 192.168.33.10 par le nom d’hôte de votre serveur.
  1. Connectez-vous à la base de données :

    code language-bash
    mysql -u <user> -p
    
  2. Indiquez la base de données que vous avez créée lors de l'installation de l'application :

    code language-shell
    use <database-name>
    
  3. Mettez à jour l’URL de base :

    code language-shell
    UPDATE core_config_data SET value='http://192.168.33.10' WHERE path='web/unsecure/base_url';
    

3. Mettre à jour le fichier env.php

Ajoutez le noeud suivant au fichier env.php.

'directories' => [
    'document_root_is_pub' => true
]

Pour plus d’informations, consultez la référence env.php .

4. Changement de mode

Les modes d'application, qui comprennent production et developer, sont conçus pour améliorer la sécurité et faciliter le développement. Comme les noms le suggèrent, vous devez passer en mode developer lors de l’extension ou de la personnalisation de l’application et passer en mode production lors de l’exécution dans un environnement en ligne.

Le basculement entre les modes est une étape importante pour vérifier que la configuration de votre serveur fonctionne correctement. Vous pouvez basculer entre les modes à l’aide de l’outil d’interface en ligne de commande :

  1. Accédez au répertoire d’installation.

  2. Passez en mode production.

    code language-bash
    bin/magento deploy:mode:set production
    
    code language-bash
    bin/magento cache:flush
    
  3. Actualisez votre navigateur et vérifiez que le storefront s’affiche correctement.

  4. Passez en mode developer.

    code language-bash
    bin/magento deploy:mode:set developer
    
    code language-bash
    bin/magento cache:flush
    
  5. Actualisez votre navigateur et vérifiez que le storefront s’affiche correctement.

5. Vérification du storefront

Accédez au storefront dans un navigateur web pour vérifier que tout fonctionne.

  1. Ouvrez un navigateur web et saisissez le nom d’hôte ou l’adresse IP de votre serveur dans la barre d’adresse. Par exemple, http://192.168.33.10.

    La figure suivante présente un exemple de page de storefront. S’il s’affiche comme suit, votre installation a réussi !

    Storefront qui vérifie une installation réussie

    Reportez-vous à la section de dépannage si la page affiche une page 404 (Introuvable) ou si elle ne parvient pas à charger d’autres ressources telles que des images, du code CSS et du code JS.

  2. Essayez d’accéder à un répertoire d’application à partir d’un navigateur. Ajoutez le nom du répertoire au nom d’hôte ou à l’adresse IP de votre serveur dans la barre d’adresse :

    Si vous voyez un message 404 ou "Accès refusé", vous avez réussi à restreindre l’accès au système de fichiers.

    Accès refusé

recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995