Einrichten mehrerer Websites oder Stores

Sie können Adobe Commerce so konfigurieren, dass es über mehrere Websites oder Stores verfügt, z. B. einen englischen Store, einen französischen Store und einen deutschen Store. Siehe Grundlegendes zu Websites, Stores und Store-Ansichten.

WARNING
Die Katalogdaten werden mit der Erhöhung der Anzahl der Websites und Stores erweitert. Abhängig von Ihrer Projektarchitektur können die zusätzlichen Stores zu einem längeren Indizierungsprozess und langsameren Reaktionszeiten für nicht zwischengespeicherte Katalogseiten führen. Adobe empfiehlt, dass Sie die Site-Leistung genau überwachen.

Die Einrichtung mehrerer Stores hängt davon ab, ob Sie eindeutige oder freigegebene Domänen verwenden.

Mehrere Stores mit eindeutigen Domänen:

https://first.store.com/
https://second.store.com/

Mehrere Stores mit derselben Domäne:

https://store.com/first/
https://store.com/second/
TIP
Um der Site-Basis-URL eine Store-Ansicht hinzuzufügen, müssen Sie nicht mehrere Verzeichnisse erstellen. Siehe Hinzufügen des Store-Codes zur Basis-URL im Konfigurationshandbuch.

Domänen hinzufügen

Benutzerdefinierte Domänen können zu Pro Staging- und beliebigen Produktionsumgebungen hinzugefügt werden. Sie können nicht zu Integrationsumgebungen hinzugefügt werden.

Der Prozess zum Hinzufügen einer Domäne hängt vom Typ des Cloud-Kontos ab:

  • Für Pro Staging und Produktion

    Fügen Sie die neue Domäne zu Fastly hinzu, siehe Domänen verwalten oder öffnen Sie ein Support-Ticket, um Unterstützung anzufordern. Darüber hinaus müssen Sie ein Adobe Commerce Support-Ticket senden , um neue Domänen anzufordern, die einem Cluster hinzugefügt werden sollen.

  • Nur für Starterproduktion

    Fügen Sie die neue Domäne zu Fastly hinzu, siehe Domänen verwalten oder Senden eines Adobe Commerce-Supporttickets , um Unterstützung anzufordern. Darüber hinaus müssen Sie die neue Domäne auf der Registerkarte Domänen im Feld Cloud Console: https://<zone>.magento.cloud/projects/<project-ID>/edit hinzufügen.

Lokale Installation konfigurieren

Informationen zum Konfigurieren der lokalen Installation für die Verwendung mehrerer Stores finden Sie unter Mehrere Websites oder Stores im Konfigurationshandbuch.

Nachdem Sie die lokale Installation erfolgreich erstellt und getestet haben, um mehrere Stores zu verwenden, müssen Sie Ihre Integrationsumgebung vorbereiten:

  1. Routen oder Orte konfigurieren - geben Sie an, wie eingehende URLs von Adobe Commerce verarbeitet werden

  2. Einrichten von Websites, Stores und Speichern von Ansichten - Konfigurieren Sie diese über die Administrator-Benutzeroberfläche von Adobe Commerce

  3. Variablen ändern - geben Sie die Werte der Variablen MAGE_RUN_TYPE und MAGE_RUN_CODE in der Datei magento-vars.php an

  4. Bereitstellen und Testen von Umgebungen - Bereitstellen und Testen des Zweigs integration

TIP
Sie können eine lokale Umgebung verwenden, um mehrere Websites oder Stores einzurichten. Informationen zu Einrichten mehrerer Websites oder Stores finden Sie in den Cloud-Docker-Anweisungen .

Konfigurationsaktualisierungen für Pro-Umgebungen

WARNING
Einige Pro-Projekte benötigen ein Support-Ticket, um die Routenkonfiguration in der Datei routes.yaml und die Cron-Konfiguration in der Datei .magento.app.yaml zu aktualisieren. Adobe empfiehlt, die YAML-Konfigurationsdateien in einer Integrationsumgebung zu aktualisieren und zu testen und anschließend Änderungen in der Staging-Umgebung bereitzustellen. Wenn Ihre Änderungen nach der erneuten Bereitstellung nicht auf Staging-Sites angewendet werden und keine zugehörigen Fehlermeldungen im Protokoll vorhanden sind, senden Sie ein Adobe Commerce-Supportticket 🔗, in dem die versucht wurde, die Konfigurationsänderungen zu beschreiben. ​Schließen Sie alle aktualisierten YAML-Konfigurationsdateien in das Ticket ein.

Routen für separate Domänen konfigurieren

Routen definieren, wie eingehende URLs verarbeitet werden. Bei mehreren Stores mit eindeutigen Domänen müssen Sie jede Domäne in der Datei routes.yaml definieren. Wie Sie Routen konfigurieren, hängt davon ab, wie Ihre Site funktionieren soll.

So konfigurieren Sie Routen in einer Integrationsumgebung:

  1. Öffnen Sie auf Ihrer lokalen Workstation die Datei .magento/routes.yaml in einem Texteditor.

  2. Definieren Sie die Domäne und Subdomänen. Der Upstream-Wert mymagento ist derselbe Wert wie die name -Eigenschaft in der Datei .magento.app.yaml .

    code language-yaml
    "http://{default}/":
        type: upstream
        upstream: "mymagento:http"
    
    "http://<second-site>.{default}/":
        type: upstream
        upstream: "mymagento:http"
    
  3. Speichern Sie Ihre Änderungen in der Datei "routes.yaml".

  4. Fahren Sie mit Einrichten von Websites, Geschäften und Speichern von Ansichten fort.

