Unterschied zwischen dem Apache HTTP Server und Apache Tomcat? [geschlossen]
637
Was ist der Unterschied in Bezug auf die Funktionalität zwischen dem Apache HTTP Server und Apache Tomcat?
Ich weiß, dass Tomcat in Java geschrieben ist und der HTTP-Server in C, aber ansonsten weiß ich nicht wirklich, wie sie unterschieden werden. Haben sie unterschiedliche Funktionen?
Ich habe mich genau gefragt, was das OP gefragt hat, und ich verstehe nicht, warum es geschlossen wurde. Zum Glück gibt es Antworten.
Florian F
4
Apache-Webserver und Apache Tomcat sind zwei verschiedene Tools, die für unterschiedliche Zwecke optimiert wurden. Wenn wir ihre Anwendungsfälle nicht mehr anhand von Fakten und Fachwissen unterscheiden können, sind wir in einem traurigen Zustand. Dieser Drang, "argumentative" Fragen zu schließen, hat zu viel erreicht. Vielleicht müssen Moderatoren besser informiert und weniger einfühlsam sein. Wie @FlorianF sagt, gibt es jetzt zumindest Antworten.
NeilG
2
Angesichts der Anzahl der Upvotes sollte dies nicht geschlossen sein, sondern gesperrt werden, da es sich tatsächlich um eine sehr gute Frage mit nützlichen Antworten handelt.
Simbro
Der closedHinweis zu dieser Frage besagt, dass Antworten objektiven Inhalt haben müssen, erwartet jedoch, dass diese Frage stattdessen subjektiven Antwortinhalt erzeugt - die Mehrheit der Antworten scheint eher objektiven Inhalt (insbesondere die höher bewerteten Antworten) als subjektiven zu enthalten - daher diese Frage sollte nicht geschlossen sein. Die Ängste vor Subjektivität sind nie wirklich aufgetreten, und ich stimme nicht zu, dass die Frage jemals riskiert wurde, überhaupt subjektiv zu sein.
Cellepo
Antworten:
474
Apache Tomcat wird zum Bereitstellen Ihrer Java-Servlets und JSPs verwendet. In Ihrem Java-Projekt können Sie also Ihre WAR-Datei (kurz für Web ARchive) erstellen und einfach im Bereitstellungsverzeichnis von Tomcat ablegen.
Apache ist also im Grunde ein HTTP-Server, der HTTP bereitstellt. Tomcat ist ein Servlet- und JSP-Server, der Java-Technologien bereitstellt.
Tomcat enthält Catalina, einen Servlet-Container. Ein Servlet ist am Ende eine Java-Klasse. JSP-Dateien (ähnlich wie PHP und ältere ASP-Dateien) werden in Java-Code (HttpServlet) generiert, der dann vom Server zu .class-Dateien kompiliert und von der Java Virtual Machine ausgeführt wird.
Was beabsichtigen Sie mit "Apache bedient [...] HTTP"? Dient Tomcat nicht auch (Hypertext aka) HTTP? Warum kann Tomcat nicht einfach ein "mod_java" Apache-Modul sein? Können Sie erklären?
Peterino
30
Tomcat ist ein Servlet-Container. Ein Servlet ist am Ende eine Java-Klasse. JSP-Dateien (die PHP- oder ASP-Dateien ähneln) werden in Java-Code (HttpServlet) generiert, der dann vom Server zu .class-Dateien kompiliert und von der virtuellen Java-Maschine ausgeführt wird. - Abgesehen davon erklärt dieses Forum hier den Unterschied zwischen Apache HTTPD und Tomcat ziemlich gut: coderanch.com/t/85182/Tomcat/…
Peterino
17
Tomcat bringt in der Tat einen leistungsfähigen Webserver mit. Tomcat ist ein Servlet / JSP-Container und bietet auch einen Webserver. Der Webserver von Tomcat ist recht gut und kann die meisten kleinen und mittleren Website-Anforderungen erfüllen. Mit der Unterstützung von Java NIO und 64-Bit-Speicher können auch einige größere Websites vom Catalina-Modul von Tomcat gut bedient werden. Aus verschiedenen Gründen ignorieren einige Leute Catalina und verwenden stattdessen die Servlet-Funktionen von Tomcat hinter dem Apache httpd-Webserverprodukt.
Basil Bourque
21
Korrektur meines Kommentars: Coyote ist das Modul in Tomcat, das für das Web-Serving verantwortlich ist. Catalina ist das Modul für Servlets. Jasper ist das Modul, das JSPs verarbeitet.
Basil Bourque
17
@KorayTugay Ja. Tomcat = ( Web Server + Servlet container + JSP environment ). Der Webserver ist standardmäßig eingeschaltet, wenn Sie das Tomcat- startup.shSkript ausführen und auf Port 8080 auf eingehende Verbindungen (HTTP-Aufrufe) warten. Tomcat ist reines Java mit einer eigenen Webserver-Implementierung (Coyote). Im Gegensatz dazu verfügt der Apache HTTP Server (AHS) über eine vollständig separate Implementierung eines Webservers mit nativem C / C ++ - Code. AHS ist sehr flexibel und leistungsstark, aber oft übertrieben. Tomcats eigener Webserver funktioniert sehr gut. Verwenden Sie AHS nur, wenn es wirklich benötigt wird.
Basil Bourque
118
Zusätzlich zu den oben genannten guten Antworten sollte in Tomcat ein eigener HTTP-Server integriert sein, der auch statische Inhalte bereitstellt. Abhängig von der Konfiguration Ihrer Java Virtual Machine kann die Leistung herkömmlicher Konnektoren in Apache wie mod_proxy und mod_jk sogar übertroffen werden.
Ein vollständig optimierter Tomcat-Server sollte jedoch schnell statische Dateien bereitstellen. Wenn Sie neben statischen Inhalten auch Java-Servlets, JSPs und ColdFusion-Dateien haben, kann Tomcat selbst hervorragende Arbeit leisten.
Wahr. Und viele Leute verwenden neben ihrem Tomcat immer noch ein zusätzliches Apache-Setup. Dies ist in den meisten Fällen nicht erforderlich.
Marco Schoolenberg
6
Der leistungsstärkste Teil von Apache http, den nur wenige andere Server unterstützen, ist die Möglichkeit, die Anforderung umzuleiten und neu zu schreiben, bevor die Anwendung sie sehen muss, und zwar durch mod_rewriteInjection der Engine und der bedingten Umgebung. mod_proxyBietet einen rudimentären Lastausgleich (und in Kombination mit mod_jk einen rudimentären Sticky Session / Shared State zwischen Tomcat-Instanzen mit Lastenausgleich).
Cowbert
81
Apache ist ein universeller http-Server, der eine Reihe erweiterter Optionen unterstützt, die Tomcat nicht unterstützt.
Obwohl Tomcat als Allzweck-http-Server verwendet werden kann, können Sie Apache und Tomcat auch so einrichten, dass sie mit Apache zusammenarbeiten, um statischen Inhalt bereitzustellen und die Anforderungen für dynamischen Inhalt an Tomcat weiterzuleiten.
Ist nicht alles Web am Ende statisch? Nach meinem Verständnis generiert Tomcat "einen" statischen Inhalt (dynamisch), den Apache dann bereitstellt. Tomcat wird also niemals dynamische Inhalte oder ähnliches bereitstellen, sondern nur bei Bedarf generieren.
Koray Tugay
11
@KorayTugay Sie verwirren Ihre Bedingungen. "Bei Bedarf generieren" ist genau das, was "dynamisch" bedeutet, und das Gegenteil von "statisch". Der Hauptzweck des Apache HTTP-Servers besteht darin, statische Inhalte bereitzustellen, während der Hauptzweck der Servlet-Technologie darin besteht, Inhalte im laufenden Betrieb (dynamische Inhalte) zu generieren.
Basil Bourque
1
@BasilBourque Ich war verwirrt mit Tomcat, der hier tatsächlich Inhalte bereitstellt. Der Inhalt wird nur generiert und nicht bereitgestellt, wenn er zusammen mit Apache Http Server verwendet wird. Wahrscheinlich haben Sie Recht und ich bin nur verwirrt, aber für mich würde ich immer noch sagen, wenn Tomache zusammen verwendet wird, dass Tomcat bei Bedarf statische Inhalte generiert. Wenn nicht Apache verwendet wird, übernimmt Coyote in Tomcat das Servieren, während Catalina und Jesper den dynamischen Inhalt generieren.
Koray Tugay
3
@KorayTugay Ja, dein letzter Kommentar ist korrekt. Wenn Sie Apache HTTP Server + Tomcat verwenden, "sehen" Webbrowser nur AWS ohne Anhaltspunkt dafür, dass Tomcat hinter den Kulissen arbeitet. AWS ist ein Vermittler zwischen den Webbrowser-Clients und Tomcat. Wenn Sie nur Tomcat verwenden, ersetzt das Coyote-Modul in Tomcat AWS, um Anforderungen von Webbrowser-Clients zu bearbeiten. Ich empfehle letzteres (nur Tomcat), es sei denn, Sie wissen, dass Sie ganz besondere Bedürfnisse haben, die von AWS besser berücksichtigt werden.
Basil Bourque
29
Tomcat ist in erster Linie ein Anwendungsserver, der Anforderungen an benutzerdefinierte Java-Servlets oder JSP-Dateien auf Ihrem Server bereitstellt. Es wird normalerweise in Verbindung mit dem Apache HTTP-Server verwendet (zumindest nach meiner Erfahrung). Verwenden Sie diese Option, um eingehende Anforderungen manuell zu verarbeiten.
Der HTTP-Server selbst eignet sich am besten zum Bereitstellen statischer Inhalte ... HTML-Dateien, Bilder usw.
Ich bezweifle die Tomcat is primarily an application serverAussage.
Rachel
6
tomcat ist in erster Linie als Anwendungsserver gedacht . obwohl es auch statische Serverinhalte tut .
Skalierbar
4
Ja, Tomcat ist in erster Linie ein Anwendungsserver, wenn der Begriff im Sinne eines Servlet-Containers gemeint ist, der dynamische Inhalte generiert, die an Webbrowser gesendet werden. Als einer der ersten Servlet-Container ist dies der Grund für Tomcat.
@PrateekMishra Aufgrund des von Ihnen angegebenen Links ist Ihre Aussage, dass Tomcat ein Webserver ist, falsch. Es ist (hauptsächlich) ein Webcontainer , der auch als Servlet-Container bezeichnet wird .
Skomisa
20
Ein Apache-Server ist ein http-Server, der alle einfachen http-Anforderungen bedienen kann, wobei der Tomcat-Server tatsächlich ein Servlet-Container ist, der Java-Servlet-Anforderungen bedienen kann.
Der Webserver [Apache] verarbeitet Anforderungen des Webclients (Webbrowser) und leitet sie an den Servlet-Container [Tomcat] weiter. Der Container verarbeitet die Anforderungen und sendet eine Antwort, die vom Webserver an den Webclient [Browser] weitergeleitet wird.
Sie können diesen Link auch überprüfen, um weitere Informationen zu erhalten: -
Wenn Sie Java-Technologie (Servlet / JSP) zum Erstellen von Webanwendungen verwenden, werden Sie wahrscheinlich Apache Tomcat verwenden. Wenn Sie jedoch andere Technologien wie Perl, PHP oder Ruby verwenden, ist es besser (einfacher), Apache HTTP Server zu verwenden.
Diese Antwort macht für mich keinen Sinn. Der erste Satz ist insofern falsch, als es neben Tomcat noch viele andere Servlet / JSP-Container gibt, von denen einige sehr beliebt sind, wie Jetty, JBoss / Wildfly, Glassfish, WebSphere und viele mehr. Obwohl Tomcat beliebt ist, dominiert es nicht mit nur einer Minderheit des Marktanteils. Im zweiten Satz wird Tomcat häufig als Servlet-Container hinter Apache HTTP Server verwendet. PHP usw. werden häufig mit mehreren anderen Webservern wie Nginx, Lighttpd und anderen verwendet.
Basil Bourque
3
Nun, Apache ist ein HTTP-Webserver, während Tomcat auch ein Webserver für Servlets und JSP ist. Darüber hinaus wird Apache in Echtzeit gegenüber Apache Tomcat bevorzugt
Diese Frage ist ziemlich alt und Ihre Antwort scheint diejenigen zu duplizieren, die vor langer Zeit veröffentlicht wurden. Antworten werden geschätzt, aber neue Antworten sollten dazu beitragen, die Konversation zu verbessern.
GargantuChet
-2
Apache ist ein HTTP-Webserver, der als HTTP dient.
Apache Tomcat ist ein Java-Servlet-Container. Es funktioniert genauso wie der Webserver, ist jedoch für die Ausführung von Java-Servlet- und JSP-Seiten angepasst.
Ja, die Antwort ist etwas verwirrend, wie @ Basil Bourque oben sagte: "Coyote ist das Modul in Tomcat, das für das Web-Serving verantwortlich ist, Catalina ist das Modul für Servlets. und Jasper ist das Modul für JSPs." Jetzt gibt es Klarheit darüber, wie "TOMCAT FEATURES Same" als Webserver angepasst, um Java-Servlet- und JSP-Seiten auszuführen !!!! "
closed
Hinweis zu dieser Frage besagt, dass Antworten objektiven Inhalt haben müssen, erwartet jedoch, dass diese Frage stattdessen subjektiven Antwortinhalt erzeugt - die Mehrheit der Antworten scheint eher objektiven Inhalt (insbesondere die höher bewerteten Antworten) als subjektiven zu enthalten - daher diese Frage sollte nicht geschlossen sein. Die Ängste vor Subjektivität sind nie wirklich aufgetreten, und ich stimme nicht zu, dass die Frage jemals riskiert wurde, überhaupt subjektiv zu sein.Antworten:
Apache Tomcat wird zum Bereitstellen Ihrer Java-Servlets und JSPs verwendet. In Ihrem Java-Projekt können Sie also Ihre WAR-Datei (kurz für Web ARchive) erstellen und einfach im Bereitstellungsverzeichnis von Tomcat ablegen.
Apache ist also im Grunde ein HTTP-Server, der HTTP bereitstellt. Tomcat ist ein Servlet- und JSP-Server, der Java-Technologien bereitstellt.
Tomcat enthält Catalina, einen Servlet-Container. Ein Servlet ist am Ende eine Java-Klasse. JSP-Dateien (ähnlich wie PHP und ältere ASP-Dateien) werden in Java-Code (HttpServlet) generiert, der dann vom Server zu .class-Dateien kompiliert und von der Java Virtual Machine ausgeführt wird.
quelle
httpd
-Webserverprodukt.Tomcat = ( Web Server + Servlet container + JSP environment )
. Der Webserver ist standardmäßig eingeschaltet, wenn Sie das Tomcat-startup.sh
Skript ausführen und auf Port 8080 auf eingehende Verbindungen (HTTP-Aufrufe) warten. Tomcat ist reines Java mit einer eigenen Webserver-Implementierung (Coyote). Im Gegensatz dazu verfügt der Apache HTTP Server (AHS) über eine vollständig separate Implementierung eines Webservers mit nativem C / C ++ - Code. AHS ist sehr flexibel und leistungsstark, aber oft übertrieben. Tomcats eigener Webserver funktioniert sehr gut. Verwenden Sie AHS nur, wenn es wirklich benötigt wird.Zusätzlich zu den oben genannten guten Antworten sollte in Tomcat ein eigener HTTP-Server integriert sein, der auch statische Inhalte bereitstellt. Abhängig von der Konfiguration Ihrer Java Virtual Machine kann die Leistung herkömmlicher Konnektoren in Apache wie mod_proxy und mod_jk sogar übertroffen werden.
Ein vollständig optimierter Tomcat-Server sollte jedoch schnell statische Dateien bereitstellen. Wenn Sie neben statischen Inhalten auch Java-Servlets, JSPs und ColdFusion-Dateien haben, kann Tomcat selbst hervorragende Arbeit leisten.
quelle
mod_rewrite
Injection der Engine und der bedingten Umgebung.mod_proxy
Bietet einen rudimentären Lastausgleich (und in Kombination mit mod_jk einen rudimentären Sticky Session / Shared State zwischen Tomcat-Instanzen mit Lastenausgleich).quelle
Tomcat ist in erster Linie ein Anwendungsserver, der Anforderungen an benutzerdefinierte Java-Servlets oder JSP-Dateien auf Ihrem Server bereitstellt. Es wird normalerweise in Verbindung mit dem Apache HTTP-Server verwendet (zumindest nach meiner Erfahrung). Verwenden Sie diese Option, um eingehende Anforderungen manuell zu verarbeiten.
Der HTTP-Server selbst eignet sich am besten zum Bereitstellen statischer Inhalte ... HTML-Dateien, Bilder usw.
quelle
Tomcat is primarily an application server
Aussage.Ein Apache-Server ist ein http-Server, der alle einfachen http-Anforderungen bedienen kann, wobei der Tomcat-Server tatsächlich ein Servlet-Container ist, der Java-Servlet-Anforderungen bedienen kann.
Der Webserver [Apache] verarbeitet Anforderungen des Webclients (Webbrowser) und leitet sie an den Servlet-Container [Tomcat] weiter. Der Container verarbeitet die Anforderungen und sendet eine Antwort, die vom Webserver an den Webclient [Browser] weitergeleitet wird.
Sie können diesen Link auch überprüfen, um weitere Informationen zu erhalten: -
https://sites.google.com/site/sureshdevang/servlet-architecture
Überprüfen Sie auch diese Antwort für weitere Nachforschungen: -
https://softwareengineering.stackexchange.com/a/221092
quelle
Wenn Sie Java-Technologie (Servlet / JSP) zum Erstellen von Webanwendungen verwenden, werden Sie wahrscheinlich Apache Tomcat verwenden. Wenn Sie jedoch andere Technologien wie Perl, PHP oder Ruby verwenden, ist es besser (einfacher), Apache HTTP Server zu verwenden.
quelle
Nun, Apache ist ein HTTP-Webserver, während Tomcat auch ein Webserver für Servlets und JSP ist. Darüber hinaus wird Apache in Echtzeit gegenüber Apache Tomcat bevorzugt
quelle
Apache ist ein HTTP-Webserver, der als HTTP dient.
Apache Tomcat ist ein Java-Servlet-Container. Es funktioniert genauso wie der Webserver, ist jedoch für die Ausführung von Java-Servlet- und JSP-Seiten angepasst.
quelle