:::: MENU ::::

WebDevExp

Meine Erfahrungen in der Webentwicklerwelt

WordPress 3 MU auf lighttpd und das „langsame Bilder“-Problem

php, Webserver

WordPress 3 MU auf lighttpd und das „langsame Bilder“-Problem

Dieser und der ein oder andere Blog, welche hauptsächlich von meiner Frau betrieben werden, läuft nun auf WordPress 3, weil es mir auf den Geist ging immer x Blogs aktuell zu halten, laufen nun alle mit aktiviertem MU.

Da auf meinem Websever lighttpd und nicht apache läuft, konnte ich mich nicht 100%ig an die Anleitung auf der WP MU Seite halten.

In lighttpd gibt es kein .htaccess, also müssen die Rewriteregeln (ich nutze Subdomains, keine Unterverzeichnisse), in die lighttpd-config. Das ganze sieht so aus:

$HTTP["host"] =~ "^((.*).?example\.de)$" {
  server.document-root = "/var/www/.../wp3/"
  server.error-handler-404 = "/index.php"  #hierdurch erspart man sich rewrite regeln für schöne permalinks
  url.rewrite-once = (
    "^/(.*/)?files/$" => "/index.php",
   "^/(.*/)?files/(.*)" => "/wp-content/blogs.php?file=$2",
    "^/([_0-9a-zA-Z-]+/)?(wp-.*)" => "/$2",
    "^/([_0-9a-zA-Z-]+/)?(.*\.php)$" => "/$2",
  )
}

Der Rest lief einwandfrei nach offizieller Anleitung, da in einigen der anderen Blogs allerdings recht viele Bilder sind, viel mir sofort die mangelnde Performance diesbezüglich auf. Der Grund war schnell gefunden, gab es 40 Bilder auf einer Seite, bedeutete dies, aufgrund der zweiten Rewriteregel, jeweils einen Aufruf eines PHP Skriptes, welches einen ganzen Schweif an includes inkl. Datenbankverbindungen und Queries mit sich bringt.

Die Lösung war, mit ein wenig Linuxwissen, aber schnell gefunden: Symlinks für jeden einzelnen Blog. Erfordert zwar ein wenig mehr Verwaltungsaufwand, spart aber das Umleiten über ein PHP Skript, um Bilder anzuzeigen. Die Regel muss dann so aussehen:

    "^/(.*/)?files/(.*)$" => "/wp-content/blogs.dir/%0/files/$2",

Das %0 funktioniert so nur, weil die Hostdefinition (Zeile 1 im oberen Code) als Pattern definiert ist!

Im, laut Anleitung angelegten, blogs.dir Verzeichnis müssen nun Symlinks angelegt werden:

ln -s /var/www/.../wp3/wp-content/blogs.dir/[BlogID] /var/www/.../wp3/wp-content/blogs.dir/[subdomain].example.de

Falls jemand eine elegantere Lösung kennt, als für jeden Blog einen Symlink anzulegen, als her damit!

2 Comments

  1. Michael

    Mir ging es allerdings primär darum, nicht für jeden Blog die lighty config anpassen zu müssen. Allerdings könnte da was mit evhost gehen, denke ich,,,,

    Antworten

Leave a comment

Loading Facebook Comments ...