Alternativen zu Apache

15

Unser aktueller Stack ist Apache + Tomcat + MySQL und verwendet ProxyPassAJP, um Anforderungen von Apache an Tomcat auszulösen. Wir führen auch PHP für Wordpress auf denselben Sites aus und benötigen daher Arbeitsdateien .htaccess. Als Reaktion auf ein ärgerliches Problem (siehe diese Seite zum Stapelüberlauf) ziehen wir alternative Stapel in Betracht. Beachten Sie, dass wir Apache im Allgemeinen sehr mögen, aber dieses Problem ist ein Show-Stopper: Wenn wir es nicht beheben können, können wir Apache nicht verwenden.

Alternativen umfassen:

  • Tomcat allein
  • Glassfish (Java-App-Server, gegabelt von Tomcat)
  • Anlegesteg (Java Server)
  • Harz
  • LightTPD (leichter HTTP-Server)
  • Nginx (leichter HTTP-Server)

So wie ich es sehe, fallen Lösungen in zwei Lager: das reine Java-Lager wie Glassfish; oder das Split Camp wie unser aktueller Apache + Tomcat. Wir mögen die Idee einer reinen Java-Lösung, da weniger bewegliche Teile weniger Fehler bedeuten sollten. Aber unterstützt einer von ihnen PHP, .htaccessDateien usw.?

Theoretisch könnten wir die Aufteilung in die andere Richtung machen - ein einfaches Front-End, das Apache nur auf die Bits überträgt, die diese Funktionen benötigen -, aber in der Praxis wären das 80% der Anfragen.

Welche Optionen schlagen die Leute vor?

Marcus Downing
quelle
Würde es Ihnen etwas mehr ausmachen, Ihr "lästiges Show-Stopper-Problem" auszuarbeiten, oder ist es völlig irrelevant?
markieren
Folgen Sie dem Link zur StackOverflow-Seite, um weitere Informationen zu erhalten. Es ist ein Fehler, bei dem Clients die falsche Antwort erhalten - manchmal werden JS- oder CSS-Dateien anstelle von HTML-Dateien abgerufen oder es wird nur die falsche Seite angezeigt. Wir haben so ziemlich alles in Apache und Tomcat ausprobiert, was uns einfällt.
Marcus Downing

Antworten:

7

Ich vermute sehr, dass Ihr Problem mit AJP zusammenhängt.

Ich war vor ein paar Wochen in einem Kurs bei einem der Hauptentwickler von Tomcat (er führte ihn aus). Sein Rat war, AJP und Mod-JK usw. zu vermeiden und mich an reguläres Mod-Proxy-HTTP zu halten.

Gründe dafür:

  1. Es ist mit Abstand der ausgereifteste und stabilste Tomcat-Anschluss.
  2. Weder die AJP-Implementierung wurde konsequent weiterentwickelt. beide projekte haben ein wenig unter stop / start gelitten.
  3. In dieser Situation führt NBIO zu keinem realen Leistungsgewinn gegenüber Blocking-IO.

Mein Rat, versuchen Sie es mit regulären Mod-Proxy-HTTP mit Ihrem aktuellen Setup. Dies ist die geringste Änderung für Sie und führt Sie zu der am weitesten verbreiteten und stabilsten Tomcat-Bereitstellungsarchitektur.

/ Richy


quelle
Ich denke, ich könnte es versuchen. Haben Sie irgendwelche harten Zahlen über den Leistungsunterschied?
Marcus Downing
Wie kann ich regulären Mod-Proxy verwenden und trotzdem die richtigen Hostnamen für Tomcat erhalten? Ich bin mir ziemlich sicher, dass sie im Moment alle als Localhost empfangen werden.
Marcus Downing
2
ProxyPreserveHost On ist wahrscheinlich das, wonach Sie suchen. httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost
Stephen Veiss
5

Mein momentan bevorzugter Stack ist die Verwendung von Nginx als Ersatz für Apache. Wo immer nötig, füllt php-fpm den Bedarf an PHP aus. Ein solches Setup hat sich gut für die Bereitstellung von Apps wie Rails, Magento und SugarCRM bewährt.

Jauder Ho
quelle
4

Glassfish ist skalierbarer als Tomcat, da es Grizzly (NIO-basiert) verwendet. Sie haben aufgrund der Java-Anforderungen nur eine Variante von Tomcat, Jetty oder Glassfish zur Auswahl. PHP kann mit Quercus ausgeführt werden , es ist jedoch möglicherweise besser, es nur mit Nginx bereitzustellen.

Joshua
quelle
2

Es gibt PHP-Implementierungen auf Java. Die, die ich kenne (aber nicht verwendet habe), ist diese . Es gibt einen Blog-Beitrag darüber, wie man es auf GlassFish (einschließlich WordPress) installiert , aber ich denke, die Installation auf Tomcat ist dieselbe. In Bezug auf .htaccess haben Sie nicht genau geschrieben, was Sie dort haben, aber wenn es um das Umschreiben von URLs geht, gibt es den UrlRewriteFilter , der die gleiche Arbeit mit der gleichen Semantik ausführt .

David Rabinowitz
quelle
Die .htaccess-Dateien werden hauptsächlich von WordPress generiert. Sie enthalten daher einige einfache RewriteRules
Marcus Downing
Ich denke, das PHP wird sie nicht unterstützen, aber es sollte nicht schwierig sein, einen Prozess zu haben, der sie liest und die Definitionen an den Filter weitergibt.
David Rabinowitz