Seit heute rennt das Blog unter nginx. Der Grund ist einfach: lighttpd ist behindert zu konfigurieren, hat keine aktuellen/coolen Features und ist zudem noch langsamer als nginx. Ich hoffte seit knapp einem Jahr, dass sich in der Entwicklung was tut, aber außer einer Beta-Version mit integriertem lua-Support (um überhaupt ein if-else statt if-else-if konfigurieren zu können) und zahlreichen Won’t fixes für 1.4.x hat sich leider rein gar nichts getan.
Warum nginx? Ja, das weiß ich auch nicht, aber die Alternativen zu
non-Apache mit geringem Memory-Footprint, vielen Features und opensource sehen
schlecht aus. thttpd hat kein mod_proxy, Cherokee bringt gleich
ein Web-GUI zur Administration mit und LiteSpeed Web Server ist nicht
quell-offen. Also, was sind die Features von nginx?
Die Umstellung von lighttpd nach nginx ist nicht ganz ohne. Prinzipiell ist alles anders und nginx hat keine Unterstützung für CGI und rewrite-Regeln auf Query-Parametern. Außerdem spawnt nginx nicht automatisch einen …weiterlesen.
Just in case, anyone experiences this, too. Lighttpd can not handle
Expect: 100-continue properly. Pushing with git fails (sometimes) with
something like this:
# git push origin master
Counting objects: 11, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (11/11), 1.94 KiB, done.
Total 11 (delta 0), reused 0 (delta 0)
error: RPC failed; result=22, HTTP code = 417
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
It’s fixed in lighttpd 1.5 but is a Wont’t fix for version 1.4.29. As you may know, version 1.5 is still beta and not finished yet. Since four years, now. Great fix, though. A workaround can be found here:
server.reject-expect-100-with-417 = "disable"
So, nach gut zwei Wochen weiterem Probieren und Failen habe ich nun auch eine richtige Authentifizierung für non-Apache Webserver mittels Redmine. Ich nutze hierbei das neue Smart HTTP Transport Protokoll, das seit Git 1.6.6 unterstützt wird. Über SSL getunnelt ist es fast so sicher und genauso schnell wie die Übertragung über SSH oder Git-Daemon. Nur halt mittels plain HTTP, Webserver und etwas mod_proxy.
Weil schon die Installation abseits von Apache/Nginx eine Qual wegen nicht vorhandener Dokumentation war, will ich auch hier wieder dokumentieren, indem ich mein Setup als Beispiel angebe. Wie immer nutze ich lighttpd und eine Redmine-Installation Version 1.2.1, betrieben mit thin. Weil Hype cool ist, existieren Wrapper für git-http natürlich nur in nodejs und ruby. Argh. Naja, hab’ ich schon Ruby am Hals, nehm ich halt den letzteren. Mein Code baut auf maxlapshin/grack auf, das ist ein ungemergter Fork eines ungemergten Fork von schacon/grack x(
Mein angestrebtes URL-Layout sieht wie folgt aus:
/redmine <- meine Redmine-Installation, HTTPS-getunnelt
/git/myproject.git …weiterlesen.Heute mal eine Rarität. Während das Internetz zu 99% Anleitungen zu Apache + Redmine + Passenger und zu einem großen Anteil (1%) auch Redmine + nginx + Mongrel/Thin im Angebot hat, habe ich auf diese Bloatware Apache keinen Bock und finde die Benutzerdokumentation von nginx… erm… etwas dünn (faktisch null). Nun habe ich wohl merkwürdige Vorstellungen, aber ich find’ lighttpd wirklich hübsch.
Redmine kennt man ja derweil, das ist auch so eine Bloatware, die auf einer Bloatware läuft, deren Interpreter auch Bloatware Scheiße ist. Ach, und als häufig genutzte Datenbankbackends kommen noch leichtgewichtige, relationale Datenbanken wie MySQL und PostgreSQL hinzu. Sqlite3 geht, aber das zu erwähnen ist ja unwichtig. Und mit diesen Ansprüchen, Redmine mit nur 100-150 MB RAM statt 300 MB laufen zu lassen, bin ich relativ alleine. Die Anleitung bezieht sich übrigens nur auf Debian Squeeze. Außerdem nutze ich die Ruby Enterprise Edition, weil RAM--.
Wir brauchen sqlite, headers und ‘nen Ruby-Interpreter (64-Bit). Und alles als root!
# …weiterlesen.Ich hab’ ab heute ‘n SSL-Cert, das sogar validiert und keine extra Freigabe wegen unbekannter Identität erfordert! Web 2.0++, yeah!
Nur failed jetzt alles. Disqus, mein statisches HTML, lighttpd beim automatischen redirect. An sich alles kein Problem. Aber Disqus kann kein SSL, das wäre read-only für nicht registrierte und das wollen wir ja nicht. Ach mann. FAIL.
Immerhin geht posativ.org :)