Einrichten von WordPress Multisite mit Nginx unter Ubuntu 14.04

Einführung

Die Multisite-Funktion von WordPress bietet die Möglichkeit, mit einer einzigen Installation von WordPress mehrere Websites zu erstellen. Jede Site kann ein separates Thema, eine Reihe von Plugins und eine Sammlung von Inhalten (Posts und Seiten) haben. Dies reduziert den Aufwand für die Wartung und Aktualisierung mehrerer Installationen von WordPress, während Sie gleichzeitig mehrere Websites hosten können, die in keinerlei Beziehung zueinander stehen.

WordPress Multisite gibt es in zwei Varianten: Unterverzeichnis oder Subdomain. In diesem Tutorial richten wir die WordPress-Multisite für die Verwendung von Subdomains ein. Das bedeutet, dass Websites, die wir erstellen, eine Subdomain-Webadresse wie * http: //wp-site.yourdomain.com* haben. Dies kann einer externen Domain wie * http: //wp-site.net* zugeordnet werden, sodass jede Site von außen unabhängig aussieht.

Voraussetzungen

Dieses Tutorial setzt voraus, dass der Benutzer über folgende Kenntnisse verfügt:

Wir werden drei WordPress-Sites mit den folgenden Domain-Namen erstellen:

  • * Site 1: *

  • Domain: * (Primäre Domain)

    Dies ist die Site, die bei der Installation von WordPress erstellt wird.

  • * Site 2: *

  • Externe Domain: *

  • Subdomain: * shoppingsite.example.com

  • * Site 3: *

  • Externe Domain: *

  • Subdomain: * companysite.example.com

Die erste Domain ist der primäre Domainname, über den WordPress installiert wird. Stellen Sie sicher, dass set up DNS for all three domains auf die IP-Adresse von verweist das Droplet, das WordPress hostet.

Erster Schritt - Einrichten von DNS-Platzhalterdatensätzen

In diesem Abschnitt fügen wir einen DNS-Platzhaltereintrag für die * primäre Domain * hinzu, sodass jederzeit weitere Sites hinzugefügt werden können, ohne dass einzelne https://www.digitalocean.com/community/tutorials/an-introduction-to erforderlich sind -dns-terminologie-komponenten-und-konzepte [A records]. (Alternativ können Sie für jede Unterdomäne einen neuen A-Datensatz hinzufügen.)

_ * Hinweis: * Dies muss nur für die * _primäre Domain (in diesem Tutorial) durchgeführt werden. __

Melden Sie sich bei Ihrem DigitalOcean-Kontrollfeld an und navigieren Sie zum Abschnitt Netzwerk. Bearbeiten Sie die primäre Domain und erstellen Sie einen Platzhalter * Ein Eintrag * für diese Domain, der auf die IP-Adresse des Droplets verweist. Ein Platzhalterdatensatz wird erstellt, indem ein Sternchen (*) in das Eingabefeld für den Hostnamen eingegeben wird (siehe Abbildung unten).

Wenn Sie den DNS Ihrer Domain an einem anderen Ort hosten, sollten Sie stattdessen den Platzhalterdatensatz dort festlegen.

  • Was du jetzt sehen solltest: *

DNS-Abfragen für * random-sub-domain.examplewp.com * sollten die IP-Adresse Ihres Droplets zurückgeben.

Schritt Zwei - Installieren und Konfigurieren des LEMP-Stacks

In diesem Abschnitt werden wir Nginx, MySQL und PHP installieren und konfigurieren. Unter https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 finden Sie einen ausführlichen Artikel zum Einrichten eines LEMP Stapel], auf den Sie verweisen können, wenn Sie möchten. Dieser Abschnitt dient als schnelle Einrichtung. Es gibt auch ein * LEMP unter Ubuntu 14.04 * -Image auf der Registerkarte * Programme * im Abschnitt * Bild auswählen *, wenn Sie ein Droplet erstellen.

Aktualisieren Sie die Repositorys und installieren Sie Nginx, MySQL, PHP5-FPM und andere notwendige PHP-Module.

apt-get update
apt-get install -y nginx mysql-server php5-fpm php5-mysql php5-curl php5-mcrypt php5-gd

Bei der Installation des MySQL-Servers werden Sie aufgefordert, ein Kennwort für den Root-Datenbankbenutzer einzugeben. Bitte geben Sie ein sicheres Passwort ein und lassen Sie es nicht leer. Sie werden das Passwort zweimal eingeben.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/2.png [MySQL-Root-Passwort]

Erstellen Sie ein Dokumentenstammverzeichnis für Nginx, in dem die WordPress-Dateien gespeichert werden. Wir werden in diesem Tutorial verwenden.

