Alternativas ao Apache

15

Nossa pilha atual é o Apache + Tomcat + MySQL, usando o ProxyPassAJP para disparar solicitações do Apache para o Tomcat. Também executamos PHP para Wordpress nos mesmos sites e, portanto, precisamos de .htaccessarquivos de trabalho . Em resposta a um problema irritante (consulte esta página Estouro de pilha) , estamos considerando pilhas alternativas. Observe que geralmente gostamos do apache, mas esse problema é um obstáculo: se não podemos corrigi-lo, não podemos usar o Apache.

As alternativas incluem:

  • Tomcat sozinho
  • Glassfish (servidor de aplicativos Java, bifurcado do Tomcat)
  • Jetty (servidor Java)
  • Resina
  • LightTPD (servidor HTTP leve)
  • Nginx (servidor HTTP leve)

Do meu ponto de vista, as soluções se enquadram em dois campos: o campo puro de Java, como o Glassfish; ou o acampamento dividido, como nosso atual Apache + Tomcat. Gostamos da idéia de uma solução Java pura, pois menos partes móveis devem significar menos erros; mas algum deles suporta PHP, .htaccessarquivos, etc?

Em teoria, poderíamos fazer a divisão de outra maneira - ter um front end simples que faça proxy do Apache apenas naqueles bits que precisam desses recursos - mas, na prática, seriam 80% das solicitações.

Que opções as pessoas sugerem?

Marcus Downing
fonte
Você se importaria de elaborar um pouco mais o seu "problema irritante de parar a cena" ou é completamente irrelevante?
mark
Siga o link para a página StackOverflow para obter mais detalhes. É um erro no qual os clientes recebem a resposta errada - às vezes obtendo arquivos JS ou CSS em vez de arquivos HTML ou apenas a página errada. Tentamos praticamente tudo no Apache e Tomcat em que podemos pensar.
Marcus Downing

Respostas:

7

Suspeito fortemente que seu problema esteja relacionado ao AJP.

Eu estava em um curso com um dos principais desenvolvedores do Tomcat, há algumas semanas (ele o estava executando), seu conselho era evitar o AJP e o mod-JK etc.

Razões:

  1. É de longe o conector Tomcat mais maduro e estável.
  2. Nenhuma implementação do AJP foi desenvolvida de forma consistente; ambos os projetos sofreram um pouco de parada / partida.
  3. O NBIO não resulta em nenhum ganho de desempenho no mundo real sobre o bloqueio de E / S nesta situação.

Meu conselho, tente usar o HTTP mod-proxy regular com sua configuração atual. É a menor mudança para você e o levará à arquitetura de implantação do Tomcat mais amplamente usada e estável.

/ Richy


fonte
Suponho que poderia tentar. Você tem números concretos sobre a diferença de desempenho?
Marcus Downing
Como posso usar o proxy-mod regular e ainda obter os nomes de host corretos no Tomcat? Tenho certeza de que todos estão sendo recebidos como host local no momento.
Marcus Downing
2
ProxyPreserveHost On é provavelmente o que você está procurando. httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost
Stephen Veiss
5

Minha pilha preferida atual é usar o nginx como um substituto para o Apache. Sempre que necessário, o php-fpm preenche a necessidade de PHP. Essa configuração funcionou muito bem na implantação de aplicativos como Rails, Magento e SugarCRM.

Jauder Ho
fonte
4

O Glassfish será mais escalável que o Tomcat, porque ele usa o Grizzly (baseado em NIO). Você não tem muitas opções além de uma variação do Tomcat, Jetty ou Glassfish devido ao requisito do Java. O PHP pode ser executado usando o Quercus , mas pode ser melhor implementá-lo usando o Nginx.

Joshua
fonte
2

Existem implementações PHP em Java. A que eu conheço (mas não usei) é essa . Há uma postagem no blog sobre como instalá-lo no GlassFish (incluindo WordPress), mas acho que a instalação no tomcat é a mesma. Em relação ao .htaccess, você não escreveu exatamente o que possui, mas, se for para reescrever URL, existe o UrlRewriteFilter que faz o mesmo trabalho com a mesma semântica.

David Rabinowitz
fonte
Os arquivos .htaccess são principalmente os gerados por WordPress, para que eles contêm algumas RewriteRules simples
Marcus Downing
Eu acho que o PHP não os suporta, mas não deve ser difícil ter um processo que os leia e passe as definições para o filtro.
David Rabinowitz