Drupal 8 Multisite
Das folgende Tutorial behandelt die Schritte, die erforderlich sind, um ein Drupal 8 Multisite einzurichten. Dieses Tutorial befindet sich noch in der Entwicklung, es werden nur einige Beispielkonfigurationen gezeigt. Es gibt auch andere Optionen, wie HTTPS, andere Webserver und Datenbanken sowie fortgeschrittenere Virtual-Host-Konfigurationen usw.
Es ist jedoch zu beachten, dass die Verwendung des Aegir Hosting-Systems zu bevorzugen ist. Es erledigt die ganze schwere Arbeit für Sie, verwendet sichere Best Practices, einschließlich automatischer Virtual-Host-Konfiguration für Apache und Nginx, Hinzufügen von HTTPS-Unterstützung, Ausführen von Composer-Befehlen usw. Siehe Plattform-Setup-Dokumentation, Aegir-Sprech für Multisite-Codebasis.
Prozessübersicht:
1. Installieren Sie eine Drupal 8-Instanz, die als Root-Site für Ihre Multisite-Installation fungieren wird. In unserem Beispiel wird die Root-Site "d8multisite" heißen, erreichbar unter d8multisite.com und installiert in /var/www/d8multisite.
2. Erstellen Sie eine Site in der Multisite namens site1, erreichbar unter site1.d8multisite.com
3. Richten Sie site1 so ein, dass es eigene Module außerhalb der Root-Site hat.
Schritt 1: Erstellung der Master-Site
Um zu beginnen, installieren Sie eine Drupal 8-Kopie auf Ihrem Server. Lesen Sie die Drupal 8 Installationsdokumentation, falls Sie damit nicht vertraut sind.
In diesem Beispiel installieren wir Drupal mit folgenden Schritten:
1.1: Erstellen Sie eine Datenbank für die Multisite-Root-Site, z.B. d8multisite.
1.2: Laden Sie eine Drupal 8-Kopie herunter und entpacken Sie sie in Ihr Webverzeichnis.
1.3: Erstellen Sie eine Virtual-Host-Konfiguration für die Root-Site. Lesen Sie über Virtual-Host-Konfigurationen. Beispiel einer Apache Virtual-Host-Konfiguration; für Nginx siehe das offizielle Rezept.
<VirtualHost *:80> # Virtual-Host-Konfiguration für Drupal 8 Multisite Root-Site ServerAdmin me@domain.com DocumentRoot /var/www/d8multisite ServerName d8multisite.com ServerAlias www.d8multisite.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/d8multisite> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/d8multisite_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/d8multisite_access.log combined </VirtualHost>
1.4: Installieren Sie Drupal, indem Sie d8multisite.com im Browser besuchen und dem Installationsassistenten folgen.
Schritt 2: Erstellen Sie die erste Site in der Multisite
Nachdem die Root-Site eingerichtet ist, können wir die erste Site mit dem Namen site1 konfigurieren. Hier die Schritte:
2.1: Erstellen Sie den Ordner für site1 in der Multisite: /d8multisite/sites/site1.d8multisite.com
2.2: Erstellen Sie eine Datenbank für site1, z.B. d8multisite_site1
2.3: Kopieren Sie /d8multisite/sites/example.sites.php als /d8multisite/sites/sites.php
2.4: Bearbeiten Sie sites.php, sodass das Ende des Files so aussieht:
# die Root Drupal-Site für site1 bekannt machen: $sites['site1.d8multisite.com'] = 'site1.d8multisite.com';
2.5: Erstellen Sie einen Virtual Host für site1. Beachten Sie, dass dieser Virtual Host auf die Root-Site zeigt, nicht auf einen Unterordner. Alternativ können Sie auf eine eigene Virtual-Host-Konfiguration verzichten und site1 als ServerAlias für die Root-Site angeben. In diesem Apache-Beispiel erstellen wir jedoch einen separaten Virtual Host für site1:
<VirtualHost *:80> ServerAdmin me@domain.com DocumentRoot /var/www/d8multisite ServerName site1.d8multisite.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/d8multisite> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/site1-d8multisite_access.log combined </VirtualHost>
2.6: Kopieren Sie /d8multisite/sites/default/default.settings.php in den neuen Site-Ordner als settings.php:
#from dem Drupal-Stammordner cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php
2.7: Schließen Sie die Drupal-Installation für site1 ab, indem Sie die Domain site1.d8multisite.com im Browser besuchen.
Sie können diese Schritte wiederholen, um weitere Sites in Ihrer Multisite-Installation anzulegen. Sie können auch Domains wie example.com und site1.anotherdomain.com verwenden. Mehr zu Domains, URLs und Unterordnernamen für Sites.
Schritt 3: Module für jede Site aktivieren
Manchmal möchten Sie, dass eine Site innerhalb Ihrer Multisite eigene Module hat. Dafür erstellen Sie einfach die entsprechenden Ordner im jeweiligen Site-Verzeichnis. Siehe Multisite-Ordnerstruktur in Drupal 8.
In unserem Beispiel erlauben wir site1 eigene Module:
1. Erstellen Sie den Ordner modules im Unterordner site1: /d8multisite/sites/site1.d8multisite.com/modules
2. Geben Sie Apache Schreibrechte für diesen Ordner, z.B. mit chown www-data /d8multisite/sites/site1.d8multisite.com/modules
3. Testen Sie es:
1) Wechseln Sie aus dem site1-Unterordner in die Root-Site und laden Sie das Modul Pathauto mit drush: drush dl pathauto
2) Wechseln Sie in den site1-Unterordner und laden Sie das Modul ds mit drush: drush dl ds
3) Besuchen Sie beide Sites und prüfen Sie:
- Pathauto ist auf beiden Sites verfügbar
- Display Suite ist nur auf site1 verfügbar
Hinweis: Das Gleiche gilt für Themes, Bibliotheken und Dateien. Hier ist jedoch noch weiteres Testen und Dokumentieren erforderlich.
Drush in Multisite verwenden
Sie können die Option -l verwenden:
drush -l example.com befehl
Oder einen Site-Alias:
drush @alias befehl
Um zu sehen, welche Aliase verfügbar sind, führen Sie aus:
drush site:alias
Ein Beispielauszug könnte sein:
@sub1.dev ':
root: /var/www/mydomain.com/web
uri: «https://sub1.mydomain.com»
@default.dev ':
root: /var/www/mydomain.com/web
uri: «https://sub2.mydomain.com/»
@third.dev ':
root: /var/www/mydomain.com/web
uri: «https://thirddomain.com»
Und ein korrekter Drush-Befehl könnte sein:
drush @sub1 updb
Hinweis: Wir verwenden „.dev“ nicht im Alias.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.