Freitag, 6. April 2012

Danke, Strato Webhosting!

Ja danke, für fast eine ganze verlorene Woche, in der ich mich bemühte auf dem von Euch für teures Geld angebotenem Hostingpaket einen Webshop mit Downloadmöglichkeit für MP3s und Alben in Form von RAR Archiven zum Laufen zu bringen. Inzwischen habe ich einen Weg gefunden, aber nicht mit Eurer Hilfe, sondern entgegen aller Steine, die Ihr einem Webprogrammierer in den Weg legt, der einfach nur eine halbwegs professionelle Webpräsenz ins Netz stellen möchte.
Ehe ich jetzt das ganze Dilemma beschreibe, natürlich um Strato auch ein wenig zu ärgern, weise ich den geneigten Leser freundlichst darauf hin, daß die folgende Lektüre meines Erachtens für Menschen nicht geeignet ist, welche wenig oder keine Ahnung von der fortgeschrittenen Programmierung von Websites haben. Euch sei nur versprochen, daß der Webshop bald endlich online geht, da ich jetzt das Grundgerüst und die wichtigsten Teile funktionstüchtig habe.
Aber nun zurück zum harten Weg meinen geschätzten Kunden eine Möglichkeit zu bieten meine Werke zu erwerben und welche grandiose Rolle mein Webhoster Strato dabei spielte. Bisher war ich ja lange Jahre mit dem Angebot von Strato höchst zufrieden. Die Erreichbarkeit und Ladegeschwindigkeit meiner Seiten war stets einwandfrei und der Support einigermassen kompetent und schnell zu erreichen. Allerdings nutzte ich auch nur im Durchschnitt 5% des angebotenen Webspace und auch die anderen Features wurden recht sparsam genutzt. was sollte ich auch schon gross auf den Webspace packen? Zum Hochladen auch nur eines Bruchteils meiner Musik reichte der Platz eh nicht und meine Websites, die allesamt auf meinem selbstprogrammierten und äusserst speichersparsamen Content Management System laufen, brauchen eben nunmal nur wenig Speicherplatz. Zudem versuchte ich nie besondere Kniffe der fortgeschrittenen Webprogrammierung. Nun passierte erst kürzlich folgendes: Anlässlich eines Telefongesprächs mit der Strato Servicehotline, in dem ich für einen guten Freund die Aktualisierungsmöglichkeiten seines mitlerweile recht antiken Hostingpakets (von 1998) klärte, wurde mir offenbart, daß auch mein bisheriges Hostingpaket inzwischen durch eines mit weitaus grösserem Leistungsumfang zum gleichen Preis ersetzt wurde und ich auf dieses umsteigen könnte. Die grösste Verlockung hierbei war, daß ich statt bisher 5 GB Speicherplatz ganze 10 GB zur Verfügung hätte. Nun rückte mein Traum, meine ganze Musik selber auf meinem eigenen Webspace zu haben, nicht nur in greifbare Nähe -> es war endlich ohne Kompromisse möglich.
Also fing ich an die RAR Archive mit meinen bisherigen Alben (pro Stück zwischen 70 und 100 MB) hochzuladen und gleichzeitig zu überlegen, wie ich den Shop von der technischen Seite her aufbaue. Ganz klar war: Ich gebe keine direkten Links auf die RAR- bzw. MP3-Dateien raus. Schliesslich will ich ja ein bischen Geld verdienen und würde ich direkte Links rausgeben, würde sich mindestens ein Arsch finden, der diese fröhlich in der Gegend verteilt, worauf sich diese dann recht schnell auf vielen dubiosen russischen FREE MP3 Seiten wiederfinden. Sowas wäre dem Gechäft dann doch sehr abträglich ;).
Also müsste ich eine Möglichkeit finden den Kunden an die Downloads rankommen zu lassen, ohne ihm die direkten links zu geben. Und das erste, was einem halbwegs erfahrenen PHP Programmierer einfällt, ist natürlich passende HTTP-Header zu senden und die jeweilige Datei dann in einen Puffer einzulesen und an den Kunden zu senden. Hierfür gibt es mehrere Möglichkeiten, die aber alle erfordern, daß das sendende PHP Skript solange läuft, bis die datei beim Kunden angekommen ist. Und HIER liegt das Problem: Ich musste nämlich erfahren, daß mein gloreicher Hoster Strato eine maximale Skriptlaufzeit von 2 Minuten eingestellt hat und diese sich von mir selbstverständlich nicht ändern lässt. Das heisst: der Kunde muss die Datei innerhalb von 2 Minuten runterladen, sonst bricht der Download gnadenlos ab. Das mag bei einem normalen MP3 und einer guten unasgelasteten Internetverbindung überhaupt kein Problem sein, aber wenn es sich z.B. um eine 95 MB RAR Datei handelt, beträgt die Downloadzeit bei meiner DSL 3000 Leitung mehr als 4 Minuten. Das führt dazu, daß der Download noch vor der Mitte abgebrochen wird. Aber selbst bei einer normalen MP3 Datei gibt es Gründe, warum der Download nicht klappt. Nicht alle haben eine schnelle Internetverbindung und u.U. ist die Verbindung noch durch andere Sachen belastet. Wir wollen mal gar nicht davon reden, daß jemand u.U. parallel mehrere Downloads durchführt. Gut: Das funktionierte schnomal gar nicht.
Also habe ich ein wenig recherchiert, und dabei herausgefunden, daß es ein Apache Servermodule namens mod_xsendfile gibt, und das aus verschiedensten Gründen, z.B. CPU Auslastung, sogar der vorher angedachten Lösung vorzuziehen wäre. Also testete ich das ganze Mal... ohne Erfolg... Ein guter Facebook Freund fragte mich, als er meine Frustration anlässlich eines kleinen Chats merkte, ob ich mir sicher wäre, ob mein Hoster überhaupt dieses Apache Modul installiert und aktiviert hätte... Da ein Aufruf der in PHP vorhandenen Funktion zur Ermittlung der aktiven Apache Module lustigerweise fehl schlug, rief ich also wieder einmal die Strato Servicehotline an, um zu erfahren, daß das Modul "aus Sicherheitsgründen" nicht angeboten wurde. Also erneut eine Sackgasse.
Nun finden die ersten Forenkollegen, Facebook Freunde und sonstige Leutchen an, mir zu empfehlen doch mal über einen Wechsel des Hosters nachzudenken. Nur leider wurde durch den Paketwechsel die Vertragslaufzeit automatisch um 12 Monate verlängert. Ich muss also wohl oder übel noch 12 Monate mit diesem, entschuldigt, Scheisshostingpaket leben. Und noch eines bei anderem Hoster parallel laufen zu lassen, dafür fehlen mir wahrlich die finanziellen Mittel.
Nachdem nun die beiden gängigen Wege wie Profis sowas normalerweise realisieren absolut 100% unmöglich waren, ging das Rätseln los, wie man das ganze über Tricks & Kniffe löst. Ein Wot welches hierbei immer wieder auftauchte, war das Wort "Token". Hier gab es nun verschiedene Ansätze, welche alle, mehr oder weniger umständlich, einen Download eines Kunden mit einem Token, also einer unmöglich zu erratenden Zeichenkette, verknüpften, welche verifizierbar ist, und nach einer bestimmten Zeit verfällt, also nicht mehr nutzbar ist. Ich dachte lange und intensiv nach und kam zu einer Lösung mit Hilfe der RewriteEngine des Apache Servers, also mod_rewrite. Zum grossen Glück war mein liebster Hoster Strato ja vor gar nicht allzu langer Zeit so "sozial" dieses Modul für uns Zahlsklaven zu aktivieren. Also versprach dieser Ansatz Erfolg. Ich wusste allerdings noch nicht, daß noch einige Besonderheiten des Hostings bei Strato einer schnellen Lösung im Wege standen.
Der erste Ansatz, welcher dann übrigens auch am Ende der machbare war, sah folgendermassen aus: Der Kunde klickt auf den Downloadlink, welcher ein PHP Skript namens download.php mit der Artikel ID als Parameter aufruft. Jenes Skript prüft ob der Kunde überhaupt eingeloggt ist , berechnet ein Token aus der Artikel ID, den Kundendaten und einigen geheimen Zutaten. Das Token wird mit Kunden ID und Artikel ID in eine Tabelle der Datenbank eingetragen. Zusätzlich wird eine Datei mit dem Token als Namen in ein Tokenverzeichnis geschrieben. Danach wird dann der ein Downloadlink mit dem Token als URL Parameter aufgerufen. jetzt kommt der Trick: Im Downloadverzeichnis liegt eine .htaccess Datei, welche auf magische Weise prüft, ob die Tokendatei existiert und ansonsten auf eine Fehlermeldung umleitet. Alle 24 Stunden läuft ein Cronjob durch die Datenbank und löscht alle Tokeneinträge und Tokendateien und damit sind die Downloadlinks spätestens dann ungültig.
Als ich diese Idee einigen Freunden vorstellte, meinten die, das wäre doch viel zu kompliziert und das könne man einfacher lösen. Natürlich kam wieder die einfachste Lösung, nämlich ein Hosterwechsel als erstes ins Gespräch, aber wie erwähnt ist das für mich derzeit keine Option. Die erste Idee, welche sich sehr gut anhörte, war die RewriteEngine zu nutzen und RewriteMap zu verwenden. Allerdings stellte sich das sehr schnell als Sackgasse heraus, denn auf Directorybasis in der .htaccess Datei in einem Verzeichnis ist RewriteMap nicht erlaubt. Ich hätte das nur nutzen können, wenn ich Zugriff auf die httpd.conf Datei des Servers gehabt hätte. Das habe ich aber mit meinem Hostingpaket bei Strato eben nicht. Also eine erneute Sackgasse...
Als nächstes wurde mir empfohlen, doch sogenannte symbolische Links zu nutzen, welche dann nach einer Zeit ebenso verfallen, wie meine angedachten Tokens. Hier stand mir aber ein Abenteuer der besonderen Art bevor: Also ich schrieb den Code, der diese symbolischen Links anlegt und stellte beim Testen fest, daß diese später nicht mehr zu löschen waren. Ob ich es über FTP versuchte oder von einem PHP Skript aus per unlink: Das Ergebnis war, daß ich dazu nicht berechtigt sei, weil ich nicht der Eigentümer der Symbolic links wäre. Was zum Geier...??? Ich habe die Dinger per PHP Skript angelegt. Warum sollte das selbe Skript nicht auch imstande sein die Dinger zu löschen? Per FTP hätte ich das ja noch verstehen können, denn der FTP User ist eben nicht der PHP User -> klar. Per SSH Konsole war es mir problemlos möglich die Symbolic Links zu löschen. Ich habe dann ein wenig recherchiert, und dabei herausgefunden, daß wenn der Server im Safemode läuft, angelegte Symbolic Links automatisch Eigentum des Nutzers root werden. Und der ist nunmal Strato und nicht ich. Daß der Server im Safemode läuft ist, wie ich von Freunden erfahren musste, pure Willkür von Strato Webhosting, denn andere Hoster lassen die Server nicht im Safemode laufen, um die Kunden nicht unnötig einzuschränken.
Um es auf den Punkt zu bringen: Strato Webhosting erlaubt sich mit uns Kunden unglaubliche Einschränkungen, die eine professionelle Nutzung der Hostingpakete faktisch unmöglich machen. Was will man denn mit 10 GB Webspace anfangen, wenn man keine vernünftigen Downloads von grösseren Dateien hinbekommt? Wozu ist grosser Webspace gut? Natürlich um darauf daten anzubieten und zwar zum Download. Wir leben im Kapitalismus, also dürfte es ziemlich klar sein, daß Mensch diese Daten nicht per öffentlich sichtbarem Direktlink anbietet. Ich denke, all dieses ist den Leutchen bei Strato vollkommen klar. Und ich verstehe jetzt auch die Verlängerung der Vertragslaufzeit auf 12 Monate: Jetzt habe ich diesen Scheisswebspace für ein Jahr an der Backe und hätte ich mich nicht wie ein tollwütiges Tier in der Lösung des Problems verbissen, hätte ich wohl nur die wahl gehabt, Google damit zu ärgern, daß ich den Webspace mit tausenden nutzloser Werbespamseiten vollpacke, wie das andere, sog. Affiliate Webbusinesses machen. Derzeit sehe ich den einzigen Nutzender Strato Hostingpakete in exakt diesem Zweck.
Aber Ende gut, alles gut: Ich habe meine eigene ursprüngliche Idee im Bezug auf Tokens nun umgesetzt. Es kostete mich einiges an Recherche und Grübelei, aber meine Lösung funktioniert ERSTKLASSIG! Womit einmal mehr bewiesen wäre: Wo ein Wille ist, da ist ein Weg! Und ich grinse jetzt natürlich recht heftig über die "Experten" im Bereich Webprogrammierung, die mir angesichts meiner Hostingsituation mitteilten, daß ich jegliche Lösung vergessen könnte und nur ein Hosterwechsel helfen würde. Ihr seid mir Experten... ;)
Aber nichtsdestotrotz kann ich das Ende der 12 Monate kaum erwarten. Selbstverständlich werde ich diesen tollen Webhoster so schnell wie nur irgend möglich verlassen, auch angesichts der Tatsache, daß ich bei anderen Hostern, insbesondere in UK und USA weitaus grössere Hostingpakete für unter einem Viertel des Preises bekomme, den ich für den momentanen Schrott zahle.
Abschliessend möchte ich ankündigen: Ja der Webshop ist bald fertig! Er wird nicht auf alionsonny.de eingerichtet, sondern auf der Seite meines Weblabels alionmind records. Das hat folgenden Grund: Ich habe ja nun meine künstlerische Persönlichkeit aufgeteilt und es wäre bescheuert für jedes einzelne Musikprojekt auf dessen Website einen eigenen Shop einzurichten. Da alionmind.com als Nukleus zwischen den Projekten angedacht ist und derzeit noch nicht so recht einen grösseren Zweck erfüllt, ist es nur logisch, daß der Webshop für alle Musikprojekte auf alionmind.com online geht. Es wird also auf jeder Projektseite (z.B. alionsonny.de) im Menü wohl einen "Shop"-Link geben, auch werden Kauflinks neben Songs und Alben stehen. Jene werden aber zum alionmind records Shop führen. Wieviel Zeit ich nun noch dafür brauche ist absolut ungewiss. Schliesslich wartet Ihr alle ständig auf neue Musik, AlionLive Madeira ist auch noch nicht fertig und auch ansonsten wartet noch ordentlich Arbeit. Also: Gehen wir es an!

2 Kommentare:

  1. Super, ich hab gerade mit dem selben problem zu kämpfen und nicht mal eine antwort vom strato support bekommen !
    ich wäre dir sehr dankbar wenn du dich mal bei mir melden könntest: support@hqsounds.de

    grüße
    marco

    AntwortenLöschen
  2. Deshalb geht man doch auch lieber zu einem gescheiten Anbieter (und nicht zu Strato) :-) Ich vertraue eher einem kleineren Provider mit dem ich TOP zufrieden bin!

    AntwortenLöschen