Ich habe einige Fragen gesehen, die ähnlich aussehen, aber alle endeten mit Multisite . Aus Gründen der Wartbarkeit, Leistung und Sicherheit möchte ich keine Multisite verwenden. Also bitte ertrage es mit mir.
Daran denke ich:
.
|_____branch1 // for branch1.domain.com
| |_____themes
| |_____plugins
|
|_____branch2 // for branch2.domain.com
| |_____themes
| |_____plugins
|
|_____branch3 // for branch3.domain.com
| |_____themes
| |_____plugins
|
|_____index.php
|_____WordPress
|_____wp-config.php
Wie Sie sehen können, hat jede Domain ihre eigene Datenbank und ihr eigenes Inhaltsverzeichnis, aber nur eine WordPress-Instanz. Jetzt werden Themen, Plugins und Datenbanken kleiner und unabhängiger. Dann wäre es viel einfacher zu warten, zu skalieren ...
Aber ist es möglich? Wenn Sie das gleiche Problem schon einmal hatten, teilen Sie uns bitte Ihre Gedanken mit! Ich schätze deine Hilfe sehr.
customization
multisite
MinhTri
quelle
quelle
Antworten:
Wie @ tom-j-nowell im Kommentar zu OP sagte, kann Multisite dies einfacher machen.
Leistung und Sicherheit sind für Multisite kein wirkliches Problem (zumindest nicht mehr als für reguläre Installationen), aber ich stimme zu, dass Multisite manchmal ein Problem sein kann, da viele Plugins (entweder benutzerdefinierte oder Drittanbieter) dies möglicherweise nicht tun Arbeiten Sie ordnungsgemäß auf mehreren Websites oder weil Sie Benutzer verschiedener Websites vollständig voneinander trennen möchten.
Das heißt, was Sie erreichen wollen, ist nicht so schwer.
Was Sie zwischen der Installation ändern müssen, ist:
Diese Konfiguration kann mithilfe von Konstanten durchgeführt werden.
wp-config.php
Ihr einziges Problem besteht darin, sie basierend auf der URL zu wechseln.Die Servervariable
'SERVER_NAME'
sollte für Sie funktionieren, zumindest wenn Ihr Webserver ordnungsgemäß konfiguriert ist.Beispielsweise können Sie einen Ordner erstellen,
/conf
der auf derselben Ebene vonwp-config.php
Datei und/WordPress
Ordner benannt ist.In diesem Ordner können Sie einige Dateien hinzufügen:
branch1.domain.com.conf
branch2.domain.com.conf
branch3.domain.com.conf
In jedem von ihnen kann man so etwas tun
Dies ändert sich für jede Konfigurationsdatei entsprechend der "Verzweigung".
Danach können Sie in Ihrem Unikat
wp-config.php
so etwas wie:Was oben passiert ist, dass basierend auf dem Servernamen eine andere Konfigurationsdatei geladen wird (falls gefunden) und wenn die Konfigurationsdatei keine der Standardkonfigurationskonfigurationen definiert (oder wenn die Datei nicht gefunden wird), wird standardmäßig die Konfiguration festgelegt.
Das Schöne ist, dass Sie zum Hinzufügen eines neuen Zweigs nur den Zweigordner erstellen und einen
.conf
nach der neuen Zweigdomäne benannten angeben müssen. Wenn Sie fertig sind, gibt es auf der WP-Seite nichts zu ändern.Die Linie:
Hier bekomme ich den Domainnamen. Als erste Option verwende ich eine Umgebungsvariable, da die Wahrscheinlichkeit besteht,
$_SERVER['SERVER_NAME']
dass sie in einem Befehlszeilenkontext nicht funktioniert, wie z. B. bei Verwendung der WP-CLI. In diesen Situationen können Sie eine Umgebungsvariable festlegen, um WP zu zwingen, Einstellungen aus einem bestimmten Zweig zu verwenden.Beachten Sie, dass ich in branchenspezifischen Konfigurationsdateien den
WP_CONTENT_DIR
Ordner "Plugins" und "Themes" automatisch auf die zugehörigen Unterordner/plugins
und den/themes
Zweigunterordner setze.Ein mögliches Problem hierbei ist, wenn Sie den
/uploads
Ordner freigeben möchten (in den Dateien hochgeladen werden).Standardmäßig ist dieser Ordner ein Unterordner des Inhaltsverzeichnisses. Wenn Sie also den obigen Workflow verwenden, ist er ein
/uploads
Unterordner jedes Zweigstammordners.Wenn dies für Sie kein Problem ist, gehen Sie einfach damit um. Andernfalls besteht die einfachste Lösung darin,
/uploads
in jedem Zweigordner einen Symlink zu dem tatsächlichen Upload-Ordner zu erstellen, den Sie freigeben möchten.quelle
$_SERVER['SERVER_NAME']
nicht zuverlässig ist ./uploads
dir ist kein problem. Ich habe auch mit WP CLI getestet, wenn wir--url
Parameter für jede Site übergeben, funktioniert es normal :)server_name
in Nginx oderServerName
Apache einrichten oder was auch immer zu Ihrem Webserver passt,$_SERVER['SERVER_NAME']
funktioniert dies nur. Selbst wenn die WP-CLI möglicherweise mithilfe von--url
Parametern funktioniert , können bei anderen Befehlszeilentools Probleme auftreten, wenn Sie die Umgebungsvariable nicht verwenden. WP CLI "verspottet" die URL der Anforderung in einem CLI-Kontext, andere Befehle tun dies wahrscheinlich nicht.SERVER_NAME
das richtig konfiguriert ist. Über env vars habe ich phpdotenv verwendet , um es zu beheben. Derzeit scheint allesDies ist mit einem Symlinking und ein wenig Planung möglich. Ich habe im Internet nach dem gleichen Thema gesucht. Zum Schluss alles zusammenstellen und zum Laufen bringen.
Ich habe einige Websites betrieben, die alle dasselbe Thema und denselben Plugin-Ordner haben. Dieselben Ordner funktionieren für mehrere Standorte und einzelne Standorte. Sie müssen jedoch vorsichtig mit bestimmten Plugins sein, die nur Multi / Single-Sites sein können und eigenartig sind.
Ich habe ein Verzeichnis wie master-tnp / theme und master-tnp / plugins erstellt. Verknüpfen Sie dann mit dem Befehl ln -s mit Ihrem WordPress-Verzeichnis.
Fallstricke gibt es auch bei Serverkonfigurationen. Stellen Sie sicher, dass die Direktive zum Folgen von Symlinks aktiviert ist.
Wenn Sie eine einzelne WordPress-Installation verwenden möchten, habe ich unter https://vaish.co/multiple-sites-single-wordpress-directory eine ausführliche Anleitung dazu zusammengestellt
quelle