mkdir

Wir werden den virtuellen Standardhost von Nginx durch unseren eigenen ersetzen. Entfernen Sie daher dessen Symlink im Verzeichnis * sites-enabled *.

rm /etc/nginx/sites-enabled/default

Erstellen Sie eine neue virtuelle Hostdatei im Verzeichnis * sites-available *. Diese Datei kann einen beliebigen Namen haben. In unserem Beispiel nennen wir es.

nano /etc/nginx/sites-available/

Bearbeiten Sie diese Datei und nehmen Sie die folgende Konfiguration vor. Bearbeiten Sie den rot hervorgehobenen Text entsprechend Ihrer Umgebung. In der Zeile "+ Servername +" sollten Sie alle drei (oder mehr) Ihrer Domänen mit mehreren Standorten und die Platzhalter-Unterdomäne für die erste Domäne hinzufügen.

server {
   listen [::]:80 ipv6only=off;
   server_name ;

   root ;
   index index.php index.html index.htm;

   location / {
       try_files $uri $uri/ /index.php?$args ;
   }

   location ~ /favicon.ico {
       access_log off;
       log_not_found off;
   }

   location ~ \.php$ {
       try_files $uri /index.php;
       include fastcgi_params;
       fastcgi_pass unix:/var/run/php5-fpm.sock;
   }

   access_log  /var/log/nginx/$host-access.log;
   error_log   /var/log/nginx/wpms-error.log;
}

Wenn dieses Droplet nur diese WordPress-Installation hostet, können die Direktiven + listen + und + server_name + wie folgt geändert werden:

listen [::]:80 default_server ipv6only=off;
server_name ;

Die Verwendung der Variablen "+ $ host " in der Direktive " access_log " erstellt separate Protokolldateien für jede Domäne wie "_examplewp.com-access.log_" und "_shoppingsite.com-access.log_". Es ist nicht möglich, solche Variablen für die Direktive " error_log +" zu verwenden, daher werden alle Fehler in einer einzigen Datei protokolliert.

Speichern Sie diese Datei und erstellen Sie einen Symlink dieser Datei im Verzeichnis * sites-enabled *.

ln -s /etc/nginx/sites-available/wp-ms /etc/nginx/sites-enabled/wp-ms

Führen Sie einen Nginx-Konfigurationstest durch und starten Sie ihn neu, wenn er * OK * zurückgibt.

service nginx configtest
service nginx restart

Schritt Drei - Erstellen Sie eine MySQL-Datenbank und einen Benutzer für WordPress

In diesem Abschnitt erstellen wir eine MySQL-Datenbank für WordPress und einen Benutzer, der nur über Berechtigungen für diese Datenbank verfügt.

Melden Sie sich in der MySQL-Befehlszeile als Benutzer * root * an.

mysql -u root -p

Erstellen Sie eine Datenbank.

CREATE DATABASE ;

Erstellen Sie einen MySQL-Benutzer und erteilen Sie Berechtigungen für diese Datenbank:

CREATE USER ''@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON .* TO ''@'localhost';

Ersetzen Sie das Wort * Passwort * durch ein starkes Passwort. Erlöschen Sie die Berechtigungen und beenden Sie die MySQL-Befehlszeile.

FLUSH PRIVILEGES;
exit

Notieren Sie sich diese Details, da Sie sie in Schritt 4 benötigen.

_ _ * Datenbankname: *

+ * Datenbankbenutzer: *

+ * Datenbank Passwort: * _ _

Weitere Informationen zu MySQL-Benutzern finden Sie unter this article.

Vierter Schritt - Laden Sie WordPress herunter und installieren Sie es

In diesem Abschnitt werden wir die neueste Version von WordPress herunterladen und installieren. Dies wird für unsere erste Site sein, * examplewp.com *.

Laden Sie WordPress herunter und extrahieren Sie es.

wget http://wordpress.org/latest.tar.gz
tar -xf latest.tar.gz

Verschieben Sie die extrahierten Dateien in den Dokumentenstamm.

