Apache HTTPサーバーとApache Tomcatの違いは何ですか?[閉まっている]


637

Apache HTTP ServerとApache Tomcatの機能の違いは何ですか?

TomcatがJavaで書かれていて、HTTPサーバーがCで書かれていることは知っていますが、それ以外はどのように区別されているのか本当にわかりません。機能は異なりますか?


12
私は自分のブログに要約を追加しました。多分それは誰かを助けるでしょう:tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html
Koray

36
OPが何を求めているのか正確に疑問に思っていましたが、なぜOPが閉じられたのかわかりません。幸いにも答えがあります。
フロリアンF

4
Apache WebサーバーとApache Tomcatは、異なる目的のために調整された2つの異なるツールです。それらのユースケースを事実と専門知識で区別できなくなった場合、申し訳ありません。この「議論の余地のある」質問を閉じるというこの動きは、行き過ぎです。おそらく、モデレーターは、より多くの情報を得て、それほど意見を述べる必要がないでしょう。@FlorianFが言うように、少なくとも今は答えがあります。
NeilG 2018年

2
賛成票の数を考えると、これは閉じるべきではありませんが、代わりにロックする必要があります。これは、実際に役立つ回答がある非常に良い質問であるためです。
simbro

closedこの質問の通知には、回答には客観的な内容が必要であると記載されていますが、この質問では主観的な回答内容が生成されることを期待しています。閉鎖されていない必要があります。主観性の恐れは実際に起こったことは一度もありませんし、そもそも質問が主観的であることのリスクを冒したことには同意しません。
cellepo

回答:


475

Apache Tomcatは、JavaサーブレットとJSPのデプロイに使用されます。したがって、JavaプロジェクトでWAR(Web ARchiveの略)ファイルをビルドし、Tomcatのデプロイディレクトリにドロップするだけです。

つまり、基本的にApacheはHTTPサーバーであり、HTTPを提供します。Tomcatは、Javaテクノロジを提供するサーブレットおよびJSPサーバーです。

Tomcatには、サーブレットコンテナであるCatalinaが含まれています。最後に、サーブレットはJavaクラスです。JSPファイル(PHPに似ていますが、古いASPファイル)はJavaコード(HttpServlet)に生成され、サーバーによって.classファイルにコンパイルされ、Java仮想マシンによって実行されます。


51
「ApacheはHTTPを提供している[...]によって何を意図していますか?TomcatはHTTP(hypertext aka)も提供していませんか?Tomcatを単に「mod_java」Apacheモジュールにできないのはなぜですか?説明できる?
Peterino、2012年

30
Tomcatはサーブレットコンテナです。最後に、サーブレットはJavaクラスです。JSPファイル(PHPまたはASPファイルに似ています)はJavaコード(HttpServlet)に生成され、サーバーによって.classファイルにコンパイルされ、Java仮想マシンによって実行されます。-それとは別に、このフォーラムでは、Apache HTTPDとTomcatの違いをかなりよく説明しています。coderanch.com
t

17
Tomcatは確かにそれを備えたWebサーバーをもたらします。Tomcatはサーブレット/ JSPコンテナあり、Webサーバーも提供します。TomcatのWebサーバーは非常に優れており、ほとんどの中小規模のWebサイトのニーズに対応できます。Java NIOと64ビットメモリをサポートしているため、より大規模なWebサイトでも、TomcatのCatalinaモジュールで十分に機能する場合があります。さまざまな理由から、一部の人々はCatalinaを無視し、代わりにApache httpdWebサーバー製品の背後にあるTomcatのサーブレット機能を使用することを選択します。
バジルブルク2014年

21
私のコメントの訂正:CoyoteはWebサービスを担当するTomcatのモジュールです。Catalinaは、サーブレットを実行するモジュールです。Jasperは、JSPを処理するモジュールです。
バジルブルク2014年

