Configurar vários sites ou lojas
Você pode configurar o Adobe Commerce para ter vários sites ou lojas, como uma loja em inglês, uma loja em francês e uma loja em alemão. Consulte Noções básicas sobre sites, lojas e exibições de loja.
O processo para configurar vários armazenamentos depende da sua escolha entre usar domínios exclusivos ou compartilhados.
Vários armazenamentos com domínios exclusivos:
https://first.store.com/
https://second.store.com/
Vários armazenamentos com o mesmo domínio:
https://store.com/first/
https://store.com/second/
Adicionar domínios
Domínios personalizados podem ser adicionados ao Pro Staging e a qualquer ambiente de produção; eles não podem ser adicionados a ambientes de integração.
O processo para adicionar um domínio depende do tipo de conta da Cloud:
-
Para preparo e produção profissionais
Adicione o novo domínio ao Fastly, consulte Gerenciar domínios ou abra um tíquete de suporte para solicitar assistência. Além disso, você deve Enviar um tíquete de Suporte da Adobe Commerce para solicitar que novos domínios sejam adicionados a um cluster.
-
Somente para produção inicial
Adicione o novo domínio ao Fastly, consulte Gerenciar domínios ou Enviar um tíquete de Suporte da Adobe Commerce para solicitar assistência. Além disso, você deve adicionar o novo domínio à guia Domínios em Cloud Console:
https://<zone>.magento.cloud/projects/<project-ID>/edit
Configurar instalação local
Para configurar sua instalação local para usar várias lojas, consulte Vários sites ou lojas no Guia de Configuração.
Depois de criar e testar com êxito a instalação local para usar várias lojas, você deve preparar seu ambiente de integração:
-
Configurar rotas ou locais—especifique como as URLs de entrada são tratadas pela Adobe Commerce
-
Configurar sites, lojas e visualizações de loja—configure usando a interface do Administrador do Adobe Commerce
-
Modificar variáveis — especifique os valores das variáveis
MAGE_RUN_TYPE
eMAGE_RUN_CODE
no arquivomagento-vars.php
-
Implantar e testar ambientes—implantar e testar a ramificação
integration
Atualizações de configuração para ambientes Pro
routes.yaml
e a configuração cron no arquivo .magento.app.yaml
. O Adobe recomenda atualizar e testar arquivos de configuração YAML em um ambiente de Integração e, em seguida, implantar alterações no ambiente de Preparo. Se suas alterações não forem aplicadas aos sites de Preparo após a reimplantação e não houver mensagens de erro relacionadas no log, você DEVE Enviar um tíquete de Suporte da Adobe Commerce que descreva as tentativas de alterações de configuração. Inclua quaisquer arquivos de configuração YAML atualizados no ticket.Configurar rotas para domínios separados
As rotas definem como processar URLs de entrada. Vários armazenamentos com domínios exclusivos exigem que você defina cada domínio no arquivo routes.yaml
. A maneira como você configura as rotas depende de como você deseja que o site funcione.
Para configurar rotas em um ambiente de integração:
-
Na estação de trabalho local, abra o arquivo
.magento/routes.yaml
em um editor de texto. -
Defina o domínio e os subdomínios. O valor upstream
mymagento
é o mesmo valor que a propriedade de nome no arquivo.magento.app.yaml
.code language-yaml "http://{default}/": type: upstream upstream: "mymagento:http" "http://<second-site>.{default}/": type: upstream upstream: "mymagento:http"
-
Salve as alterações no arquivo
routes.yaml
. -
Continue para Configurar sites, lojas e exibições de loja.
Configurar locais para domínios compartilhados
Onde a configuração de rotas define como as URLs são processadas, a propriedade web
no arquivo .magento.app.yaml
define como o aplicativo é exposto à Web. Os locais da Web permitem mais granularidade para solicitações recebidas. Por exemplo, se o seu domínio for store.com
, você poderá usar /first
(site padrão) e /second
para solicitações a dois armazenamentos diferentes que compartilham um domínio.
Para configurar um novo local da Web:
-
Crie um alias para a raiz (
/
). Neste exemplo, o alias é&app
na linha 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 ...
-
Crie uma passagem para o site (
/website
) e faça referência à raiz usando o alias da etapa anterior.O alias permite que
website
acesse valores do local raiz. Neste exemplo, o sitepassthru
está na linha 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 ...
Para configurar um local com um diretório diferente:
-
Crie um alias para os locais raiz (
/
) e estático (/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"
-
Crie um subdiretório para o site no diretório
pub
:pub/<website>
-
Copie o arquivo
pub/index.php
no diretóriopub/<website>
e atualize o caminhobootstrap
(/../../app/bootstrap.php
).code language-none try { require __DIR__ . '/../../app/bootstrap.php'; } catch (\Exception $e) {
-
Crie uma passagem para o arquivo
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 ...
-
Confirme e envie por push os arquivos alterados.
pub/<website>/index.php
(Se este arquivo estiver em.gitignore
, talvez o push exija a opção force.).magento.app.yaml
Configurar sites, lojas e visualizações de loja
Na Interface do Administrador, configure os Sites, as Lojas e as Exibições da Loja do Adobe Commerce. Consulte Configurar vários sites, lojas e exibições de loja no Administrador no Guia de Configuração.
É importante usar o mesmo nome e código de seus sites, lojas e exibições de loja do Administrador ao configurar a instalação local. Você precisa desses valores ao atualizar o arquivo magento-vars.php
.
Modificar variáveis
Em vez de configurar um host virtual NGINX, passe as variáveis MAGE_RUN_CODE
e MAGE_RUN_TYPE
usando o arquivo magento-vars.php
no diretório raiz do projeto.
Para transmitir variáveis usando o magento-vars.php
arquivo:
-
Abra o arquivo
magento-vars.php
em um editor de texto.O arquivo
magento-vars.php
padrão deve ser semelhante ao seguinte: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; }
-
Mover o bloco
if
comentado para que fique depois do blocofunction
e não seja mais comentado.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"; }
-
Substitua os seguintes valores no bloco
if (isHttpHost("example.com"))
:-
example.com
—com a URL de base do seu site -
default
—com o CÓDIGO exclusivo do seu site ou exibição de loja -
store
—com um dos seguintes valores:website
—carrega o site na vitrinestore
—carregar uma exibição de loja na loja
Para vários sites usando domínios exclusivos:
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"; }
Para vários sites com o mesmo domínio, você precisa verificar o host e o 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; }
-
-
Salve as alterações no arquivo
magento-vars.php
.
Implantar e testar no servidor de integração
Envie suas alterações para o ambiente de integração do Adobe Commerce na infraestrutura em nuvem e teste seu site.
-
Adicionar, confirmar e enviar alterações de código à ramificação remota.
code language-bash git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name>
-
Aguarde a conclusão da implantação.
-
Após a implantação, abra o URL da loja em um navegador da web.
Com um domínio exclusivo, use o formato:
http://<magento-run-code>.<site-URL>
Por exemplo,
http://french.master-name-projectID.us.magentosite.cloud/
Com um domínio compartilhado, use o formato:
http://<site-URL>/<magento-run-code>
Por exemplo,
http://master-name-projectID.us.magentosite.cloud/french/
-
Teste seu site completamente e mescle o código à ramificação
integration
para implantação adicional.
Implantar para preparo e produção
Siga o processo de implantação para implantação em Preparo e Produção. Para ambientes Starter e Pro, você usa o Cloud Console para enviar código por push entre ambientes.
A Adobe recomenda fazer testes completos no ambiente de preparo antes de enviá-los para o ambiente de produção. Faça alterações de código no ambiente de integração e comece o processo de implantação nos ambientes novamente.