Configurer plusieurs sites web ou magasins
Vous pouvez configurer Adobe Commerce pour qu’il dispose de plusieurs sites web ou magasins, tels qu’un magasin en anglais, un magasin en français et un magasin en allemand. Voir Présentation des sites web, des boutiques et des affichages de boutique.
Le processus de configuration de plusieurs magasins dépend de votre choix 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/
Ajouter des 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 Gestion des 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 à un cluster.
-
Pour la production de démarrage uniquement
Ajoutez le nouveau domaine à Fastly, consultez Gestion des domaines ou Envoi d’un ticket d’assistance Adobe Commerce pour demander de l’aide. En outre, vous devez ajouter le nouveau domaine à l’onglet Domaines dans le Cloud Console :
https://<zone>.magento.cloud/projects/<project-ID>/edit
Configuration de l’installation locale
Pour configurer votre installation locale afin d’utiliser plusieurs magasins, voir Sites web ou magasins multiples dans le Guide de configuration.
Une fois l’installation locale créée et testée pour utiliser plusieurs magasins, vous devez préparer votre environnement d’intégration :
-
Configurer des itinéraires ou des emplacements : indiquez comment les URL entrantes sont gérées par Adobe Commerce
-
Configurer des sites web, des boutiques et des affichages de boutique à configurer à 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éployer et tester 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’existe aucun message d’erreur associé dans le journal, vous DEVEZ Envoyez un ticket d’assistance Adobe Commerce qui décrit les modifications de configuration tentées. Incluez tous les fichiers de configuration YAML mis à jour dans le ticket.Configurer des itinéraires pour des domaines distincts
Les itinéraires définissent comment traiter les URL entrantes. Plusieurs magasins avec des domaines uniques requièrent que vous définissiez chaque domaine dans le fichier routes.yaml
. La façon dont vous configurez les itinéraires dépend de la façon dont vous souhaitez que votre site fonctionne.
Pour configurer des itinéraires dans un environnement d’intégration :
-
Sur votre station de travail locale, ouvrez le fichier
.magento/routes.yaml
dans un éditeur de texte. -
Définissez le domaine et les sous-domaines. La valeur en amont
mymagento
est identique à la valeur de 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 à Configurer des sites web, des boutiques et des affichages de boutique.
Configuration des emplacements pour les domaines partagés
Lorsque la configuration des itinéraires définit la manière dont les URL sont traitées, la propriété web
du fichier .magento.app.yaml
définit la manière dont votre application est exposée au Web. Les web permettent requêtes entrantes avec plus de granularité. Par exemple, si votre domaine est store.com
, vous pouvez utiliser /first
(site par défaut) et /second
pour les requêtes vers 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
à 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
website
permet d’accéder aux valeurs à partir de l’emplacement racine. Dans cet exemple, le site webpassthru
se trouve à 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 les emplacements racine (
/
) et statique (/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 dans le répertoire
pub
:pub/<website>
-
Copiez le fichier
pub/index.php
dans le répertoirepub/<website>
et mettez à jour le chemin d’accèsbootstrap
(/../../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 est en.gitignore
, la notification push peut nécessiter l’option forcer .).magento.app.yaml
Configurer des sites web, des boutiques et des affichages de boutique
Dans l’interface utilisateur d’administration, configurez vos sites web, magasins et vues de magasin Adobe Commerce. Voir Configuration de plusieurs sites web, boutiques et vues de boutique dans la section 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 vues de magasin de votre administrateur lorsque vous configurez 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 du 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 se présenter comme 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 de
if
commenté afin qu’il soit après le bloc defunction
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 vue de site web ou de magasin -
store
: avec l'une des valeurs suivantes :website
: charge le site web dans le storefrontstore
: charge une vue store dans 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 le hôte et le 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 environnement d’intégration d’Adobe Commerce sur l’infrastructure cloud et testez votre site.
-
Ajouter, valider et transférer les modifications de code vers la branche distante.
code language-bash git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name>
-
Attendez la fin du déploiement.
-
Après le déploiement, ouvrez l’URL de votre Boutique dans un navigateur web.
Avec un domaine unique, utilisez le format suivant :
http://<magento-run-code>.<site-URL>
Par exemple,
http://french.master-name-projectID.us.magentosite.cloud/
Avec un domaine partagé, utilisez le format suivant :
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 dans les environnements d’évaluation et de production
Suivez le processus de déploiement déploiement dans les environnements d’évaluation et de production. Pour les environnements Starter et Pro, vous utilisez le Cloud Console pour transmettre le code entre les environnements.
Adobe recommande d’effectuer des tests complets dans l’environnement d’évaluation avant d’effectuer un transfert vers l’environnement de production. Apportez des modifications de code dans l’environnement d’intégration et recommencez le processus de déploiement dans les environnements.