Alternatives à Apache

15

Notre pile actuelle est Apache + Tomcat + MySQL, utilisant ProxyPassAJP pour envoyer des requêtes d'Apache à Tomcat. Nous exécutons également PHP pour Wordpress sur les mêmes sites, et avons donc besoin de .htaccessfichiers de travail . En réponse à un problème gênant (voir cette page Stack Overflow) , nous envisageons des piles alternatives. Notez que nous aimons généralement assez apache, mais ce problème est un bouchon d'arrêt: si nous ne pouvons pas le résoudre, nous ne pouvons pas utiliser Apache.

Les alternatives incluent:

  • Tomcat seul
  • Glassfish (serveur d'application Java, issu de Tomcat)
  • Jetty (serveur Java)
  • Résine
  • LightTPD (serveur HTTP léger)
  • Nginx (serveur HTTP léger)

À mon avis, les solutions se répartissent en deux camps: le pur camp Java, comme Glassfish; ou le camp divisé comme notre Apache + Tomcat actuel. Nous aimons l'idée d'une solution Java pure, car moins de pièces mobiles devraient signifier moins de mal tourner; mais certains d'entre eux prennent-ils en charge PHP, les .htaccessfichiers, etc.?

En théorie, nous pourrions faire le fractionnement dans l'autre sens - avoir un front-end simple qui se substitue à Apache uniquement sur les bits qui ont besoin de ces fonctionnalités - mais en pratique, cela représenterait 80% des demandes.

Quelles options les gens suggèrent-ils?

Marcus Downing
la source
Pourriez-vous élaborer un peu plus sur votre "problème ennuyeux" ou est-il complètement hors de propos?
marquez le
Suivez le lien vers la page StackOverflow pour plus de détails. C'est un bug où les clients reçoivent la mauvaise réponse - obtenant parfois des fichiers JS ou CSS au lieu de HTML, ou tout simplement la mauvaise page. Nous avons à peu près tout essayé dans Apache et Tomcat.
Marcus Downing

Réponses:

7

Je soupçonne fortement que votre problème est lié à AJP.

J'étais en cours avec l'un des principaux développeurs de Tomcat il y a quelques semaines (il l'exécutait), son conseil était d'éviter AJP et mod-JK, etc., et de s'en tenir au HTTP mod-proxy standard.

Les raisons:

  1. C'est de loin le connecteur Tomcat le plus mature et le plus stable.
  2. Aucune implémentation AJP n'a été développée de manière cohérente; les deux projets ont subi un peu d'arrêt / démarrage.
  3. NBIO n'entraîne aucun gain de performances dans le monde réel par rapport au blocage-IO, dans cette situation.

Mon conseil, essayez d'utiliser HTTP mod-proxy standard avec votre configuration actuelle. C'est le moindre changement pour vous et il vous emmènera vers l'architecture de déploiement Tomcat la plus largement utilisée et la plus stable.

/ Richy


la source
Je suppose que je pourrais essayer. Avez-vous des chiffres précis sur la différence de performances?
Marcus Downing
Comment puis-je utiliser le mod-proxy normal et toujours obtenir les bons noms d'hôte via Tomcat? Je suis sûr qu'ils sont tous reçus en tant qu'hôte local pour le moment.
Marcus Downing
2
ProxyPreserveHost On est probablement ce que vous recherchez. httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost
Stephen Veiss
5

Ma pile préférée actuelle est d'utiliser nginx en remplacement d'Apache. Chaque fois que cela est nécessaire, php-fpm répond au besoin de PHP. Une telle configuration a bien fonctionné pour déployer des applications telles que Rails, Magento et SugarCRM.

Jauder Ho
la source
4

Glassfish sera plus évolutif que Tomcat car il utilise Grizzly (basé sur NIO). Vous n'avez pas beaucoup d'options autres qu'une variante de Tomcat, Jetty ou Glassfish en raison de l'exigence Java. PHP peut être exécuté en utilisant Quercus , mais il peut être préférable de simplement le déployer en utilisant Nginx.

Joshua
la source
2

Il existe des implémentations PHP sur Java, celle que je connais (mais que je n'ai pas utilisée) est celle-ci . Il y a un article de blog sur la façon de l'installer sur GlassFish (y compris WordPress), mais je suppose que l'installation sur tomcat est la même. Concernant le .htaccess, vous n'avez pas écrit exactement ce que vous avez là, mais si c'est pour la réécriture d'URL, il y a le UrlRewriteFilter qui fait le même travail avec la même sémantique.

David Rabinowitz
la source
Les fichiers .htaccess sont principalement ceux générés par WordPress, ils contiennent donc quelques règles de réécriture simples
Marcus Downing
Je suppose que PHP ne les supportera pas, mais il ne devrait pas être difficile d'avoir un processus qui les lit et passe les définitions au filtre.
David Rabinowitz