My Universe Logo

My Universe Blog » Entries Tagged as Apache

Warum Apache immer noch der beste Webserver ist

Posted by Jesco Freund at Jan. 30, 2011 10:28 p.m.

Apache ist als Webserver mittlerweile eine Referenz. Man könnte auch sagen, Apache ist feature-complete. Natürlich hat Apache auch Konkurrenten: Eine ganze Weile lang sah es so aus, als könnte Lighttpd dem Platzhirsch ernsthaft auf den Pelz rücken, und zur Zeit gibt es gerade einen mächtigen Hype um Nginx. Doch was können die beiden eigentlich wirklich besser als Apache?

Zunächst einmal Lighttpd: Lighty läuft mit nur einem Prozess, braucht wenig Ressourcen (insbesondere Speicher) und erzielt trotzdem eine beachtliche Performance, insbesondere bei der Auslieferung von statischem Content. Um trotz Single Process Design mit Apache's Worker-MPM mithalten zu können, greift Lighty tief in die Trickkiste: Non-blocking Sockets in Kombination mit betriebssystemspezifischen Poll-Mechanismen (ePoll für Linux, kqueue für FreeBSD) sorgen für einen flotten Betrieb – aber eben nur auf den genannten zwei Plattformen. Auf anderen Plattformen muss Lighty auf das generische select bzw. poll zurückgreifen und verliert deutlich an Leistungsfähigkeit.

Unter Feature-Aspekten ist Lighty allerdings sehr interessant, der Funktionsumfang lehnt sich an Apache an (URL-Rewriting, Unterstützung sowohl für CGI als auch FastCGI, Aliase, SSL, virtuelle Hosts, etc). Leider scheint die Entwicklung an Lighty ins Stocken geraten zu sein. Selbst im Trunk finden teilweise monatelang keine Commits statt, bekannte Bugs werden (wenn überhaupt) in den viel zu seltenen Service-Releases gefixt. Etwas aktiver läuft es im Lighttpd-2.0 Projekt, aber ein Heraustreten aus dem 1.4er Zweig ist bei Lighty ja schon mal gescheitert (an 1.5 wurde jahrelang gebastelt, aber es gab nie ein Release).

Nun zum zweiten Apache-Konkurrenten, der gerne ernst genommen werden möchte: Nginx. Technisch gesehen ist Nginx ein Lighttpd-Klon, der allerdings mit mehreren Worker-Prozessen auf SMP-Systemen besser skaliert. Im Vergleich zu Apache und Lighttpd ist die Dokumentation zu Nginx eher dürftig, und so sieht es auch auf der Feature-Seite aus: FastCGI wird zwar unterstützt, die Applikationsprozesse startet Nginx aber nicht selbsttätig, sondern ist auf Hilfe von außen angewiesen. CGI wird gleich gar nicht unterstützt (der dreckige Hack über einen FastCGI-Wrapper zählt nicht). Insgesamt macht Nginx den Eindruck, sich nicht davon lösen zu können, primär als Unterbau für Rambler entwickelt worden zu sein.

Was bleibt unter'm Strich? Apache bietet den größten Funktionsumfang, ist gut dokumentiert und wird aktiv entwickelt. Die Performance ist gut, und den Ressourcenhunger kann man per geeigneter Konfiguration zumindest etwas eindämmen. Lighty hätte Potenzial, gerade für kleinere Sites – dazu müsste aber erst mal die Perspektiven des Projekts klar sein. Nginx ist für mich klar raus – nur schnell reicht eben nicht, wenn der Webserver sonst nicht viel auf die Reihe bekommt.

No comments | Defined tags for this entry: Apache, Lighttpd, Nginx

Python für Webanwendungen 4: Lieferservice

Posted by Jesco Freund at Oct. 29, 2010 9:56 p.m.

Seit dem vorherigen Teil hat es nun ein paar Tage gedauert - aber hier ist er nun, der versprochene letzte Part. Eine funktionierende Webanwendung ist nun vorhanden, aber noch läuft sie nur im Entwicklungsmodus, mit dem CherryPy-eigenen Webserver. Für eine Produktivumgebung ist definitiv ein gestandener Webserver vorzuziehen, der den statischen Content besser und schneller ausliefert, robust und praxiserprobt ist und sich über entsprechende Startmechanismen automatisch als Dienst starten lässt.