mv wordpress/*

Weisen Sie dem Benutzer "+ www-data" das Eigentumsrecht zu. Dies ist für das Hochladen von Medien und für die Aktualisierung von Kern-, Plugin- und Designdateien in WordPress unerlässlich.

chown -R www-data:www-data

Greifen Sie in Ihrem Browser auf die * primäre Domain * zu, um mit der Installation von WordPress zu beginnen.

http:///

Sie können der URL bei Bedarf das Suffix "www" hinzufügen. Klicken Sie auf die Schaltfläche * Konfigurationsdatei erstellen * und anschließend auf die Schaltfläche * Los geht’s! *. Füllen Sie die Datenbankdetails aus (verwenden Sie die Informationen aus Schritt 3) und klicken Sie auf "Senden".

Zu diesem Zeitpunkt stellt WordPress eine Verbindung mit der Datenbank her, um die eingegebenen Anmeldeinformationen zu testen. Sobald die Verbindung hergestellt wurde, wird die Schaltfläche * Installation ausführen * angezeigt. Klick es an. Füllen Sie das Formular * Erforderliche Informationen * aus, um Ihren Site-Titel, Ihren Benutzernamen, Ihr Passwort und Ihre E-Mail-Adresse einzurichten, und klicken Sie dann auf * WordPress installieren *. Es wird empfohlen, aus Sicherheitsgründen einen nicht generischen Benutzernamen zu wählen.

Fünfter Schritt - Aktivieren Sie Multisite und erstellen Sie zusätzliche Sites

In diesem Abschnitt aktivieren wir WordPress Multisite und erstellen die beiden zusätzlichen Sites, die im Abschnitt * Voraussetzungen * dieses Artikels aufgeführt sind.

Eine PHP-Konstante muss in der * wp-config.php * -Datei definiert werden, um den http://codex.wordpress.org/Tools_Network_Screen zu aktivieren Seite [Network Setup].

Bearbeiten Sie die * wp-config.php * -Datei:

nano wp-config.php

Füge den folgenden Code * vor * dem Kommentar ein `+ / * Das ist alles, hör auf zu editieren! Viel Spaß beim Bloggen. * / + `:

/* Multisite settings */
define( 'WP_ALLOW_MULTISITE', true );

Wir werden diese Datei in diesem Tutorial noch einige Male bearbeiten. Fühlen Sie sich frei, alle neuen Zeilen im Abschnitt "+ / * Multisite-Einstellungen * / +" hinzuzufügen, den wir gerade erstellt haben.

Speicher die Datei. Melden Sie sich im WordPress-Admin-Bereich an und navigieren Sie zu * Tools> Network Setup *. Wählen Sie die Option * Subdomains *, ändern Sie den * Netzwerktitel * wie gewünscht und klicken Sie dann auf * Installieren *.

Sie erhalten zwei Codeblöcke, die in die Dateien * wp-config.php * und * .htaccess * eingefügt werden. Kopieren Sie den Code * wp-config.php *, der ungefähr so ​​aussieht:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', '');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Bearbeiten Sie die Datei * wp-config.php *.

nano wp-config.php

