Diferença entre o Apache HTTP Server e o Apache Tomcat? [fechadas]
637
Qual é a diferença em termos de funcionalidade entre o Apache HTTP Server e o Apache Tomcat?
Eu sei que o Tomcat está escrito em Java e o servidor HTTP está em C, mas, além disso, eu realmente não sei como eles se distinguem. Eles têm funcionalidades diferentes?
Fiquei me perguntando exatamente o que o OP estava perguntando e não vejo por que ele foi fechado. Felizmente, existem respostas.
Florian F
4
O servidor da web Apache e o Apache Tomcat são duas ferramentas diferentes ajustadas para propósitos diferentes. Se não pudermos mais distinguir seus casos de uso por fatos e conhecimentos, chegamos a um estado lastimável. Esse esforço para fechar perguntas "argumentativas" foi superado. Talvez os moderadores precisem ser mais informados e menos opinativos. Como @FlorianF diz, pelo menos existem respostas agora.
NeilG 8/11
2
Dado o número de votos positivos - isso não deveria ter sido fechado - mas deveria estar bloqueado -, pois na verdade é uma pergunta muito boa com respostas úteis.
simbro
O closedaviso nesta pergunta diz que exige que o Answers tenha um conteúdo objetivo, mas espera que, em vez disso, produza conteúdo subjetivo da resposta - a maioria das respostas parece conter conteúdo objetivo (principalmente as respostas mais votadas) em vez de subjetivas -, portanto, esta pergunta deve ser NÃO FECHADO. Os medos da subjetividade nunca realmente aconteceram, e eu não concordo que a Questão tenha arriscado ser subjetiva em primeiro lugar.
Cellepo # 6/19
Respostas:
475
O Apache Tomcat é usado para implementar seus Java Servlets e JSPs. Portanto, em seu projeto Java, você pode criar seu arquivo WAR (abreviação de Web ARchive) e simplesmente soltá-lo no diretório deploy no Tomcat.
Então, basicamente, o Apache é um servidor HTTP, servindo HTTP. O Tomcat é um Servlet e JSP Server que serve tecnologias Java.
O Tomcat inclui Catalina, que é um contêiner de servlet. Um servlet, no final, é uma classe Java. Os arquivos JSP (que são semelhantes ao PHP e os arquivos ASP mais antigos) são gerados no código Java (HttpServlet), que é compilado em arquivos .class pelo servidor e executado pela máquina virtual Java.
O que você pretende "Apache está servindo [...] HTTP"? O Tomcat também não serve HTTP (também conhecido como hipertexto)? Por que o Tomcat não pode simplesmente ser um módulo Apache "mod_java"? Você pode explicar?
Peterino 19/01/12
30
O Tomcat é um contêiner de servlet. Um servlet, no final, é uma classe Java. Os arquivos JSP (que são semelhantes aos arquivos PHP ou ASP) são gerados no código Java (HttpServlet), que é compilado em arquivos .class pelo servidor e executado pela máquina virtual Java. - Além disso, este fórum aqui explica muito bem a diferença entre o Apache HTTPD e o Tomcat: coderanch.com/t/85182/Tomcat/…
Peterino
17
O Tomcat realmente traz consigo um servidor web capaz. O Tomcat é um contêiner Servlet / JSP e também oferece um servidor da web. O servidor web do Tomcat é bastante bom, capaz de lidar com a maioria das necessidades de sites pequenos e médios. Com suporte para Java NIO e memória de 64 bits, até mesmo alguns sites em larga escala podem ser atendidos pelo módulo Catalina do Tomcat. Por várias razões, algumas pessoas optam por ignorar a Catalina e, em vez disso, usam os recursos de Servlet do Tomcat por trás do httpdproduto de servidor da web Apache .
Basil Bourque
21
Correção no meu comentário: O Coiote é o módulo no Tomcat responsável pela veiculação na web. Catalina é o módulo que faz Servlets. Jasper é o módulo que lida com JSPs.
Basil Bourque
17
@KorayTugay Sim. Tomcat = ( Web Server + Servlet container + JSP environment ). O servidor da Web está LIGADO por padrão quando você executa o startup.shscript do Tomcat , escutando na porta 8080 as conexões de entrada (chamadas HTTP). O Tomcat é Java puro, com sua própria implementação de servidor web (Coyote). O Apache HTTP Server (AHS), por outro lado, possui uma implementação completamente separada de um servidor da Web, usando o código C / C ++ nativo. O AHS é muito flexível e poderoso, mas geralmente é um exagero. O servidor web do Tomcat funciona muito bem. Use o AHS somente se for realmente necessário.
Basil Bourque
118
Além das excelentes respostas acima, acho que se deve dizer que o Tomcat possui seu próprio servidor HTTP incorporado e também é totalmente funcional para servir conteúdo estático. Dependendo da configuração da sua máquina virtual java, ela pode superar o desempenho de conectores tradicionais no apache, como mod_proxy e mod_jk.
Dito isso, um servidor Tomcat totalmente otimizado deve servir arquivos estáticos rapidamente e, se você tiver servlets Java, JSPs e arquivos ColdFusion, além do conteúdo estático, poderá descobrir que o tomcat faz um excelente trabalho por si só.
Verdade. E muitas pessoas ainda usam uma configuração extra do Apache além do Tomcat .. que é desnecessário na maioria dos casos.
precisa saber é o seguinte
6
A parte mais poderosa do http apache que poucos outros servidores suportam é a capacidade de redirecionar e reescrever a solicitação antes que o aplicativo a veja, principalmente através da mod_rewriteinjeção de mecanismo e ambiente condicional. mod_proxyfornece balanceamento de carga rudimentar (e combinado com mod_jk fornece sessão / estado compartilhado rudimentar / compartilhado entre instâncias do tomcat com balanceamento de carga).
cowbert
81
O Apache é um servidor http de uso geral, que suporta várias opções avançadas que o Tomcat não.
Embora o Tomcat possa ser usado como um servidor http de uso geral, você também pode configurar o Apache e o Tomcat para trabalharem em conjunto com o Apache servindo conteúdo estático e encaminhando as solicitações de conteúdo dinâmico ao Tomcat.
Toda a web não é estática no final? Pelo que entendi, o Tomcat gera "um" conteúdo estático (dinamicamente) e, em seguida, o Apache atende a isso. Portanto, o Tomcat nunca veiculará conteúdo dinâmico nem nada, apenas o gerará quando necessário.
precisa
11
@KorayTugay Você está confundindo seus termos. "Gere quando necessário" é exatamente o que "dinâmico" significa e é exatamente o oposto de "estático". O principal objetivo do servidor HTTP Apache é fornecer conteúdo estático, enquanto o principal objetivo da tecnologia Servlet é gerar conteúdo on-the-fly (conteúdo dinâmico).
Basil Bourque
1
@BasilBourque Fiquei confuso com o Tomcat realmente exibindo conteúdo aqui. Ele irá gerar apenas o conteúdo, não será exibido quando usado em conjunto com o Apache Http Server. Provavelmente você está certo e estou confuso, mas para mim ainda diria que, quando usados juntos, o Apache serve, o Tomcat gera conteúdo estático quando necessário. Se o Apache não for usado, o Coyote no Tomcat fará a veiculação, enquanto Catalina e Jesper estão gerando o conteúdo dinâmico.
precisa saber é o seguinte
3
@KorayTugay Sim, seu último comentário está correto. Se você estiver usando o Apache HTTP Server + Tomcat, os navegadores da Web apenas "verão" a AWS sem nenhuma pista de que o Tomcat esteja trabalhando atrás das cortinas. A AWS é intermediária entre os clientes do navegador da Web e o Tomcat. Se você estiver usando o Tomcat sozinho, o módulo Coyote no Tomcat substituirá a AWS para atender a solicitações de clientes de navegadores da web. Eu recomendo o último (somente o Tomcat), a menos que você saiba que possui necessidades muito especiais que seriam melhor atendidas pela AWS.
Basil Bourque
29
O Tomcat é principalmente um servidor de aplicativos, que serve solicitações para servlets Java ou arquivos JSP customizados em seu servidor. Geralmente é usado em conjunto com o servidor HTTP Apache (pelo menos na minha experiência). Use-o para processar manualmente as solicitações recebidas.
O servidor HTTP, por si só, é melhor para exibir conteúdo estático ... arquivos html, imagens etc.
Duvido de Tomcat is primarily an application serverafirmação.
28412 Rachel
6
O tomcat deve ser principalmente um servidor de aplicativos. embora ele também contenha conteúdo estático do servidor.
Escalável
4
Sim, o Tomcat é de fato principalmente um servidor de aplicativos, se o termo for utilizado no sentido de um contêiner de Servlet que gera conteúdo dinâmico entregue aos navegadores da web. Como um dos primeiros contêineres de Servlet, essa é a razão de ser do Tomcat.
@PrateekMishra Com base no link que você forneceu, sua declaração de que o tomcat é um servidor da web está incorreta; é (principalmente) um contêiner da web , também conhecido como contêiner de servlet .
Skomisa
21
um servidor apache é um servidor http que pode atender a qualquer solicitação HTTP simples, em que o servidor tomcat é na verdade um contêiner de servlet que pode atender a solicitações de servlet java.
O servidor da Web [apache] processa solicitações do cliente da Web (navegadores da Web) e o encaminha para o contêiner de servlet [tomcat] e o contêiner processa as solicitações e envia uma resposta que é encaminhada pelo servidor da Web para o cliente da Web [navegador].
Além disso, você pode verificar este link para obter mais esclarecimentos: -
Se você estiver usando a tecnologia java (Servlet / JSP) para criar aplicativos da web, provavelmente usará o Apache Tomcat. No entanto, se você estiver usando outras tecnologias como Perl, PHP ou ruby, é melhor (mais fácil) usar o Apache HTTP Server.
Esta resposta não faz sentido para mim. A primeira frase está errada, pois existem muitos outros contêineres Servlet / JSP além do Tomcat, alguns bastante populares como Jetty, JBoss / Wildfly, Glassfish, WebSphere e muitos mais. Embora popular, o Tomcat não domina, com apenas uma minoria de participação de mercado. Quanto à segunda frase, o Tomcat é frequentemente usado como um contêiner de Servlet por trás do Apache HTTP Server. E PHP etc. são frequentemente usados com vários outros servidores da web , como Nginx, Lighttpd e outros.
Basil Bourque
3
Bem, o Apache é servidor de HTTP, enquanto o Tomcat também é servidor de Servlets e JSP. Além disso, o Apache é preferível ao Apache Tomcat em tempo real
Esta pergunta é bastante antiga e sua resposta parece duplicar as que foram postadas há muito tempo. As respostas são apreciadas, mas novas respostas devem ajudar a aumentar a conversa.
precisa saber é o seguinte
-2
O Apache é um servidor da Web HTTP que serve como HTTP.
O Apache Tomcat é um contêiner de servlet java. Ele possui o mesmo servidor da web, mas é personalizado para executar servlet java e páginas JSP.
sim, a resposta é um pouco confusa, como @ Basil Bourque disse acima "O coiote é o módulo no Tomcat responsável pela veiculação na web, a Catalina é o módulo que faz Servlets. e o Jasper é o módulo que lida com JSPs" agora fornece clareza sobre como "TOMCAT RECURSOS Mesmo como servidor web personalizado para executar servlet java e páginas JSP !!!! ""
closed
aviso nesta pergunta diz que exige que o Answers tenha um conteúdo objetivo, mas espera que, em vez disso, produza conteúdo subjetivo da resposta - a maioria das respostas parece conter conteúdo objetivo (principalmente as respostas mais votadas) em vez de subjetivas -, portanto, esta pergunta deve ser NÃO FECHADO. Os medos da subjetividade nunca realmente aconteceram, e eu não concordo que a Questão tenha arriscado ser subjetiva em primeiro lugar.Respostas:
O Apache Tomcat é usado para implementar seus Java Servlets e JSPs. Portanto, em seu projeto Java, você pode criar seu arquivo WAR (abreviação de Web ARchive) e simplesmente soltá-lo no diretório deploy no Tomcat.
Então, basicamente, o Apache é um servidor HTTP, servindo HTTP. O Tomcat é um Servlet e JSP Server que serve tecnologias Java.
O Tomcat inclui Catalina, que é um contêiner de servlet. Um servlet, no final, é uma classe Java. Os arquivos JSP (que são semelhantes ao PHP e os arquivos ASP mais antigos) são gerados no código Java (HttpServlet), que é compilado em arquivos .class pelo servidor e executado pela máquina virtual Java.
fonte
httpd
produto de servidor da web Apache .Tomcat = ( Web Server + Servlet container + JSP environment )
. O servidor da Web está LIGADO por padrão quando você executa ostartup.sh
script do Tomcat , escutando na porta 8080 as conexões de entrada (chamadas HTTP). O Tomcat é Java puro, com sua própria implementação de servidor web (Coyote). O Apache HTTP Server (AHS), por outro lado, possui uma implementação completamente separada de um servidor da Web, usando o código C / C ++ nativo. O AHS é muito flexível e poderoso, mas geralmente é um exagero. O servidor web do Tomcat funciona muito bem. Use o AHS somente se for realmente necessário.Além das excelentes respostas acima, acho que se deve dizer que o Tomcat possui seu próprio servidor HTTP incorporado e também é totalmente funcional para servir conteúdo estático. Dependendo da configuração da sua máquina virtual java, ela pode superar o desempenho de conectores tradicionais no apache, como mod_proxy e mod_jk.
Dito isso, um servidor Tomcat totalmente otimizado deve servir arquivos estáticos rapidamente e, se você tiver servlets Java, JSPs e arquivos ColdFusion, além do conteúdo estático, poderá descobrir que o tomcat faz um excelente trabalho por si só.
fonte
mod_rewrite
injeção de mecanismo e ambiente condicional.mod_proxy
fornece balanceamento de carga rudimentar (e combinado com mod_jk fornece sessão / estado compartilhado rudimentar / compartilhado entre instâncias do tomcat com balanceamento de carga).fonte
O Tomcat é principalmente um servidor de aplicativos, que serve solicitações para servlets Java ou arquivos JSP customizados em seu servidor. Geralmente é usado em conjunto com o servidor HTTP Apache (pelo menos na minha experiência). Use-o para processar manualmente as solicitações recebidas.
O servidor HTTP, por si só, é melhor para exibir conteúdo estático ... arquivos html, imagens etc.
fonte
Tomcat is primarily an application server
afirmação.um servidor apache é um servidor http que pode atender a qualquer solicitação HTTP simples, em que o servidor tomcat é na verdade um contêiner de servlet que pode atender a solicitações de servlet java.
O servidor da Web [apache] processa solicitações do cliente da Web (navegadores da Web) e o encaminha para o contêiner de servlet [tomcat] e o contêiner processa as solicitações e envia uma resposta que é encaminhada pelo servidor da Web para o cliente da Web [navegador].
Além disso, você pode verificar este link para obter mais esclarecimentos: -
https://sites.google.com/site/sureshdevang/servlet-architecture
Verifique também esta resposta para pesquisas adicionais: -
https://softwareengineering.stackexchange.com/a/221092
fonte
Se você estiver usando a tecnologia java (Servlet / JSP) para criar aplicativos da web, provavelmente usará o Apache Tomcat. No entanto, se você estiver usando outras tecnologias como Perl, PHP ou ruby, é melhor (mais fácil) usar o Apache HTTP Server.
fonte
Bem, o Apache é servidor de HTTP, enquanto o Tomcat também é servidor de Servlets e JSP. Além disso, o Apache é preferível ao Apache Tomcat em tempo real
fonte
O Apache é um servidor da Web HTTP que serve como HTTP.
O Apache Tomcat é um contêiner de servlet java. Ele possui o mesmo servidor da web, mas é personalizado para executar servlet java e páginas JSP.
fonte