Mehrere Websites mit Nginx einrichten
Wir gehen davon aus, dass
-
Sie arbeiten an einer Entwicklungsmaschine (Laptop, virtuelle Maschine oder Ähnliches).
Möglicherweise sind zusätzliche Aufgaben erforderlich, um mehrere Websites in einer gehosteten Umgebung bereitzustellen. Wenden Sie sich diesbezüglich an Ihren Hosting-Provider.
Für die Einrichtung von Adobe Commerce in der Cloud-Infrastruktur sind zusätzliche Aufgaben erforderlich. Nachdem Sie die in diesem Thema behandelten Aufgaben abgeschlossen haben, finden Sie weitere Informationen unter Einrichten mehrerer Websites oder Stores im Leitfaden Commerce on Cloud Infrastructure.
-
Sie akzeptieren mehrere Domänen in einer Virtual-Host-Datei oder verwenden einen virtuellen Host pro Website. Die Konfigurationsdateien für den virtuellen Host befinden sich in
/etc/nginx/sites-available
. -
Sie verwenden den von Commerce bereitgestellten
nginx.conf.sample
nur mit den in diesem Tutorial behandelten Änderungen. -
Die Commerce-Software wird in
/var/www/html/magento2
installiert. -
Sie haben zwei andere Websites als die Standardwebsite:
french.mysite.mg
mit Website-Codefrench
und Store-Ansichtscodefr
german.mysite.mg
mit Website-Codegerman
und Store-Ansichtscodede
mysite.mg
ist die standardmäßige Website- und Store-Ansicht
Im Folgenden finden Sie eine Roadmap für die Einrichtung mehrerer Websites mit nginx:
-
Richten Sie Websites, Stores und speichern Sie Ansichten im Admin ein.
-
Erstellen Sie einen Nginx-virtuellen Host), um viele Websites oder einen Nginx-virtuellen Host pro Commerce-Website zuzuordnen (siehe folgende Schritte).
-
Übergeben Sie die Werte der MAGE variables
$MAGE_RUN_TYPE
und$MAGE_RUN_CODE
mithilfe des Magento-bereitgestelltennginx.conf.sample
an nginx (siehe unten).-
$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-Ansichtscode, der$MAGE_RUN_TYPE
entspricht.
-
-
Aktualisieren Sie die Basis-URL-Konfiguration auf dem Commerce-Administrator.
Schritt 1: Erstellen von Websites, Geschäften und Speichern von Ansichten in der Admin-Konsole
Siehe Einrichten mehrerer Websites, Stores und Speichern von Ansichten in der Admin-Konsole.
Schritt 2: Erstellen von nginx-virtuellen Hosts
In diesem Schritt wird beschrieben, wie Sie Websites in die Storefront laden. 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.
Wenn Sie nur eine nginx-Virtual-Host-Datei verwenden, können Sie Ihre nginx-Konfiguration einfach und sauber halten. Durch die Verwendung mehrerer Virtual-Host-Dateien können Sie jeden Store anpassen (um beispielsweise einen benutzerdefinierten Speicherort für french.mysite.mg
zu verwenden).
So erstellen Sie einen virtuellen Host (vereinfacht):
Diese Konfiguration wird mit der nginx-Konfiguration erweitert.
-
Öffnen Sie einen Texteditor und fügen Sie der neuen Datei
/etc/nginx/sites-available/magento
den folgenden Inhalt 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 Serverkonfiguration:
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 Konfigurationsdateien für virtuelle Hosts.
-
Erstellen Sie eine symbolische Verknüpfung im Verzeichnis
/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 in der nginx-Dokumentation zur map -Direktive.
So erstellen Sie mehrere virtuelle Hosts:
-
Öffnen Sie einen Texteditor und fügen Sie der neuen Datei
/etc/nginx/sites-available/french.mysite.mg
den folgenden Inhalt 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 Ordner 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 Serverkonfiguration:
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 Konfigurationsdateien für virtuelle Hosts.
-
Erstellen Sie symbolische Links im Verzeichnis
/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
". Es handelt sich um eine Kerndatei von Commerce, die mit jeder neuen Version aktualisiert werden kann. Kopieren Sie stattdessen die Datei "nginx.conf.sample
", benennen Sie sie um und bearbeiten Sie dann die kopierte Datei.Bearbeiten des PHP-Einstiegspunkts für die Hauptanwendung:
So ändern Sie die nginx.conf.sample
-Datei**:
-
Öffnen Sie einen Texteditor und überprüfen Sie die Datei
nginx.conf.sample
,<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 Datei
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 Websites french
und german
im Commerce-Admin aktualisieren.
Aktualisieren der Basis-URL der französischen Website
- Melden Sie sich beim Commerce-Administrator an und navigieren Sie zu "Stores"> "Einstellungen"> "Konfiguration"> "Allgemein"> "Web".
- Ändern Sie den Konfigurationsbereich in die
french
-Website. - Erweitern Sie den Abschnitt Basis-URLs und aktualisieren Sie den Wert Basis-URL und den Wert Basis-Link-URL auf
http://french.magento24.com/
. - Erweitern Sie den Abschnitt Basis-URLs (sicher) und aktualisieren Sie den Wert Sichere Basis-URL und den Wert Sichere Basis-Link-URL auf
https://french.magento24.com/
. - Klicken Sie auf Konfiguration speichern und speichern Sie die Konfigurationsänderungen.
Aktualisieren der deutschen Website-Basis-URL
- Melden Sie sich beim Commerce-Administrator an und navigieren Sie zu "Stores"> "Einstellungen"> "Konfiguration"> "Allgemein"> "Web".
- Ändern Sie den Konfigurationsbereich in die
german
-Website. - Erweitern Sie den Abschnitt Basis-URLs und aktualisieren Sie den Wert Basis-URL und den Wert Basis-Link-URL auf
http://german.magento24.com/
. - Erweitern Sie den Abschnitt Basis-URLs (sicher) und aktualisieren Sie den Wert Sichere Basis-URL und den Wert Sichere Basis-Link-URL auf
https://german.magento24.com/
. - Klicken Sie auf Konfiguration speichern und speichern Sie die Konfigurationsänderungen.
Cache leeren
Führen Sie den folgenden Befehl aus, um die Caches config
und full_page
zu bereinigen.
bin/magento cache:clean config full_page
Überprüfen der Site
Sofern kein DNS für die URLs Ihrer Stores eingerichtet ist, müssen Sie in Ihrer hosts
-Datei eine statische Route zum Host hinzufügen:
-
Suchen Sie die Datei des Betriebssystems
hosts
. -
Fügen Sie die statische Route im 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. Wenden Sie sich diesbezüglich an Ihren Hosting-Provider.
- Weitere Aufgaben sind erforderlich, um Adobe Commerce in der Cloud-Infrastruktur einzurichten. Weitere Informationen finden Sie unter Einrichten mehrerer Cloud-Websites oder -Stores im Handbuch Commerce on Cloud Infrastructure.
Fehlerbehebung
- Wenn Ihre französischen und deutschen Sites 404 s zurückgeben, Ihr Admin jedoch geladen wird, stellen Sie sicher, dass Sie Schritt 6: Hinzufügen des Store-Codes zur Basis-URL abgeschlossen haben.
- Wenn alle URLs 404 s zurückgeben, stellen Sie sicher, dass Sie Ihren Webserver neu starten.
- Wenn der Administrator nicht ordnungsgemäß funktioniert, stellen Sie sicher, dass Sie Ihre virtuellen Hosts ordnungsgemäß eingerichtet haben.