Einrichten mehrerer Websites mit Nginx
Wir gehen davon aus, dass
-
Sie arbeiten auf einer Entwicklungsmaschine (Laptop, virtuelle Maschine oder Ähnliches).
Möglicherweise sind zusätzliche Aufgaben erforderlich, um mehrere Websites in einer gehosteten Umgebung bereitzustellen. Weitere Informationen erhalten Sie bei Ihrem Hosting-Anbieter.
Zum Einrichten von Adobe Commerce in der Cloud-Infrastruktur sind zusätzliche Aufgaben erforderlich. Nachdem Sie die in diesem Thema besprochenen Aufgaben abgeschlossen haben, finden Sie weitere Informationen unter Einrichten mehrerer Websites oder Stores im Handbuch zu Commerce in Cloud-Infrastruktur.
-
Sie akzeptieren mehrere Domains in einer Virtual-Host-Datei oder verwenden einen Virtual-Host pro Website. Die Virtual-Host-Konfigurationsdateien befinden sich in
/etc/nginx/sites-available
. -
Sie verwenden die von Commerce bereitgestellte
nginx.conf.sample
nur mit den Änderungen, die in diesem Tutorial erläutert werden. -
Die Commerce-Software ist in
/var/www/html/magento2
installiert. -
Neben der Standardeinstellung gibt es zwei weitere Websites:
french.mysite.mg
mit Website-Code-french
und Store-Ansicht-Code-fr
german.mysite.mg
mit Website-Code-german
und Store-Ansicht-Code-de
mysite.mg
ist die standardmäßige Website- und Store-Ansicht
Im Folgenden finden Sie eine Roadmap für die Einrichtung mehrerer Websites mit nginx:
-
Einrichten von Websites, Stores und Store-Ansichten im Admin-Bereich.
-
Erstellen Sie einen virtuellen Nginx-Host), um viele Websites oder einen virtuellen Nginx-Host pro Commerce-Website zuzuordnen (Schritte unten beschrieben).
-
Übergeben Sie die Werte der MAGE-Variablen
$MAGE_RUN_TYPE
und$MAGE_RUN_CODE
mithilfe der von Magento bereitgestelltennginx.conf.sample
an nginx (Schritte unten beschrieben).-
$MAGE_RUN_TYPE
kann entwederstore
oderwebsite
sein:- Verwenden Sie
website
, um Ihre Website in Ihre Storefront zu laden. - Verwenden Sie
store
, um eine beliebige Store-Ansicht in Ihre Storefront zu laden.
- Verwenden Sie
-
$MAGE_RUN_CODE
ist der eindeutige Website- oder Store-Ansichts-Code, der$MAGE_RUN_TYPE
entspricht.
-
-
Aktualisieren Sie die Basis-URL-Konfiguration auf der Commerce-Admin.
Schritt 1: Erstellen von Websites, Stores und Store-Ansichten im Admin-Bereich
Siehe Einrichten mehrerer Websites, Stores und Store-Ansichten im Admin.
Schritt 2: Erstellen virtueller nginx-Hosts
In diesem Schritt wird beschrieben, wie Websites in die Storefront geladen werden. Sie können entweder Websites oder Store-Ansichten verwenden. Wenn Sie Store-Ansichten verwenden, müssen Sie die Parameterwerte entsprechend anpassen. Sie müssen die Aufgaben in diesem Abschnitt als Benutzer mit sudo
Berechtigungen ausführen.
Mit nur einer nginx Virtual Host-Datei können Sie Ihre nginx-Konfiguration einfach und sauber halten. Durch die Verwendung mehrerer Virtual-Host-Dateien können Sie jeden Store anpassen (um z. B. einen benutzerdefinierten Speicherort für french.mysite.mg
zu verwenden).
So erstellen Sie einen virtuellen Host (vereinfacht):
Diese Konfiguration erweitert die nginx-Konfiguration.
-
Öffnen Sie einen Texteditor und fügen Sie folgende Inhalte zu einer neuen Datei mit dem Namen
/etc/nginx/sites-available/magento
hinzu:code language-conf map $http_host $MAGE_RUN_CODE { default ''; french.mysite.mg french; german.mysite.mg german; } server { listen 80; server_name mysite.mg french.mysite.mg german.mysite.mg; set $MAGE_ROOT /var/www/html/magento2; set $MAGE_MODE developer; set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store; include /var/www/html/magento2/nginx.conf; }
-
Speichern Sie Ihre Änderungen in den Dateien und beenden Sie den Texteditor.
-
Überprüfen Sie die Server-Konfiguration:
code language-bash nginx -t
-
Bei erfolgreicher Ausführung wird die folgende Meldung angezeigt:
code language-none nginx: configuration file /etc/nginx/nginx.conf test is successful
Wenn Fehler angezeigt werden, überprüfen Sie die Syntax Ihrer virtuellen Host-Konfigurationsdateien.
-
Erstellen Sie eine symbolische Verknüpfung im
/etc/nginx/sites-enabled
:code language-bash cd /etc/nginx/sites-enabled
code language-bash ln -s /etc/nginx/sites-available/magento magento
Weitere Informationen zur Map-Direktive finden Sie unter nginx-Dokumentation zur Map-Direktive.
So erstellen Sie mehrere virtuelle Hosts:
-
Öffnen Sie einen Texteditor und fügen Sie folgende Inhalte zu einer neuen Datei mit dem Namen
/etc/nginx/sites-available/french.mysite.mg
hinzu:code language-conf server { listen 80; server_name french.mysite.mg; set $MAGE_ROOT /var/www/html/magento2; set $MAGE_MODE developer; set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store; set $MAGE_RUN_CODE french; include /var/www/html/magento2/nginx.conf; }
-
Erstellen Sie eine weitere Datei mit dem Namen
german.mysite.mg
im selben Verzeichnis mit folgendem Inhalt:code language-conf server { listen 80; server_name german.mysite.mg; set $MAGE_ROOT /var/www/html/magento2; set $MAGE_MODE developer; set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store; set $MAGE_RUN_CODE german; include /var/www/html/magento2/nginx.conf; }
-
Speichern Sie Ihre Änderungen in den Dateien und beenden Sie den Texteditor.
-
Überprüfen Sie die Server-Konfiguration:
code language-bash nginx -t
-
Bei erfolgreicher Ausführung wird die folgende Meldung angezeigt:
code language-none nginx: configuration file /etc/nginx/nginx.conf test is successful
Wenn Fehler angezeigt werden, überprüfen Sie die Syntax Ihrer virtuellen Host-Konfigurationsdateien.
-
Erstellen Sie symbolische Links im
/etc/nginx/sites-enabled
:code language-bash cd /etc/nginx/sites-enabled
code language-bash ln -s /etc/nginx/sites-available/french.mysite.mg french.mysite.mg
code language-bash ln -s /etc/nginx/sites-available/german.mysite.mg german.mysite.mg
Schritt 3: Ändern Sie nginx.conf.sample
nginx.conf.sample
nicht. Es handelt sich dabei um eine Commerce-Kerndatei, die mit jeder neuen Version aktualisiert werden kann. Kopieren Sie stattdessen die nginx.conf.sample
, benennen Sie sie um und bearbeiten Sie dann die kopierte Datei.So bearbeiten Sie den PHP-Einstiegspunkt für die Hauptanwendung:
So ändern Sie die nginx.conf.sample
**:
-
Öffnen Sie einen Texteditor und überprüfen Sie die
nginx.conf.sample
Datei ,<magento2_installation_directory>/nginx.conf.sample
. Suchen Sie nach dem folgenden Abschnitt:code language-conf # PHP entry point for main application location ~ (index|get|static|report|404|503|health_check)\.php$ { try_files $uri =404; fastcgi_pass fastcgi_backend; fastcgi_buffers 1024 4k; fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off"; fastcgi_param PHP_VALUE "memory_limit=1G \n max_execution_time=18000"; fastcgi_read_timeout 600s; fastcgi_connect_timeout 600s; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
-
Aktualisieren Sie die
nginx.conf.sample
mit den folgenden beiden Zeilen vor der include-Anweisung:code language-conf fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE; fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
Ein Beispiel für einen aktualisierten PHP-Einstiegspunkt für die Hauptanwendung sieht wie folgt aus:
# PHP entry point for main application
location ~ (index|get|static|report|404|503|health_check)\.php$ {
try_files $uri =404;
fastcgi_pass fastcgi_backend;
fastcgi_buffers 1024 4k;
fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off";
fastcgi_param PHP_VALUE "memory_limit=1G \n max_execution_time=18000";
fastcgi_read_timeout 600s;
fastcgi_connect_timeout 600s;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# START - Multisite customization
fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE;
fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
# END - Multisite customization
include fastcgi_params;
}
Schritt 4: Aktualisieren der Basis-URL-Konfiguration
Sie müssen die Basis-URL für die french
und die german
Websites in Commerce Admin aktualisieren.
Aktualisierung der französischen Website-Basis-URL
- Melden Sie sich bei Commerce Admin an und navigieren Sie zu Stores > Einstellungen > Konfiguration > Allgemein > Web.
- Ändern Sie den Konfigurationsbereich auf die
french
-Website. - Erweitern Sie Abschnitt „Basis URLs“ und aktualisieren Sie den Basis-URL und Basis-Link-URL Wert auf
http://french.magento24.com/
. - Erweitern Sie Basis-URLs (sicher und aktualisieren Sie den Sichere Basis-URL und Sichere Basis-Link-) auf
https://french.magento24.com/
. - Klicken Sie Konfiguration speichern und speichern Sie die Konfigurationsänderungen.
Aktualisieren der deutschen Website-Basis-URL
- Melden Sie sich bei Commerce Admin an und navigieren Sie zu Stores > Einstellungen > Konfiguration > Allgemein > Web.
- Ändern Sie den Konfigurationsbereich auf die
german
-Website. - Erweitern Sie Abschnitt „Basis URLs“ und aktualisieren Sie den Basis-URL und Basis-Link-URL Wert auf
http://german.magento24.com/
. - Erweitern Sie Basis-URLs (sicher und aktualisieren Sie den Sichere Basis-URL und Sichere Basis-Link-) auf
https://german.magento24.com/
. - Klicken Sie Konfiguration speichern und speichern Sie die Konfigurationsänderungen.
Cache leeren
Führen Sie den folgenden Befehl aus, um die config
- und full_page
zu bereinigen.
bin/magento cache:clean config full_page
Überprüfen der Site
Sofern Sie kein DNS für die URLs Ihrer Stores eingerichtet haben, müssen Sie eine statische Route zum Host in Ihrer hosts
-Datei hinzufügen:
-
Suchen Sie die
hosts
Ihres Betriebssystems. -
Fügen Sie die statische Route im folgenden Format hinzu:
code language-conf <ip-address> french.mysite.mg <ip-address> german.mysite.mg
-
Rufen Sie eine der folgenden URLs in Ihrem Browser auf:
code language-http http://mysite.mg/admin http://french.mysite.mg/frenchstoreview http://german.mysite.mg/germanstoreview
- Möglicherweise sind zusätzliche Aufgaben erforderlich, um mehrere Websites in einer gehosteten Umgebung bereitzustellen. Weitere Informationen erhalten Sie bei Ihrem Hosting-Anbieter.
- Zum Einrichten von Adobe Commerce in der Cloud-Infrastruktur sind zusätzliche Aufgaben erforderlich. Siehe Einrichten mehrerer Cloud-Websites oder -Stores im Handbuch zu Commerce in der Cloud-Infrastruktur.
Fehlerbehebung
- Wenn Ihre französischen und deutschen Websites 404 s zurückgeben, aber Ihr Administrator geladen wird, stellen Sie sicher, dass Sie abgeschlossen haben (Schritt 6: Hinzufügen des Store-Codes zur Basis-URL.
- Wenn alle URLs den Wert 404 zurückgeben, stellen Sie sicher, dass Sie Ihren Webserver neu gestartet haben.
- Wenn der Administrator nicht ordnungsgemäß funktioniert, stellen Sie sicher, dass Sie die virtuellen Hosts ordnungsgemäß einrichten.