Mit WSGI-Anwendungen und FastCGI hatte ich bisher kein Glück – zu instabil lief dieses Konstrukt, wenn es überhaupt ans Laufen kam. Richtig schnell und robust hingegen laufen bei mir diverse WSGI-Anwendungen in Kombination mit dem Apache Webserver und mod_wsgi. Unter FreeBSD beispielsweise lassen sich beide Pakete bequem aus den Ports installieren, auch Debian bringt ein entsprechendes Paket mit.

continue reading Python für Webanwendungen 4: Lieferservice

1 comment | Defined tags for this entry: Apache, CherryPy, code, development, python

Kommentarfunktion repariert

Posted by Jesco Freund at Feb. 2, 2009 5:51 p.m.

Nachdem das Blog vor ca. einem halben Jahr hinter einen Reverse Proxy umgezogen war, gab es leider einige Einschränkungen in der Funktionalität. Besonders gravierend drückte sich das in der Kommentarfunktion aus, die nach dem Absenden des Kommentars nicht mehr auf die ursprüngliche Seite zurückleitete, sondern eine Umleitung zur internen IP-Adresse des Blog-Servers produzierte. Der Grund für dieses Verhalten liegt wohl darin, dass Serendipity an dieser Stelle nicht auf die in der Konfiguration hinterlegte URL zurückgreift, sondern den HTTP-Header auswertet.

Nachdem ich gestern mit dem neu aufgesetzten Server wieder vor dem alten Problem stand, habe ich mich noch mal intensiver in die Dokumentation von mod_proxy eingelesen und dabei eine Option entdeckt, mit der ich Serendipity (bzw dem verwendeten PHP) den Hostnamen aus dem ursprünglichen HTTP-Request vorgaukeln kann. In die Konfiguration eingebaut, getestet – et voilà, die Kommentarfunktion verhält sich wieder wie gewohnt. Der Vollständigkeit halber hier die für Serendipity korrekte Konfiguration des Proxy-VHost:

<VirtualHost 192.168.0.1:80>
    ServerName blog.my-universe.com
    ProxyRequests Off
    ProxyPass / 192.168.10.1:80/
    ProxyPassReverse / 192.168.10.1:80/
    ProxyPassReverseCookieDomain 192.168.10.1:80 blog.my-universe.com
    ProxyPassReverseCookieDomain 192.168.10.1 blog.my-universe.com
    ProxyPreserveHost On
    <Proxy *>
        Order Deny,Allow
        Allow from all
    </Proxy>
</VirtualHost>

Natürlich fehlen noch einige Dinge, wie etwa sinnvolle Logging-Einstellungen – ich habe mich hier nur auf die Proxy-relevanten Einstellungen beschränkt. Ach ja, beinahe hätte ich's vergessen (es gehört aber mit zum Thema „Kommentare“): Bei den Upgrade-Arbeiten am Wochenende habe ich Serendipity auch gleich auf Version 1.4.1 hochgezogen. Die Abo-Funktion für Kommentare konnte ich somit wie versprochen wieder aktivieren; allerdings ist ab sofort Double Opt-In fällig, damit niemand unerwünscht Mails von meinem Server bekommen kann.

1 comment | Defined tags for this entry: Apache, blog, proxy, s9y

Wiki-Umzug

Posted by Jesco Freund at Dec. 6, 2008 2:01 p.m.

