PHP mit einem Apache oder einem nginx zu nutzen ist inzwischen kein Hexenwerk mehr. Überall im Netz findet man haufenweise Konfigurationsbeispiele, die mehr oder minder formal beschreiben, warum man diesen oder jenen Voodoo treiben muss. Was aber scheinbar niemand wirklich erklärt, ist ein kleines, aber essentielles Detail, was einem einiges an Resourcen spart, wenn man über mehrere Container hinweg seine Services isolieren möchte. (more…)
17.04.2016
08.07.2013
Fighting the BEAST
Nachdem in letzter Zeit mehrere Probleme mit SSL und TLS bekannt geworden sind und ich mich bereits mehrfach an die Konfiguration eines Workarounds gesetzt habe, gelang gestern der Durchbruch, das BEAST zu bezwingen. (more…)
09.11.2012
Kaputte Krypto beim Indianer
Eigentlich wollte ich einzig mal das SSL-Deployment auf meinem Server etwas aufräumen und in diesem Zuge auch den Blog mal vernünftig auf SSL ziehen, aber aus der einfachen Aufgabe, 19 Zertifikate auf die passenden Subdomains zu heften wurde dann doch eine etwas umfangreicher Aufgabe. Nicht etwa wegen der Vielzahl an Subdomains (jede Subdomain musste für sowohl IPv4 als auch IPv6 konfiguriert werden), sondern wegen einem kleinen nervigen Bug in der kaputten Krypto. Ursache war dabei aber nicht etwa, dass er nicht verschlüsselt hätte, oder das falsche Zertifikat gezeigt hätte – nunja, damit rechnet man ja noch. Der Fehler war viel subtiler: Beim Aufruf von sub.domain.tld lieferte der Server das richtige Zertifikat, aber antwortete mit der Website für domain.tld. Also: Happy debugging! (more…)
10.04.2011
Dropbox und Verzeichnis-Listings
Manche Leute nutzen ja ihre Dropbox ja als Fileserver. Was in dem Zusammenhang aber etwas störend ist, sind die Fehlenden Directory-Indizes. Aber da lässt sich, auch ohne einen lauffähigen Apache, schnell Abhilfe schaffen. (more…)
25.01.2011
SVN und seine Eimer-Brigaden
Die wohl mysteriöseste Fehlermeldung, die mir beim Apache bisher untergekommen ist (abgesehen von nichtssagenden SegFault-Meldungen, wenn plötzlicher Kindstot auftritt, liefert das SVN-Modul, in Verbindung mit WebDAV. Glaubt ihr nicht? (more…)
16.01.2011
Resourcenschonendes Upload-Tracking
Wenn man auf einer Web-Oberfläche Dateien hochladen möchte, so gibt es hierfür im wesentlichen zwei sehr verbreitete Möglichkeiten: Während die erste Version gemäß dem HTTP-Standard und dem application/x-www-form-urlencoded-Encoding die Datenüberträgt, was jeder heutige Browser unterstützt, so findet man an verschiedensten Stellen sogenannte Flash-Uploader, die zwar im Wesentlichen das Gleiche tun, jedoch versuchen verschiedene Funktionen nachzurüsten, die in vielen Browsern fehlen. Eine dieser Funktionen ist das Anzeigen des Upload-Fortschritts oder die Anzeige der Upload-Geschwindigkeit.
Im Internet findet man für diese Funktion auch verschiedene Ansätze, die jedoch meist darauf hinauslaufen, auf dem Server ein zusätzliches Perl-Script zu installieren, was dann versucht aus dem Temp-Verzeichnis von PHP die Daten zusammenzukratzen. Dies ist nicht nur ineffizient, da für jede Fortschrittsabfrage eine vollständige Perl-Instanz gestartet werden muss, sondern oft auch reichlich wacklig, wenn es um neuere Versionen von Scripten geht.
Eine wesentlich bessere Lösung wäre hier, wenn der Server sich um das Tracken von Uploads kümmern könnte und man somit keinen zusätzlichen Speicher für derlei Fortschrittsabfragen verwenden muss. Zusätzlich kann durch den Wegfall solcher externen Programme deren Ladezeit eingespart werden, wenn der Server dies bereits selbst verwaltet.
Und genau hier setzt mod_upload_progress an, der als Apache-Modul alle laufenden Upload-Vorgänge verfolgt und deren Status abfragbar macht. Diese lässt sich mit wenigen Schritten installieren und zusätzlich an die eigenen Wünsche anpassen. Aber der Reihe nach. (more…)
03.12.2010
mod_fcgid und Anfragenbegrenzungen
Eigentlich wollt ich ja nur, dass ein paar Urlaubsbilder auf dem Server einsortiert werden, aber daraus wurde nicht gleich was. Denn statt fein einsortierter Urlaubsbilder erhielt ich nur eine plumpe Meldung von ispCP, die mir einen internen Fehler mit HTTP-Statuscode 500 ansagte. Also ganz ohne weitere Details versteht sich, denn die wären Luxus. (more…)
05.07.2010
HTTP-Authentifizierung mit Mantis ertragbar machen
Mantis ist an sich ein sehr guter und gerade für Nicht-Informatiker gut geeigneter Bugtracker, der mit ein wenig Kreativität auch gut als Aufgabenverwaltung verwendet werden kann. Selber setze ich Mantis bereits geraume Zeit an verschiedenen Stellen ein; und so ist es nicht verwunderlich, dass nun auch für ein weiteres Projekt Mantis aufzusetzen war.
Für dieses Projekt gab es nun aber eine kleine Hürde, die bei Mantis bereits seit Jahren existiert: Die Authentifizierung gegen externe Systeme 😉 Mantis besitzt zwar von Haus aus die Möglichkeit, die Nutzerkonten aus einem LDAP-Server zu beziehen, erledigt dabei aber die Authentifizierung dennoch selber. Möchte man hingegen, dass Mantis stillschweigend den Nutzer frisst, der z.B. über den Apache oder ein Single-SignOn-System wie Shibbolleth angemeldet wurde, beißt man leider seit Jahren auf Granit. Ohne bei Mantis selber Hand anzulegen, kommt man leider nicht weit. (more…)
16.05.2010
Katastrophen-Recovery mit ispCP
Heute gibt es von meiner Seite einmal einen der Beiträge, die man am liebsten nie brauchen wöllte: Wie stelle ich aus minimalen Daten ein ispCP wieder her, falls es am alten Sytem zu Problemen kam. Und auch wenn ich schreibe, Katastrophen-Recovery: Alles, was über einen gewissen Grad an Problemen hinaus geht, wird auch mit dieser Anleitung nicht zu beheben gehen. Von daher eine kurze Checkliste:
- Habt ihr ein Backup ALLER Server-Dateien? Wenn ja, reicht im Wesentlichen die Migrationsanleitung von der ispCP-Homepage. Dennoch empfehle ich einen Blick weiter unten zu Hinweisen während man dies erledigt.
- Habt ihr ein Backup aller Userdaten UND folgenden Dinge:
- die Datenbank ispcp des alten Systems (Binärkopie ausreichend!)
- die Datenbank mysql des alten Systems (Binärkopie ausreichend!)
- die ispcp.conf des alten Systems
- /var/www/ispcp/gui/include/ispcp-db-keys.php
- /var/www/ispcp/engine/ispcp-db-keys.pl
Sollten von den letzten beiden Dateien nur eine verfügbar sein, so kann die jeweils andere aus dieser Datei erzeugt werden. Fehlen beide, kann nur versucht werden, mit Hilfe des Howtos zum Setzen des MySQL-Passwortes für ispCP diese Dateien zu erzeugen. Dies muss nach dem Wiederherstellen der MySQL-Nutzer-Datenbank und vor Aufruf des Setup-Skripts geschehen. DATABASE_USER und DATABASE_PASSWORD müssen für diesen Fall nach Aufruf des Passwort-Skriptes aus der ispcp.conf in die ispcp.old.conf übertragen werden, da ispCP sonst mit den falschen Schlüsseln ein Login probiert.
- Habt ihr vom alten System genug Daten, um die im vorigen Punkt nötigen Daten der zweiten Subliste zusammenzukratzen. Wenn nicht, gilt auch hier: Beißt in saure Äpfel, der Todesgott eurer Installation mag die.
Okay: Eines vorweg: Wenn ihr mindestens einen Punkt der obigen Liste bejahen konntet, bestehen berechtigte Hoffnungen, dass ihr um eine vollständige Neuinstallation herumkommt. Eine Garantie gibt es hierbei aber nicht, da die nächsten Schritte mit extrem vielen Möglichkeiten für Fehler verbunden sind und ich es selber beim Erarbeiten dieser Liste geschafft habe, so nahezu JEDE Fehlermeldung, die ispCP bietet auch einmal zu erhalten. Wer also nicht allzu frusttolerant ist, sollte es vor dem Fortfahren mit geeigneten Antidepressiva probieren. Ihr wurdet gewarnt. (more…)
22.02.2010
ispCP-Login über IPv6
Da mein Server über IPv6 läuft und die Haupt-Server-Adresse dementsprechend auch via IPv6 erreichbar ist, gab es bisher noch ein kleines Problem, wenn versucht wurde, auf die Konfigurationsoberfläche über IPv6 zuzugreifen. Um diesen Fehler zu beheben, gibt es jedoch eine ganz einfache Lösung. (more…)