Im Internet "rum" surfen kostet einem manchmal viel Zeit, ohne das etwas sinnvolles dabei herum gekommen ist. Heute bin auch jedoch dabei mal wieder beim Thema CDN und WordPress hängen geblieben, nachdem ich gesehen habe, dass das Plugin Jetpack für WordPress einem ermöglicht, Bilder per wordpress.com CDN ausliefern zu lassen. An sich eine gute Idee, jedoch machen Bilder auf meinem Blog den geringsten Teil aus. Daher habe ich mich mal umgeschaut, was man wie noch per CDN ausliefern kann und bin am aktuell verwendete Design sowie den Plugins hängen geblieben. Bevor man sich jedoch daran machen kann, braucht man zuerst einmal externen Speicherplatz.
Hier bietet sich Amazons S3 Cloud-Dienst an oder jeglicher anderer Speicherplatz. Hosteurope hat hier auch Cloud-Speicher inkl. FAQ im Angebot, wo nach gespeicherter- und übertragener-Datenmenge monatlich abgerechnet wird. Und das bei monatlicher Kündbarkeit. Für mich als Hosteurope-Kunde war dies die erste Anlaufstelle. Der Cloud-Speicher wird hier ebenfalls per S3 wie bei Amazon zur Verfügung gestellt. Da Cloud-Speicher per S3 anders verwendet wird als FTP-Speicher, nachfolgend ein paar Infos.
S3 basierter Cloud-Speicher
Zugegriffen wird auf den Cloud-Speicher mit einem S3-Kompatiblen Client. Hier gibt es z.B. den CloudBerry Explorer oder den S3 Browser, wobei mir persönlich ersterer mehr zusagt. Zum Verbinden wird das Cloud-Speicher-Zielsystem sowie ein Access Key und ein Secret Key benötigt, den man vom Cloud-Anbieter erhält. Nach dem verbinden kann man jedoch nicht sofort Dateien hoch laden, sondern muss erst ein Bucket erstellen. Der Name eines Buckets muss eindeutig sein, die der öffentliche Zugriff darauf anschliessend per
<BucketName.cloud-adresse-provider.tld> erfolgt. Anschließend können Dateien und Unterordner innerhalb vorhandener Buckets erstellt werden. Allerdings gibt es auf S3 Cloudspeicher keine Dateien, sondern nur Objekte. Diese Objectes werden wiederum automatisch in kleinere Chunks geteilt um die Verteilung zu beschleunigen. Der Einfachheitshalber kann man Objects aber mit Dateien vergleichen. Zu beachten ist, dass es bei S3-Cloud-Speicher auch ein Rechte-Management gibt. Für alle Dateien, welche per URL direkt erreichbar sein, muss daher der Lesezugriff für anonyme Benutzer gewährt werden. Dies geht i.d.R. Regel über die Einstellungen des S3-Clients.
Kurzübersicht CDN
Soweit zum Thema S3-Cloud-Speicher. Nun noch ein paar Worte zum CDN. Ein CDN besteht i.d.R Regel aus mehreren Servern die alleine zur Verteilung von statischen Inhalten verwendete werden. Je nach Kosten kann man bereits existierende CDNs verwenden, deren Server bereits häufig über den gesamten Erdball verteilt stehen.
CDN-Vorteile
- höhere Auslieferungsgeschwindigkeit gegenüber dem eigenen Webserver
- weniger Traffic auf dem eigenen System
CDN-Nachteile
- Zuverlässigkeit kostet i.d.R. Geld. Berechnung nach Verwendetem Speicherplatz sowie der übertragene Datenmenge. Hier kann als Richtschnur die Amazon Calculator dienen (links S3 Auswählen).
- Inhalt auf lokalem Server und CDN-Bucket müssen synchronisiert werden
Wordpress CDN-Umsetzung
Um das ganze nun in WordPress Testweise umzusetzen, bin eine URL-Umleitung mittels url-rewrite in die .htaccess eingebaut wodurch nur mein Design und die Plugins umgeleitet werden, jedoch ohne php-Dateien, da wie gesagt nur statische Inhalt per CDN ausgeliefert werden können.
RewriteEngine On RewriteCond $1 !.(php) RewriteRule ^wp-content/themes/monochrome/(.*)$ http://cdn.blog.cscholz.io.cs.hosteurope.de/wp-content/themes/monochrome/$1 [R=301,L] RewriteRule ^wp-content/plugins/(.*)$ http://cdn.blog.cscholz.io.cs.hosteurope.de/wp-content/plugins/$1 [R=301,L] </IfModule>
Soweit war der Test schon in Ordnung. Wer das ganze nun jedoch dauerhaft betreiben möchte, wird bei Änderungen am WordPress-Design bzw. den Plugins sicherlicht nicht alle Nase lang die Dateien auch parallel im Cloud-Speicher ändern wollen. Die Lösung hierzu heißt s3cmd. Das Tool ermöglich, Dateien und Ordner per shell mit S3-Cloudspeicher zu synchronisieren. Nach der Installation per
apt-get install s3cmd
muss s3cmd noch konfiguriert werden.
s3cmd --configure
Zur Verwendung des Hosteurope Speichers muss die Konfiguration nachträglich noch angepasst werden. Da ich mir bereits oben zum Testen Buckets erstelle habe, hier der Befehl zum
… auflisten der Buckets
s3cmd ls
… synchronisieren mir setzten der öffentlichen Leserechte
s3cmd sync -v --skip-existing -P -r -v /.../.../wp-content/themes/monochrome/ s3://cdn1.blog.cscholz.io/wp-content/themes/monochrome/
… nachträglichen Setzten der öffentlichen Leserechte
s3cmd sync -v --skip-existing -P -r -v /.../.../blog.cscholz.io/wp-content/themes/monochrome/ s3://cdn.blog.cscholz.io/wp-content/themes/monochrome/
anzeigen des verwendeten Speicherplatzes
s3cmd du -v -H s3://cdn2.blog.cscholz.io/