alles-mit-links

Abenteuer WordPress 3 Multi-User Installation Teil 2


alles-mit-links » Bloggen mit WordPress » Abenteuer WordPress 3 Multi-User Installation Teil 2

Hier nun die Fortsetzung des Beitrags: Abenteuer WordPress 3 Multi-User Installation

Folgendes sollte mit der Installation von WordPress 3.0 erreicht werden:

  • Der Betrieb mehrer Blogs mit einem WordPress-Core-System
  • Betrieb der Blogs unter dem eigenen Domainnamen
  • Verwaltung der Blogs mit einem Super-Admin-Account

Dem im Wege stand, dass das Plugin WordPress MU Domain Mapping nicht mit einer WordPress-Installation in einem Unterverzeichnis der WebServers kompatibel ist.

Wichtig für alle folgenden Angaben ist, dass ich mich bei der Konfiguration des WordPress-Netzwerkes für die Nutzung von Unterverzeichnissen für die Blogs entschieden hatte.


Das Abenteuer nimmt seinen Lauf

Die Zuhilfenahme des Supports meines Hosters brachte mir zwar die aktuellste WordPress 3.0 Version auf den Server, wieder in einem Unterverzeichnis, das Domain Mapping PlugIn wollte aber auch jetzt nicht seinen Dienst verrichten. Das Ergebnis war das gleiche wie schon zuvor.

Der richtige Installationsort für das PlugIns

Im Blog von Otto on WordPress im Artikel WordPress 3.0: Multisite Domain Mapping Tutorial fand ich eine recht detailierte Beschreibung darüber, wie das Domain Mapping PlugIn zu installieren sei.

Das PlugIn gehört nämlich nicht einfach in den WordPress-PlugIn Ordner: wp-conten/plugins. Statt dessen ist unter [wp-content] ein neuer Ordner mit der Bezeichnung [mu-plugins] anzulegen. In diesen wird dann die Datei domain_mapping.php kopiert bzw. hochgeladen.

Die 2. Datei des Domain Mapping PlugIns mit der Bezeichnung sunrise.php gehört, entgegen aller Erwartungen, in das Verzeichnis [wp-content]. Ausserdem muß in der Datei wp-config.php noch folgende Zeile eingefügt werden:

define( ‘SUNRISE’, ‘on’ );

Ein genauerer Blick in die Datei readme.txt, die dem PlugIn begefügt ist, hätte mir das alles auch verraten, wenn ich dort den Abschnitt Installation, der erst nach ! der Passage über die Änderungen (Changelog) am PlugIn kommt, gleich gefunden hätte.

Obwohl das PlugIn jetzt richtig installiert war, erhielt ich nach wie vor die gleiche Fehlermeldung. Unterverzeichnis nix gut.

Anpassung am PlugIn Quellcode

Im Quelltext des PlugIns (Datei: domain_mapping.php) muss es ja eine oder mehrere Stellen geben, an denen geprüft wird, ob die WordPress-Installation in einem Unterverzeichnis liegt, oder nicht. An 3 Stellen gibt es diese Überprüfung auch wirklich im Quellcode:

if ( $current_site->path != “/” ) { wp_die( __( “The domain mapping plugin only works if the site is installed in /. This is a limitation of how virtual servers work and is very difficult to work around.”, ‘wordpress-mu-domain-mapping’ ) );
}

Es mag ja sehr schwierig sein das PlugIn trotzdem zu laufen zu bringen, es kann ja nicht nur am Unterverzeichnis liegen. Um einen Schritt weiter zu kommen, habe ich diese 3 Passagen im Quellcode einfach mal auskommentiert. Und siehe da – wenigstens im WordPress-Backend stand das PlugIn jetzt zur Verfügung.

Die Funktion is_site_admin() ist veraltet

Da ich den DebugModus in der Datei wp-config.php aktiviert hatte, erhielt ich jetzt eine Fehlermeldung, dass die Funktion is_site_admin() in WordPress 3.0 veraltet sei, und durch is_super_admin() ersetzt werden sollten. Also wurde der Quelltext auch dahingehend abgeändert.

Sub-Domains lassen sich nicht speichern

Im WordPress-Backend stand das PlugIn jetzt voll zur Verfügung, und es ließ sich auch eine Test-Domain anlegen. Um jetzt auch das Frontend zu testen, legte ich mit dazu eine SubDomain test-blog.domain.tld auf dem Server an. Diese SubDomain verweist auf das Verzeichnis mit der WordPress-Installation.

Als nächstes wurde im Super-Admin-Menü unter Blog Netzwerk -> Blogs eine neuer Blog angelegt. Das klappte auch. Als nächstes wurde noch die zu mappende Domain eingetragen, womit eigentlich alles funktionieren sollte. Klappte aber nicht. Das Problem war, das anstelle von test-blog.domain.tld dieses: domain.tld/test-blog/test-blog in der Datenbank abgelegt worden war. Ein Aufruf der Seite im Browser mit test-blog.domain.tld brachte nur eine 205 Fehlermeldung hervor.

Manuelle Anpassungen in der Datenbank

Da sich über das Admin-Panel keine vernünftigen Domainnamen eingeben ließen, jedenfalls nicht so, wie ich das haben wollte, schrieb ich die richtigen Werte per phpmyadmin direkt in die Datenbank.

Und siehe da, die Startseite des Testblogs wurde angezeigt. Sobald ich aber irgend einen Link angeklickt hatte, erhielt ich wieder die Fehlermeldung 205. Die sagt einem bekanntlich, das der Apache-Webserver mit irgendetwas ein Problem hat.