17
@KorayTugayはい。Tomcat = ( Web Server + Servlet container + JSP environment )。Tomcatのstartup.shスクリプトを実行すると、Webサーバーはデフォルトでオンになり、ポート8080で着信接続(HTTP呼び出し)をリッスンします。Tomcatは純粋なJavaであり、独自のWebサーバーが実装されています(Coyote)。Apache HTTPサーバ(AHS)は、対照的に、ネイティブC / C ++コードを使用して、ウェブサーバの完全に別個の実装を有しています。AHSは非常に柔軟で強力ですが、多くの場合、やり過ぎです。Tomcat独自のWebサーバーは非常によく機能します。AHSは、本当に必要な場合にのみ使用してください。
バジル

118

上記のすばらしい答えに加えて、Tomcatには独自のHTTPサーバーが組み込まれており、静的コンテンツの提供においても完全に機能していると言えるでしょう。Java仮想マシンの構成に応じて、実際には、mod_proxyやmod_jkなどのApacheの従来のコネクタを通過するよりもパフォーマンスが優れています。

つまり、完全に最適化されたTomcatサーバーは静的ファイルを高速で提供する必要があり、静的コンテンツに加えてJavaサーブレット、JSP、ColdFusionファイルがある場合、tomcat自体が優れた仕事をする場合があります。


3
そうだね。そして、多くの人は、Tomcat以外に追加のApacheセットアップを使用しています。ほとんどの場合、これは不要です。
Marco Schoolenberg 2017年

6
他のいくつかのサーバーがサポートするapache httpの最も強力な部分は、アプリケーションが要求を確認する前に、つまりmod_rewriteエンジンと条件付き環境のインジェクションを介して、要求を再ルーティングおよび再書き込みする機能です。mod_proxy基本的なロードバランシングを提供します(およびmod_jkと組み合わせると、ロードバランシングされたTomcatインスタンス間で基本的なスティッキーセッション/共有状態が提供されます)。
カウバート

81
  1. Apacheは汎用のhttpサーバーであり、Tomcatがサポートしていない多くの高度なオプションをサポートしています。
  2. Tomcatは汎用のhttpサーバーとして使用できますが、Apacheと連携して静的コンテンツを提供し、動的コンテンツの要求をTomcatに転送するApacheと連携するように設定することもできます。

最後にすべてのWebが静的であるとは限りませんか?私の理解では、Tomcatは "a"の静的コンテンツを(動的に)生成し、Apacheがこれを処理します。したがって、Tomcatが実際に動的コンテンツなどを提供することはなく、必要な場合にのみ生成されます。
Koray Tugay 14年

11
@KorayTugayあなたはあなたの言葉を混乱させています。「必要に応じて生成する」は「動的」の意味であり、「静的」とは正反対です。Apache HTTP Serverの主な目的は静的コンテンツを提供することであり、サーブレットテクノロジーの主な目的はコンテンツをオンザフライで生成すること(動的コンテンツ)です。
バジルブルク2015年

1
@BasilBourque実際にここでコンテンツを提供しているTomcatと混同されました。コンテンツを生成するだけで、Apache Httpサーバーと一緒に使用した場合はコンテンツを提供しません。おそらくあなたは正しいですし、私は混乱していますが、私は、Apacheが一緒に使用されると、Tomcatが必要に応じて静的コンテンツを生成すると私はまだ言います。Apacheを使用しない場合、TomcatのCoyoteがサービスを提供し、CatalinaとJesperが動的コンテンツを生成します。
Koray Tugay

3
@KorayTugayはい、あなたの最後のコメントは正しいです。Apache HTTP Server + Tomcatを使用している場合、WebブラウザーはAWSを「見る」だけで、Tomcatが背後で動作しているという手がかりはありません。AWSは、WebブラウザークライアントとTomcatの間の仲介者です。Tomcatを単独で使用する場合、TomcatのCoyoteモジュールはAWSの代わりにWebブラウザクライアントからのリクエストを処理します。AWSでより適切に対処できる非常に特別なニーズがあることがわかっている場合を除いて、後者(Tomcatのみ)をお勧めします。
バジルブルク2015年

29