Orte für freigegebene Domänen konfigurieren

Wo die Routenkonfiguration definiert, wie die URLs verarbeitet werden, definiert die Eigenschaft web in der Datei .magento.app.yaml , wie Ihre Anwendung dem Web bereitgestellt wird. Web-Standorte ermöglichen eine größere Granularität für eingehende Anforderungen. Wenn Ihre Domäne beispielsweise store.com ist, können Sie /first (Standardsite) und /second für Anforderungen an zwei verschiedene Stores verwenden, die eine Domäne teilen.

So konfigurieren Sie einen neuen Webspeicherort:

  1. Erstellen Sie einen Alias für den Stamm (/). In diesem Beispiel lautet der Alias &app in Zeile 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. Erstellen Sie einen Pass-Through für die Website (/website) und referenzieren Sie mithilfe des Alias aus dem vorherigen Schritt den Stammordner.

    Der Alias ermöglicht website den Zugriff auf Werte vom Stammspeicherort. In diesem Beispiel ist die Website passthru in Zeile 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
              ...
    

So konfigurieren Sie einen Speicherort mit einem anderen Ordner:

  1. Erstellen Sie einen Alias für den Stammordner (/) und für die statischen Speicherorte (/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"
    
  2. Erstellen Sie ein Unterverzeichnis für die Website unter dem Verzeichnis pub : pub/<website>

  3. Kopieren Sie die Datei "pub/index.php" in das Verzeichnis "pub/<website>" und aktualisieren Sie den Pfad "bootstrap"(/../../app/bootstrap.php).

    code language-none
    try {
        require __DIR__ . '/../../app/bootstrap.php';
    } catch (\Exception $e) {
    
  4. Erstellen Sie einen Pass-Through für die Datei 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
              ...
    
  5. Übernehmen und pushen Sie die geänderten Dateien.

    • pub/<website>/index.php (Wenn diese Datei in .gitignore enthalten ist, erfordert der Push-Vorgang möglicherweise die erzwungene Option.)
    • .magento.app.yaml

Einrichten von Websites, Geschäften und Speichern von Ansichten

Richten Sie in der Admin-Benutzeroberfläche Ihre Adobe Commerce- Websites, Stores und Store-Ansichten ein. Siehe Einrichten mehrerer Websites, Stores und Speichern von Ansichten im Admin im Konfigurationshandbuch.

Es ist wichtig, bei der Einrichtung Ihrer lokalen Installation denselben Namen und Code Ihrer Websites, Stores und Ansichten von Ihrem Administrator zu verwenden. Sie benötigen diese Werte, wenn Sie die Datei magento-vars.php aktualisieren.

Variablen ändern

Übergeben Sie anstelle der Konfiguration eines virtuellen NGINX-Hosts die Variablen MAGE_RUN_CODE und MAGE_RUN_TYPE mithilfe der Datei magento-vars.php in Ihren Projektstammordner.

Übergeben von Variablen mithilfe der magento-vars.php-Datei:

  1. Öffnen Sie die Datei "magento-vars.php" in einem Texteditor.

    Die standardmäßige magento-vars.php -Datei sollte wie folgt aussehen:

    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. Verschieben Sie den kommentierten Block if so, dass er nach dem Block function liegt und nicht mehr kommentiert ist.

    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. Ersetzen Sie die folgenden Werte im Block if (isHttpHost("example.com")) :

    • example.com - mit der Basis-URL Ihrer Website

    • default - mit dem eindeutigen CODE für Ihre Website - oder Store-Ansicht

    • store—mit einem der folgenden Werte:

      • website - Laden Sie die Website in die Storefront.
      • store - Laden Sie eine Store-Ansicht in die Storefront.

    Für mehrere Sites mit eindeutigen Domänen:

    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";
    }
    

    Bei mehreren Sites mit derselben Domäne müssen Sie den Host und den URI überprüfen:

    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. Speichern Sie Ihre Änderungen in der Datei "magento-vars.php".

Bereitstellen und Testen auf dem Integrationsserver

Übertragen Sie Ihre Änderungen in die Adobe Commerce-Integrationsumgebung der Cloud-Infrastruktur und testen Sie Ihre Site.

  1. Fügen Sie Änderungen am Remote-Zweig hinzu, übertragen Sie diese und fügen Sie sie per Push-Benachrichtigung hinzu.

    code language-bash
    git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name>
    
  2. Warten Sie, bis die Bereitstellung abgeschlossen ist.

  3. Öffnen Sie nach der Bereitstellung Ihre Store-URL in einem Webbrowser.

    Verwenden Sie für eine eindeutige Domäne das folgende Format: http://<magento-run-code>.<site-URL>

    Beispiel: http://french.master-name-projectID.us.magentosite.cloud/

    Bei einer freigegebenen Domäne verwenden Sie folgendes Format: http://<site-URL>/<magento-run-code>

    Beispiel: http://master-name-projectID.us.magentosite.cloud/french/

  4. Testen Sie Ihre Site gründlich und führen Sie den Code zur weiteren Bereitstellung mit der Verzweigung integration zusammen.

Bereitstellen in Staging und Produktion

Befolgen Sie den Bereitstellungsprozess für Bereitstellung in Staging und Produktion. In Starter- und Pro-Umgebungen verwenden Sie die Cloud Console, um Code über Umgebungen hinweg zu pushen.

Adobe empfiehlt vollständige Tests in der Staging-Umgebung, bevor sie an die Produktionsumgebung gesendet wird. Nehmen Sie Code-Änderungen in der Integrationsumgebung vor und starten Sie den Prozess zur erneuten Bereitstellung in allen Umgebungen.

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