Configuration de plusieurs sites web ou magasins
Vous pouvez configurer Adobe Commerce pour qu’il y ait plusieurs sites Web ou magasins, tels qu’un magasin anglais, un magasin français et un magasin allemand. Voir Présentation des sites web, des magasins et des vues de magasin.
Le processus de configuration de plusieurs magasins varie selon que vous choisissez d’utiliser des domaines uniques ou partagés.
Plusieurs magasins avec des domaines uniques :
https://first.store.com/
https://second.store.com/
Plusieurs magasins avec le même domaine :
https://store.com/first/
https://store.com/second/
Ajout de domaines
Les domaines personnalisés peuvent être ajoutés à Pro Staging et à tout environnement de production ; ils ne peuvent pas être ajoutés aux environnements d’intégration.
Le processus d’ajout d’un domaine dépend du type de compte Cloud :
-
Pour l’évaluation et la production Pro
Ajoutez le nouveau domaine à Fastly, consultez la section Gérer les domaines ou ouvrez un ticket d’assistance pour demander de l’aide. En outre, vous devez envoyer un ticket d’assistance Adobe Commerce pour demander l’ajout de nouveaux domaines à une grappe.
-
Pour la production de démarrage uniquement
Ajoutez le nouveau domaine à Fastly, voir Gérer les domaines ou Soumettre un ticket d’assistance Adobe Commerce pour demander de l’aide. En outre, vous devez ajouter le nouveau domaine à l’onglet Domains dans Cloud Console :
https://<zone>.magento.cloud/projects/<project-ID>/edit
Configuration de l’installation locale
Pour configurer votre installation locale de manière à utiliser plusieurs magasins, reportez-vous à la section Plusieurs sites Web ou magasins du Guide de configuration.
Après avoir créé et testé l’installation locale pour utiliser plusieurs magasins, vous devez préparer votre environnement d’intégration :
-
Configurer des itinéraires ou des emplacements : spécifiez la manière dont les URL entrantes sont gérées par Adobe Commerce.
-
Configuration de sites web, de magasins et de vues de magasin : configuration à l’aide de l’interface utilisateur d’administration d’Adobe Commerce
-
Modifier les variables—spécifiez les valeurs des variables
MAGE_RUN_TYPE
etMAGE_RUN_CODE
dans le fichiermagento-vars.php
-
Déployer et tester les environnements : déployez et testez la branche
integration
Mises à jour de configuration des environnements Pro
routes.yaml
et la configuration cron dans le fichier .magento.app.yaml
. Adobe recommande de mettre à jour et de tester les fichiers de configuration YAML dans un environnement d’intégration, puis de déployer les modifications dans l’environnement d’évaluation. Si vos modifications ne sont pas appliquées aux sites d’évaluation après le redéploiement et qu’il n’y a aucun message d’erreur associé dans le journal, alors vous devez envoyer un ticket d’assistance Adobe Commerce qui décrit les tentatives de modifications de configuration. Incluez tous les fichiers de configuration YAML mis à jour dans le ticket.Configuration d’itinéraires pour des domaines distincts
Les itinéraires définissent le traitement des URL entrantes. Plusieurs magasins avec des domaines uniques nécessitent de définir chaque domaine dans le fichier routes.yaml
. La configuration des itinéraires dépend de la manière dont votre site doit fonctionner.
Pour configurer des itinéraires dans un environnement d’intégration :
-
Sur votre poste de travail local, ouvrez le fichier
.magento/routes.yaml
dans un éditeur de texte. -
Définissez le domaine et les sous-domaines. La valeur
mymagento
en amont est la même valeur que la propriété name dans le fichier.magento.app.yaml
.code language-yaml "http://{default}/": type: upstream upstream: "mymagento:http" "http://<second-site>.{default}/": type: upstream upstream: "mymagento:http"
-
Enregistrez vos modifications dans le fichier
routes.yaml
. -
Passez à la configuration des sites web, des magasins et des vues de magasin.
Configuration des emplacements pour les domaines partagés
Lorsque la configuration des itinéraires définit le mode de traitement des URL, la propriété web
du fichier .magento.app.yaml
définit la manière dont votre application est exposée au web. Les emplacements web offrent une plus grande granularité pour les requêtes entrantes. Par exemple, si votre domaine est store.com
, vous pouvez utiliser /first
(site par défaut) et /second
pour les demandes envoyées à deux magasins différents qui partagent un domaine.
Pour configurer un nouvel emplacement web :
-
Créez un alias pour la racine (
/
). Dans cet exemple, l'alias est&app
sur la ligne 3.code language-yaml web: locations: "/": &app # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ...
-
Créez un pass-through pour le site web (
/website
) et référencez la racine à l’aide de l’alias de l’étape précédente.L’alias permet à
website
d’accéder aux valeurs de l’emplacement racine. Dans cet exemple, le site webpassthru
se trouve sur la ligne 21.code language-yaml web: locations: "/": &app # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/media": root: "pub/media" ... "/static": root: "pub/static" allow: true scripts: false passthru: "/front-static.php" rules: ^/static/version\d+/(?<resource>.*)$: passthru: "/static/$resource" "/<website>": *app ...
Pour configurer un emplacement avec un autre répertoire :
-
Créez un alias pour la racine (
/
) et pour les emplacements statiques (/static
).code language-yaml web: locations: "/": &root # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/static": &static root: "pub/static"
-
Créez un sous-répertoire pour le site web sous le répertoire
pub
:pub/<website>
-
Copiez le fichier
pub/index.php
dans le répertoirepub/<website>
et mettez à jour le cheminbootstrap
(/../../app/bootstrap.php
).code language-none try { require __DIR__ . '/../../app/bootstrap.php'; } catch (\Exception $e) {
-
Créez un pass-through pour le fichier
index.php
.code language-yaml web: locations: "/": &root # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/media": root: "pub/media" ... "/static": &static root: "pub/static" allow: true scripts: false passthru: "/front-static.php" rules: ^/static/version\d+/(?<resource>.*)$: passthru: "/static/$resource" "/<website>": <<: *root passthru: "<website>/index.php" "/<website>/static": *static ...
-
Validez et envoyez les fichiers modifiés.
pub/<website>/index.php
(Si ce fichier se trouve dans.gitignore
, la notification push peut nécessiter l’option force.).magento.app.yaml
Configuration des sites web, des magasins et des vues de magasin
Dans l’ interface utilisateur d’administration, configurez vos sites web Adobe Commerce, magasins et vues de magasin. Voir Configuration de plusieurs sites web, magasins et vues de magasin dans l’Admin du Guide de configuration.
Il est important d’utiliser le même nom et le même code pour vos sites web, magasins et magasins des vues de votre administrateur lors de la configuration de votre installation locale. Vous avez besoin de ces valeurs lorsque vous mettez à jour le fichier magento-vars.php
.
Modification des variables
Au lieu de configurer un hôte virtuel NGINX, transmettez les variables MAGE_RUN_CODE
et MAGE_RUN_TYPE
à l’aide du fichier magento-vars.php
dans le répertoire racine de votre projet.
Pour transmettre des variables à l’aide du fichier magento-vars.php
:
-
Ouvrez le fichier
magento-vars.php
dans un éditeur de texte.Le fichier
magento-vars.php
par défaut doit ressembler à ce qui suit :code language-php <?php // enable, adjust and copy this code for each store you run // Store #0, default one //if (isHttpHost("example.com")) { // $_SERVER["MAGE_RUN_CODE"] = "default"; // $_SERVER["MAGE_RUN_TYPE"] = "store"; //} function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; }
-
Déplacez le bloc
if
commenté afin qu'il soit après le blocfunction
et qu'il ne soit plus commenté.code language-php <?php // enable, adjust and copy this code for each store you run // Store #0, default one function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("example.com")) { $_SERVER["MAGE_RUN_CODE"] = "default"; $_SERVER["MAGE_RUN_TYPE"] = "store"; }
-
Remplacez les valeurs suivantes dans le bloc
if (isHttpHost("example.com"))
:-
example.com
avec l’URL de base de votre site web -
default
: avec le CODE unique pour votre site web ou vue de magasin -
store
avec l’une des valeurs suivantes :website
: chargez le site web sur le storefront.store
: chargez une vue de magasin sur le storefront
Pour plusieurs sites utilisant des domaines uniques :
code language-php <?php function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("second.store.com")) { $_SERVER["MAGE_RUN_CODE"] = "<second-site>"; $_SERVER["MAGE_RUN_TYPE"] = "website"; }elseif (isHttpHost("store.com")){ $_SERVER["MAGE_RUN_CODE"] = "base"; $_SERVER["MAGE_RUN_TYPE"] = "website"; }
Pour plusieurs sites avec le même domaine, vous devez vérifier l’hôte et l’URI :
code language-php <?php function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("store.com")) { $code = "base"; $type = "website"; $uri = explode('/', $_SERVER['REQUEST_URI']); if (isset($uri[1]) && $uri[1] == 'second') { $code = '<second-site>'; $type = 'website'; } $_SERVER["MAGE_RUN_CODE"] = $code; $_SERVER["MAGE_RUN_TYPE"] = $type; }
-
-
Enregistrez vos modifications dans le fichier
magento-vars.php
.
Déploiement et test sur le serveur d’intégration
Envoyez vos modifications à votre Adobe Commerce dans l’environnement d’intégration de l’infrastructure cloud et testez votre site.
-
Ajoutez, validez et poussez les modifications de code à la branche distante.
code language-bash git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name>
-
Attendez que le déploiement soit terminé.
-
Après le déploiement, ouvrez l’URL de votre magasin dans un navigateur web.
Avec un domaine unique, utilisez le format :
http://<magento-run-code>.<site-URL>
Par exemple,
http://french.master-name-projectID.us.magentosite.cloud/
Avec un domaine partagé, utilisez le format :
http://<site-URL>/<magento-run-code>
Par exemple,
http://master-name-projectID.us.magentosite.cloud/french/
-
Testez minutieusement votre site et fusionnez le code dans la branche
integration
pour un déploiement ultérieur.
Déploiement vers l’évaluation et la production
Suivez le processus de déploiement de déploiement vers l’évaluation et la production. Pour les environnements Starter et Pro, vous utilisez le Cloud Console pour envoyer du code à l’ensemble des environnements.
Adobe recommande de réaliser des tests complets dans l’environnement d’évaluation avant de passer à l’environnement de production. Apportez des modifications au code dans l’environnement d’intégration et commencez le processus à déployer à nouveau dans tous les environnements.