Configuration de plusieurs sites web avec Nginx

Nous supposons que :

  • Vous travaillez sur une machine de développement (ordinateur portable, machine virtuelle ou autre).

    Des tâches supplémentaires peuvent être nécessaires pour déployer plusieurs sites web dans un environnement hébergé. Pour plus d’informations, contactez votre fournisseur d’hébergement.

    Des tâches supplémentaires sont requises pour configurer Adobe Commerce sur l’infrastructure cloud. Une fois les tâches décrites dans cette rubrique terminées, reportez-vous à la section Configuration de plusieurs sites Web ou magasins du guide sur l’infrastructure de Commerce on Cloud.

  • Vous acceptez plusieurs domaines dans un fichier d’hôte virtuel ou utilisez un hôte virtuel par site web ; les fichiers de configuration de l’hôte virtuel se trouvent dans /etc/nginx/sites-available.

  • Vous utilisez le nginx.conf.sample fourni par Commerce avec uniquement les modifications abordées dans ce tutoriel.

  • Le logiciel Commerce est installé dans /var/www/html/magento2.

  • Vous avez deux sites web autres que le site par défaut :

    • french.mysite.mg avec le code de site web french et le code d’affichage de magasin fr
    • german.mysite.mg avec le code de site web german et le code d’affichage de magasin de
    • mysite.mg est le site web par défaut et la vue de magasin par défaut
TIP
Pour obtenir de l’aide sur la localisation de ces valeurs, reportez-vous aux sections Créer des sites web et Créer des vues de magasin .

Voici une feuille de route pour la configuration de plusieurs sites web avec nginx :

  1. Configurez les sites web, les magasins et les vues de magasin dans l’administrateur.

  2. Créez un hôte virtuel Nginx) pour mapper de nombreux sites web ou un hôte virtuel Nginx par site web Commerce (étapes détaillées ci-dessous).

  3. Transmettez les valeurs des variables MAGE $MAGE_RUN_TYPE et $MAGE_RUN_CODE à ingérer à l’aide du nginx.conf.sample fourni par le Magento (étapes détaillées ci-dessous).

    • $MAGE_RUN_TYPE peut être store ou website :

      • Utilisez website pour charger votre site web dans votre vitrine.
      • Utilisez store pour charger n’importe quelle vue de magasin dans votre storefront.
    • $MAGE_RUN_CODE est le code d’affichage unique du site web ou du magasin qui correspond à $MAGE_RUN_TYPE.

  4. Mettez à jour la configuration de l’URL de base sur l’administrateur Commerce.

Étape 1 : Création de sites web, magasins et magasins d’affichages dans l’administration

Voir Configuration de plusieurs sites web, magasins et vues de magasin dans l’Admin.

Étape 2 : création d’hôtes virtuels nginx

Cette étape explique comment charger des sites web sur le storefront. Vous pouvez utiliser des sites web ou des vues de magasin ; si vous utilisez des vues de magasin, vous devez ajuster les valeurs de paramètre en conséquence. Vous devez effectuer les tâches de cette section en tant qu’utilisateur disposant des privilèges sudo.

En n'utilisant qu'un fichier d'hôte virtuel nginx, vous pouvez garder votre configuration nginx simple et propre. En utilisant plusieurs fichiers d’hôtes virtuels, vous pouvez personnaliser chaque magasin (pour utiliser un emplacement personnalisé pour french.mysite.mg par exemple).

Pour créer un hôte virtuel (simplifié) :

Cette configuration s’étend sur la configuration nginx.

  1. Ouvrez un éditeur de texte et ajoutez le contenu suivant à un nouveau fichier nommé /etc/nginx/sites-available/magento :

    code language-conf
    map $http_host $MAGE_RUN_CODE {
        default '';
        french.mysite.mg french;
        german.mysite.mg german;
    }
    
    server {
        listen 80;
        server_name mysite.mg french.mysite.mg german.mysite.mg;
        set $MAGE_ROOT /var/www/html/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store;
        include /var/www/html/magento2/nginx.conf;
    }
    
  2. Enregistrez vos modifications dans les fichiers et quittez l’éditeur de texte.

  3. Vérifiez la configuration du serveur :

    code language-bash
    nginx -t
    
  4. En cas de réussite, le message suivant s’affiche :

    code language-none
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    Si des erreurs s’affichent, vérifiez la syntaxe de vos fichiers de configuration d’hôte virtuel.

  5. Créez un lien symbolique dans le répertoire /etc/nginx/sites-enabled :

    code language-bash
    cd /etc/nginx/sites-enabled
    
    code language-bash
    ln -s /etc/nginx/sites-available/magento magento
    

Pour plus d’informations sur la directive map, consultez la documentation nginx sur la directive map.

Pour créer plusieurs hôtes virtuels :

  1. Ouvrez un éditeur de texte et ajoutez le contenu suivant à un nouveau fichier nommé /etc/nginx/sites-available/french.mysite.mg :

    code language-conf
    server {
        listen 80;
        server_name french.mysite.mg;
        set $MAGE_ROOT /var/www/html/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store;
        set $MAGE_RUN_CODE french;
        include /var/www/html/magento2/nginx.conf;
    }
    
  2. Créez un autre fichier nommé german.mysite.mg dans le même répertoire avec les contenus suivants :

    code language-conf
    server {
        listen 80;
        server_name german.mysite.mg;
        set $MAGE_ROOT /var/www/html/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store;
        set $MAGE_RUN_CODE german;
        include /var/www/html/magento2/nginx.conf;
    }
    
  3. Enregistrez vos modifications dans les fichiers et quittez l’éditeur de texte.

  4. Vérifiez la configuration du serveur :

    code language-bash
    nginx -t
    
  5. En cas de réussite, le message suivant s’affiche :

    code language-none
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    Si des erreurs s’affichent, vérifiez la syntaxe de vos fichiers de configuration d’hôte virtuel.

  6. Créez des liens symboliques dans le répertoire /etc/nginx/sites-enabled :

    code language-bash
    cd /etc/nginx/sites-enabled
    
    code language-bash
    ln -s /etc/nginx/sites-available/french.mysite.mg french.mysite.mg
    
    code language-bash
    ln -s /etc/nginx/sites-available/german.mysite.mg german.mysite.mg
    

