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.

WARNING
Os dados do catálogo se expandem à medida que você aumenta o número de sites e lojas. Dependendo da arquitetura do projeto, os armazenamentos adicionais podem levar a um processo de indexação mais longo e tempos de resposta mais lentos para páginas de catálogo não armazenadas em cache. A Adobe recomenda que você monitore o desempenho do site com cuidado.

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/
TIP
Para adicionar uma visualização de loja à URL base do site, não é necessário criar vários diretórios. Consulte Adicionar o código de armazenamento ao URL base no Guia de configuração.

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:

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:

  1. Configurar rotas ou locais—especifica como os URLs de entrada são tratados pelo Adobe Commerce

  2. Configurar sites, lojas e visualizações de loja—configurar usando a interface do usuário do Adobe Commerce Admin

  3. Modificar variáveis—especifique os valores de MAGE_RUN_TYPE e MAGE_RUN_CODE variáveis no magento-vars.php arquivo

  4. Implantar e testar ambientes—implantar e testar o integration ramificação

TIP
Você pode usar um ambiente local para configurar vários sites ou lojas. Consulte as instruções do Cloud Docker para Configurar vários sites ou lojas.

Atualizações de configuração para ambientes Pro

WARNING
Alguns Projetos Pro exigir um tíquete de suporte para atualizar a configuração de rota no 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:

  1. Na estação de trabalho local, abra o .magento/routes.yaml em um editor de texto.

  2. 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"
    
  3. Salve as alterações no routes.yaml arquivo.

  4. 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:

  1. 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
                ...
    
  2. 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 site passthru 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:

  1. 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"
    
  2. Crie um subdiretório para o site sob o pub diretório: pub/<website>

  3. Copie o pub/index.php arquivo na pub/<website> e atualize o bootstrap caminho (/../../app/bootstrap.php).

    code language-none
    try {
        require __DIR__ . '/../../app/bootstrap.php';
    } catch (\Exception $e) {
    
  4. 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
              ...
    
  5. 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:

  1. 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;
    }
    
  2. Mover o comentado if bloco para que seja após o function 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";
    }
    
  3. 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 loja
      • store— 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;
    }
    
  4. 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.

  1. 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>
    
  2. Aguarde a conclusão da implantação.

  3. 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/

  4. 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.

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26