Fügen Sie diese Zeilen * vor * dem Kommentar ein. Viel Spaß beim Bloggen. * / + `und speichern Sie es. Der für .htaccess angezeigte Code kann ignoriert werden, da Nginx diese Datei nicht besitzt.

Melden Sie sich vom WordPress-Admin-Bereich ab und erneut an. Navigieren Sie in der Administrator-http://codex.wordpress.org/Toolbar[toolbar] oben links zu * Meine Websites> Netzwerkadministrator> Websites *.

Klicken Sie auf die Schaltfläche * Add New *, um das Formular * Add New Site * zu öffnen. Der folgende Screenshot zeigt die ausgefüllten Details für die Einkaufsseite in unserem Beispiel. Die eingegebene * Site-Adresse * bildet die Unterdomäne dieser Site.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/7.png [Erstellen einer neuen WordPress-Site]

Klicken Sie auf * Add Site * (Site hinzufügen). Die erstellte Site kann über * http: //shoppingsite.examplewp.com* aufgerufen werden.

Wiederholen Sie diese Schritte, um die zweite Site zu erstellen (in unserem Beispiel companysite.examplewp.com).

  • Was du jetzt sehen solltest: *

Die folgenden drei WordPress-Sites:

  • examplewp.com

  • shoppingsite.examplewp.com

  • companysite.examplewp.com

Jeder von ihnen hat seinen eigenen Inhalt, sein eigenes Thema und eine Reihe von aktiven Plugins.

Schritt 6 - Einrichten der Domänenzuordnung

In diesem Abschnitt können Sie für jede WordPress-Site einen eigenen Domainnamen verwenden, indem Sie das WordPress MU Domain Mapping-Plugin herunterladen und aktivieren. Mit diesem Plugin können Benutzer von WordPress Multisite ihr Blog / ihre Website einer anderen Domain zuordnen.

Melden Sie sich über SSH bei Ihrem Droplet an und laden Sie das Plugin WordPress MU Domain Mapping herunter. Installieren Sie zuerst den Befehl + unzip + und extrahieren Sie dann das Plugin.

wget http://downloads.wordpress.org/plugin/wordpress-mu-domain-mapping.latest-stable.zip
apt-get install unzip
unzip wordpress-mu-domain-mapping.latest-stable.zip

Verschieben Sie die extrahierten Dateien in das WordPress-Plugin-Verzeichnis.

mv wordpress-mu-domain-mapping wp-content/plugins/

Kopieren Sie die * sunrise.php * -Datei aus dem Plugin-Verzeichnis in das * wp-content * -Verzeichnis.

cp wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php wp-content/

Bearbeite die * wp-config.php * -Datei und füge die folgende Zeile * vor * dem Kommentar ein `+ / * Das ist alles, hör auf zu editieren! Viel Spaß beim Bloggen. * / + `.

Datei: + wp-config.php

define('SUNRISE', 'on');

Speichern Sie diese Datei und kehren Sie zum Webbrowser zurück. Navigieren Sie in der WordPress-Symbolleiste zu * My Sites> Network Admin> Plugins *.

Klicken Sie unter dem Plugin * WordPress MU Domain Mapping * auf den Link * Network Activate *. Gehen Sie zu * Settings> Domain Mapping * und ändern Sie die * Domain Options * wie folgt:

  • Deaktivieren Sie * Remote Login *

  • Aktivieren Sie * Permanente Weiterleitung *

  • Deaktivieren Sie das Kontrollkästchen * Verwaltungsseiten auf die ursprüngliche Domain der Website umleiten *.

Klicken Sie anschließend auf * Speichern *. Diese Einstellungen leiten alle Anfragen nach Subdomains (wie companysite.examplewp.com) an ihre jeweiligen externen Domains (wie companysite.org) weiter, einschließlich der Verwaltungsseiten (/ wp-admin).

Im nächsten Schritt ordnen wir jedem Standort einen Domainnamen anhand seiner Standort-ID zu. Es gibt viele Möglichkeiten, die ID einer Site zu finden, aber zur einfacheren Verwaltung erstellen wir ein einfaches Plugin für WordPress Must-use, das eine zusätzliche ID-Spalte auf der Seite * Sites * anzeigt .

Melden Sie sich über SSH bei Ihrem Droplet an und erstellen Sie ein * mu-plugins * -Verzeichnis.

mkdir wp-content/mu-plugins

Erstellen Sie eine PHP-Datei in diesem Verzeichnis und fügen Sie den folgenden Code ein:

nano wp-content/mu-plugins/wpms_blogid.php

Sie können diesen Inhalt genau kopieren:

<?php
add_filter( 'wpmu_blogs_columns', 'do_get_id' );
add_action( 'manage_sites_custom_column', 'do_add_columns', 10, 2 );
add_action( 'manage_blogs_custom_column', 'do_add_columns', 10, 2 );

function do_add_columns( $column_name, $blog_id ) {
   if ( 'blog_id' === $column_name )
       echo $blog_id;
   return $column_name;
}

function do_get_id( $columns ) {
   $columns['blog_id'] = 'ID';
   return $columns;
}

Der Abschnitt * Sites> Alle Sites * sollte jetzt eine zusätzliche ID-Spalte anzeigen.

Notieren Sie sich die ID-Werte für jede Site und rufen Sie die Seite * Einstellungen> Domains * auf. Geben Sie die Site-ID gefolgt von der externen Domain für die Site ein. Da companysite beispielsweise eine ID von 3 hat, sollte auf dieser Seite die * Site ID * 3 und die Domain * companysite.org * sein.

image: https://assets.digitalocean.com/articles/wordpress_multisite/11.png [Zuordnung einer Site-ID zu einer Domain]

Sie können ein "www" -Präfix hinzufügen, wenn Sie die Site-URL als * http: //www.companysite.org [www.companysite.org] * festlegen möchten. Wiederholen Sie diese Schritte für die anderen Domänen. Klicken Sie unten auf der Seite auf * Speichern *.

  • Was du jetzt sehen solltest: *

Jede Site hat ihren eigenen Domainnamen anstelle einer Subdomain. Wenn Sie in Ihrem Browser http://companysite.org eingeben, wird die Site * My Online Company * geöffnet. Sie können dies jetzt überprüfen, indem Sie http://shoppingsite.com und http://companysite.org besuchen. Der Seitentitel sollte sich in der oberen linken Ecke der Seite ändern.

Jetzt kann jede Site separat über ein eigenes WordPress-Admin-Panel verwaltet werden:

http://examplewp.com/wp-admin/
http://shoppingsite.com/wp-admin/
http://companysite.org/wp-admin/

Aktualisierungen des Kerns / der Plugins / Themes und die Installation der Plugins / Themes sollten über die Netzwerkadministrationsseite der primären Domain erfolgen:

http://examplewp.com/wp-admin/network/