Tomcatは主にアプリケーションサーバーであり、サーバー上のカスタムビルドのJavaサーブレットまたはJSPファイルへのリクエストを処理します。これは通常、Apache HTTPサーバーと組み合わせて使用​​されます(少なくとも私の経験では)。これを使用して、着信要求を手動で処理します。

HTTPサーバー自体は、静的コンテンツ(htmlファイル、画像など)を提供するのに最適です。


9
Tomcat is primarily an application server文を疑います。
レイチェル

6
tomcatは主にアプリケーションサーバーであること意図しています。それはかかわらないだけでなく、サーバーの静的コンテンツを。
2013年

4
はい、Webブラウザーに配信される動的コンテンツを生成するサーブレットコンテナーの意味での用語であれば、Tomcatは確かに主にアプリケーションサーバーです。最初のサーブレットコンテナの1つとして、それがTomcatの存在理由です。
バジルブルク2014年

1
tomcatはアプリケーションサーバーではなく、Webサーバーです。javajee.com/web-server-web-container-and-application-server
Mishra

@PrateekMishraあなたが提供したリンクに基づいて、tomcatはWebサーバーであるというあなたの声明は正しくありません。これは(主に)サーブレットコンテナとも呼ばれるWeb コンテナです。
skomisa

21

Apacheサーバーは、任意の単純なhttp要求を処理できるhttpサーバーです。tomcatサーバーは、実際にはJavaサーブレット要求を処理できるサーブレットコンテナーです。

Webサーバー[apache]はWebクライアント(Webブラウザー)要求を処理し、それをサーブレットコンテナー[tomcat]に転送し、コンテナーは要求を処理し、Webサーバーによって転送される応答をWebクライアント[ブラウザー]に送信します。

また、より明確にするためにこのリンクをチェックできます:-

https://sites.google.com/site/sureshdevang/servlet-architecture

さらに調査するためにこの回答を確認してください:-

https://softwareengineering.stackexchange.com/a/221092


sites.google.com/site/sureshdevang/servlet-architectureあなたが説明するように、これはより良い見解を与えます
Akitha_MJ

13

Webアプリケーションの作成にJavaテクノロジ(サーブレット/ JSP)を使用している場合は、おそらくApache Tomcatを使用します。ただし、Perl、PHP、またはRubyなどの他のテクノロジーを使用している場合は、Apache HTTPサーバーを使用する方が(簡単)です。


9
この答えは私には意味がありません。最初の文は、Tomcat以外にも多くのServlet / JSPコンテナがあり、Jetty、JBoss / Wildfly、Glassfish、WebSphereなど、非常に人気のあるコンテナがあるため、間違っています。Tomcatは人気がありますが、市場シェアはごくわずかであり、支配的ではありません。2番目の文については、TomcatはApache HTTP Serverの背後のサーブレットコンテナとしてよく使用されます。また、PHPなどは、Nginx、Lighttpdなど、他のいくつかのWebサーバーでよく使用されます
バジルブルク2015年

3

まあ、ApacheはHTTP Webサーバーですが、TomcatはサーブレットとJSPのWebサーバーでもあります。さらに、ApacheはリアルタイムでApache Tomcatよりも優先されます


19
この質問はかなり古く、あなたの回答はずっと前に投稿されたものと重複しているようです。回答はありがたいですが、新しい回答は会話に追加するのに役立ちます。
GargantuChet 2012

-2

Apacheは、HTTPとして機能するHTTP Webサーバーです。

Apache Tomcatは、Javaサーブレットコンテナーです。Webサーバーと同じように機能しますが、JavaサーブレットとJSPページを実行するようにカスタマイズされています。


1
はい、回答は少し混乱します。@ Basil Bourqueが上記で述べたように、「CoyoteはWebサービングを担当するTomcatのモジュール、Catalinaはサーブレットを実行するモジュールです。JasperはJSPを処理するモジュールです。 JavaサーブレットとJSPページを実行するようにカスタマイズされたWebサーバーとして!!!! "
Dev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.