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 visualizaçõ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íniosou 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 novos domínios para serem adicionados a um cluster.
-
Somente para produção inicial
Adicione o novo domínio ao Fastly, consulte Gerenciar domíniosou Enviar um tíquete de suporte da Adobe Commerce para solicitar assistência. Além disso, você deve adicionar o novo domínio à Domínios na guia 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—especifica como os URLs de entrada são tratados pelo Adobe Commerce
-
Configurar sites, lojas e visualizações de loja—configurar usando a interface do usuário do Adobe Commerce Admin
-
Modificar variáveis—especifique os valores de
MAGE_RUN_TYPE
eMAGE_RUN_CODE
variáveis nomagento-vars.php
arquivo -
Implantar e testar ambientes—implantar e testar o
integration
ramificação
Atualizações de configuração para ambientes Pro
routes.yaml
e a configuração do cron no .magento.app.yaml
arquivo. 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 descreve as tentativas de alteração 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 routes.yaml
arquivo. 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
.magento/routes.yaml
em um editor de texto. -
Defina o domínio e os subdomínios. A variável
mymagento
o valor upstream é o mesmo valor que a propriedade name na variável.magento.app.yaml
arquivo.code language-yaml "http://{default}/": type: upstream upstream: "mymagento:http" "http://<second-site>.{default}/": type: upstream upstream: "mymagento:http"
-
Salve as alterações no
routes.yaml
arquivo. -
Continue para Configurar sites, lojas e visualizações de loja.
Configurar locais para domínios compartilhados
Onde a configuração de roteiros define como os URLs são processados, a variável web
propriedade na .magento.app.yaml
define como o aplicativo é exposto à web. Web locais permita mais granularidade para solicitações recebidas. Por exemplo, se o domínio for store.com
, você pode 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:
-
Criar 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 ...
-
Criar uma passagem para o site (
/website
) e faça referência à raiz usando o alias da etapa anterior.O alias permite
website
para acessar 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:
-
Criar um alias para a raiz (
/
) e para o estático (/static
) locais.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 sob o
pub
diretório:pub/<website>
-
Copie o
pub/index.php
arquivo napub/<website>
e atualize obootstrap
caminho (/../../app/bootstrap.php
).code language-none try { require __DIR__ . '/../../app/bootstrap.php'; } catch (\Exception $e) {
-
Crie uma passagem para o
index.php
arquivo.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
, o push pode exigir a opção force.).magento.app.yaml
Configurar sites, lojas e visualizações de loja
No Interface do administrador, configurar seu Adobe Commerce Sites, Lojas, e Armazenar visualizações. Consulte Configurar vários sites, lojas e visualizaçõ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. Esses valores são necessários ao atualizar a variável magento-vars.php
arquivo.
Modificar variáveis
Em vez de configurar um host virtual NGINX, passe o MAGE_RUN_CODE
e MAGE_RUN_TYPE
variáveis usando o magento-vars.php
arquivo no diretório raiz do projeto.
Para transmitir variáveis usando o magento-vars.php
arquivo:
-
Abra o
magento-vars.php
em um editor de texto.A variável padrão
magento-vars.php
arquivo 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 comentado
if
bloco para que seja após ofunction
não é 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 na variável
if (isHttpHost("example.com"))
bloco:-
example.com
—com o URL de base do seu site -
default
—com o CÓDIGO exclusivo para o site ou exibição de loja -
store
—com um dos seguintes valores:website
— load o site na lojastore
— load a 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, é necessário verificar o host e a variável 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
magento-vars.php
arquivo.
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 ao
integration
para implantação adicional.
Implantar para preparo e produção
Siga o processo de implantação para implantação no armazenamento temporário e na 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.