Es sei noch anzumerken, dass der Hauptblog unter www.domain.tld/wp_ornder problemlos lief. Dieser soll aber eigentlich unter blog.domain.tld laufen. Dies per Datebank-Anpassung zu machen brachte nichts, auch hier war so nur noch die Startseite erreichbar.

.htaccess und mod_rewrite

Es schien mir eine gute Idee, die Datei .htaccess einmal genauer unter die Lupe zu nehmen. Schließlich werkelt hier das Apache-Modul mod_rewrite bei den Seitenaufrufen ordentlich mit.

RewriteEngine On
RewriteBase /wp-dir/
RewriteRule ^index\.php$ – [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Die Zeile RewriteBase /wp-dir/ viel mir gleich als mögliche Fehlerquelle auf. Das ist so zwar richtig, wenn ich die Blogs über installation-domain.tld/blogdir aufrufen würde. Da aber jeder Blog eine eigene Domain haben soll, der als Ziel installation-domain.tld/wp-dir fest zugeordnet ist, darf in dieser Zeile kein Verzeichnis angegeben werden. Also abändern auf: RewriteBase /

Volltreffer. Der Testblog test-blog.domain.tld läuft problemlos. Alle Links erreichen ihr Ziel und der Admin-Bereich funktioniert auch. Was nicht mehr geht, ist der Hauptblog über domain.tld/wp-dir. Eine Anpassung in der Datenbank auf blog.domain.tld brachte jetzt aber auch hier den vollen Erfolg.

Die einzelnen Schritte im Überblick

Das war jetzt viel Text. Hier nochmal eine Auflistung der einzelnen Schritte im Kurzform:

  • Installation von WordPress 3.0 in ein Verzeichnis (wp-dir)
  • Einrichten des Netzwerks für Unterordner
  • Richtige Installation des Domain Mapping PlugIns
  • Einrichten der (Sub)Domains auf das Installationsverzeichniss
  • Entfernen der Ordnerangabe in der .htaccess (RewriteBase)
  • Anpassen der einzelnen Blog URL’s (SubDomains) in der Datenbank
  • Zuordnung einer (Sub)Domain für den Hauptblogs

Fazit

Es war ein langer steiniger Weg, WordPress 3.0 für den Multi-User-Betrieb zu installieren und einzurichten. Das hier erreichte Ergebnis stellt auch keine allgemeingültige Anleitung für ein solches Vorhaben dar. Schön ist natürlich, das es prinzipiell funktioniert, auch mit eigenen Sonderwünschen. Die manuellen Anpassungen der Blog-URL’s in der Datenbank ist noch ein dicker Wermuts-Tropfen, der nur mit Änderungen am WordPress-Core elemeniert werden kann.

Prinzipiell bin ich aber mit dem Erreichten schon zufrieden. Natürlich stehen noch einige Tests und Optimierungsarbeiten an. Danach warten schon 2 Seiten, die mit dieser Installation laufen sollen. Bestimmt gibt es dann wieder etwas hier auf alles-mit-links zu berichten.

Abenteuer WordPress 3 Multi-User Installation Teil 3

Weitere interessante Beiträge

Dieser Beitrag wurde am Montag, 12. Juli 2010 um 19:47 Uhr veröffentlicht und wurde unter der Kategorie Bloggen mit WordPress abgelegt. Du kannst die Kommentare zu diesen Eintrag durch den RSS-Feed verfolgen.

« Abenteuer WordPress 3 Multi-User Installation – Was bringt Google AdSense pro Klick ? »

5 Kommentare

  1. Danke für die guten und hilfreichen Beschreibungen. Der Artikel hat mir sehr geholfen. Weiter so!

    Kommentar: L-Roy – 29. Juli 2010 @ 06:55

  2. Genau das was ich gesucht habe! Danke : )
    Allerdings habe ich noch ein Problem… In welchen Tabellen müssen dann die Blog URLs geändert werden? In wp_x_posts? Oder auch in wp_x_options und wp_sites und wp_blogs?

    Meine Blogs laufen auf domain/wordpress/blog und ich möchte sie über domain ansprechen. Hierfür habe ich 3 verschiedene Domains und entsprechend auch die Datenbanken per Hand angepasst an die jeweiligen Domains.
    Also bei Blog1: domain1/wordpress/blog
    Blog 2: domain2/wordpress/blog.

    Aber irgendwie scheine ich etwas nicht richtig verstanden zu haben… Wäre echt nett wenn jemand Hilfe weiß :)

    Kommentar: Diana – 17. Februar 2011 @ 13:14

  3. @diana
    Mit der aktuellen Version von WordPress, klappt es auch mit dem Anlegen der Blogs über das Admin-Tool. Dieser Bug wurde, soweit ich weiss, schon mit dem Update auf die Version 3.01 behoben.

    Kommentar: alles-mit-links – 19. Februar 2011 @ 10:58

  4. Danke für die Antwort! Es hat funktioniert, der Fehler war in der vhost Datei gewesen….

    Kommentar: diana – 22. Februar 2011 @ 13:08

  5. Hallo,

    auch ich habe das Plugin wie Beschrieben installieren wollen. Allerdings bekomme ich immer einen DB-Connect Fehler, sobald ich “define sunrise” in die wp-config eintrage. Hast du da Erfahrungen? Über Infos wäre ich sehr dankbar.

    Kommentar: sven – 13. März 2011 @ 16:47

Die Kommentarfunktion ist zur Zeit leider deaktiviert.


 

© 2010 alles-mit-links – by AGENTUR Matthias Griesbach | www.alles-mit-links.net | BLACKINK WebKatalog