Vor etwa zwei Wochen habe ich damit begonnen, das alte Wiki von DokuWiki nach MoinMoin zu migrieren. Im Hintergrund werkelt nun anstelle von Lighttpd ein Apache 2.2 (Worker) mit mod_wsgi. Ursprünglich hatte ich geplant, MoinMoin ebenfalls mit Lighttpd und FastCGI laufen zu lassen, was aber erneut in einer Orgie von defunct-Prozessen endete (nachdem ich mit Ruby schon ähnliche Erfahrungen gemacht habe, glaube ich mittlerweile, dass Lighty's FastCGI nur stabil mit PHP funktioniert und dass der Betrieb in einem FreeBSD-Jail das ganze noch heikler werden lässt…). Ich muss ehrlich zugeben, dass ich von der Performance positiv überrascht bin – die Ladezeiten sind deutlich kürzer als beim alten Wiki. Am Backend kann es nicht liegen; beide Wikis speichern ihre Daten in Textdateien. Entweder hat MoinMoin einen um Längen schnelleren Parser als DokuWiki, oder es liegt wirklich am Webserver.

Nachdem nun mein MoinMoin-Theme zumindest ansatzweise fertig ist (an den Stylesheets hapert's noch ein wenig, da wird mit Sicherheit noch einiges passieren), habe ich heute die DNS-Einträge umgestellt, so dass ab sofort das neue Wiki angesteuert wird.

No comments | Defined tags for this entry: Apache, DokuWiki, Lighttpd, MoinMoin, python, wiki

Munin Apache-Plugins unter FreeBSD

Posted by Jesco Freund at July 5, 2008 7:04 p.m.

Um unter FreeBSD einen Apache Webserver mittels Munin (sysutils/munin-node) zu überwachen, muss zusätzlich www/p5-libwww installiert werden – diese Abhängigkeiten löst der Munin-Port nicht mit auf, obwohl die Apache-Plugins mit installiert werden. Wer das vergisst, wird mit solch einem hübschen Log-Eintrag bestraft:

Can't locate object method "new" via package "LWP::UserAgent" at /usr/local/etc/munin/plugins/apache_processes line 134.
2008/07/05-18:45:05 Plugin "apache_processes" exited with status 512. ----

Den richtigen Hinweis gab mir der einzige brauchbare Google-Treffer – zum Glück ist Computersprech international und meine Italienisch-Kenntnisse nicht ganz so verschüttet wie befürchtet… ;-)

No comments | Defined tags for this entry: Apache, FreeBSD, Munin, server

SourceForge "light" im Eigenbau

Posted by Jesco Freund at Jan. 6, 2008 3:19 a.m.

Ein eigener kleiner Projektserver à la SourceForge.net lässt sich in abgespeckter Form ziemlich einfach realisieren – dank Subversion und Trac ist es kein Problem mehr, den Überblick über die eigenen Projekte zu bewahren. In diesem Beitrag beschreibe ich die Einrichtung eines Projektverwaltungs-Servers unter OpenBSD 4.2. Dabei werden die folgenden Vorgaben umgesetzt:

  • Jedes Projekt erhält ein eigenes Subversion-Repository
  • Jedes Projekt erhält eine eigene Trac-Instanz
  • Die Trac-Instanzen sind unter http://projektname.domain.tld erreichbar
  • Schreibender Zugriff auf das Subversion-Repository erfolgt nur über SSH mit Public Key Authentifizierung
  • Die Trac-Instanzen werden bestmöglichst voneinander abgeschottet

Direkter anonymer SVN-Zugriff ist mit dem vorgestellten Setup zwar nicht möglich, aber dafür entschädigt Trac mit einem recht ordentlichen Source Code Browser.

continue reading SourceForge "light" im Eigenbau

1 comment | Defined tags for this entry: Apache, OpenBSD, project hosting, svn, Trac

mod_rewrite für den OpenBSD-Indianer

Posted by Jesco Freund at Oct. 11, 2007 8:13 p.m.

Ein Apache ohne mod_rewrite kann mühselig werden, wenn man Applikationen wie Serendipity oder TYPO3 damit betreiben möchte. Die vorkonfektionierte Apache-Version, die im OpenBSD-Basissystem enthalten ist, bringt dieses nützliche Stück Software leider nicht mal in Form eines nachladbaren Moduls mit. Allerdings ist es kein Hexenwerk, das benötigte nachzurüsten.

continue reading mod_rewrite für den OpenBSD-Indianer

3 comments | Defined tags for this entry: Apache, OpenBSD, s9y, Typo3

Umgezogen

Posted by Jesco Freund at Sept. 30, 2007 5:41 p.m.

Heute habe ich das My Universe Weblog auf meinen neuen Server umgezogen. Mit dem Umzug stand ein ganzer Haufen an Migrationsarbeit an – bis auf MySQL 5 als Backend wurde so gut wie alles verändert. Während der alte Server mit einem gehärteten Gentoo Linux betrieben wurde (und wohl auch erst mal weiterhin wird), läuft auf dem neuen Server OpenBSD 4.1-Stable. Und nachdem das OpenBSD-Projekt einen wunderbar frisierten Apachen pflegt, habe ich auch kurzerhand von Lighttpd auf Apache umgestellt.

Natürlich habe ich mir alle Mühe gegeben, eventuelle Fehler selbst zu finden und das nicht meiner Leserschaft aufzubürden. Sollte sich in den nächsten Tagen doch mal der eine oder andere Bug zeigen, bitte ich um kurze Info, damit ich das Problem schnellstmöglich fixen kann.

No comments | Defined tags for this entry: Apache, blog, OpenBSD

Page 1 of 1