Étape 3 : Modification de nginx.conf.sample

TIP
Ne modifiez pas le fichier nginx.conf.sample ; il s’agit d’un fichier Commerce principal qui peut être mis à jour avec chaque nouvelle version. Copiez plutôt le fichier nginx.conf.sample, renommez-le, puis modifiez le fichier copié.

Pour modifier le point d’entrée PHP de l’application principale :

Pour modifier le fichier nginx.conf.sample** :

  1. Ouvrez un éditeur de texte et passez en revue le fichier nginx.conf.sample ,<magento2_installation_directory>/nginx.conf.sample. Recherchez la section suivante :

    code language-conf
    # PHP entry point for main application
    location ~ (index|get|static|report|404|503|health_check)\.php$ {
        try_files $uri =404;
        fastcgi_pass   fastcgi_backend;
        fastcgi_buffers 1024 4k;
    
        fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
        fastcgi_param  PHP_VALUE "memory_limit=1G \n max_execution_time=18000";
        fastcgi_read_timeout 600s;
        fastcgi_connect_timeout 600s;
    
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
  2. Mettez à jour le fichier nginx.conf.sample avec les deux lignes suivantes avant l’instruction d’inclusion :

    code language-conf
    fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE;
    fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
    

Voici un exemple de point d’entrée PHP mis à jour pour l’application principale :

# PHP entry point for main application

location ~ (index|get|static|report|404|503|health_check)\.php$ {
    try_files $uri =404;
    fastcgi_pass   fastcgi_backend;
    fastcgi_buffers 1024 4k;

    fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
    fastcgi_param  PHP_VALUE "memory_limit=1G \n max_execution_time=18000";
    fastcgi_read_timeout 600s;
    fastcgi_connect_timeout 600s;

    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    # START - Multisite customization
    fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE;
    fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
    # END - Multisite customization
    include        fastcgi_params;
}

Étape 4 : mise à jour de la configuration de l’URL de base

Vous devez mettre à jour l’URL de base pour les sites web french et german dans l’administrateur Commerce.

Mettre à jour l’URL de base du site web français

  1. Connectez-vous à l’administrateur Commerce et accédez à Magasins > Paramètres > Configuration > Général > Web.
  2. Remplacez la portée de configuration par le site web french.
  3. Développez la section URL de base et mettez à jour la valeur URL de base et URL de lien de base vers http://french.magento24.com/.
  4. Développez la section URL de base (sécurisées) et mettez à jour la valeur URL de base sécurisée et URL de lien de base sécurisé vers https://french.magento24.com/.
  5. Cliquez sur Enregistrer la configuration et enregistrez les modifications apportées à la configuration.

Mettre à jour l’URL de base du site web allemand

  1. Connectez-vous à l’administrateur Commerce et accédez à Magasins > Paramètres > Configuration > Général > Web.
  2. Remplacez la portée de configuration par le site web german.
  3. Développez la section URL de base et mettez à jour la valeur URL de base et URL de lien de base vers http://german.magento24.com/.
  4. Développez la section URL de base (sécurisées) et mettez à jour la valeur URL de base sécurisée et URL de lien de base sécurisé vers https://german.magento24.com/.
  5. Cliquez sur Enregistrer la configuration et enregistrez les modifications apportées à la configuration.

Nettoyer le cache

Exécutez la commande suivante pour nettoyer les caches config et full_page.

bin/magento cache:clean config full_page

Vérification du site

À moins que vous n’ayez configuré DNS pour les URL de vos magasins, vous devez ajouter un itinéraire statique à l’hôte dans votre fichier hosts :

  1. Recherchez le fichier hosts de votre système d’exploitation.

  2. Ajoutez l’itinéraire statique au format :

    code language-conf
    <ip-address> french.mysite.mg
    <ip-address> german.mysite.mg
    
  3. Accédez à l’une des URL suivantes dans votre navigateur :

    code language-http
    http://mysite.mg/admin
    http://french.mysite.mg/frenchstoreview
    http://german.mysite.mg/germanstoreview
    
INFO
  • Des tâches supplémentaires peuvent être nécessaires pour déployer plusieurs sites web dans un environnement hébergé. Pour plus d’informations, contactez votre fournisseur d’hébergement.
  • Des tâches supplémentaires sont requises pour configurer Adobe Commerce sur l’infrastructure cloud. Voir Configuration de plusieurs sites Web ou magasins clouddans le guide sur l’infrastructure de Commerce on Cloud.

Dépannage

  • Si vos sites français et allemand renvoient 404 s mais que votre administrateur charge, veillez à avoir terminé Étape 6 : ajoutez le code de magasin à l’URL de base.
  • Si toutes les URL renvoient 404, veillez à redémarrer votre serveur web.
  • Si l’administrateur ne fonctionne pas correctement, assurez-vous de configurer correctement vos hôtes virtuels.
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c