Apache HTTP Sunucusu ile Apache Tomcat arasındaki fark nedir? [kapalı]


637

Apache HTTP Sunucusu ile Apache Tomcat arasındaki işlevsellik açısından fark nedir?

Tomcat'in Java ile yazılmış olduğunu ve HTTP Sunucusunun C olduğunu biliyorum, ama bunun dışında nasıl ayırt edildiklerini gerçekten bilmiyorum. Farklı işlevleri var mı?


12
Bloguma bir özet ekledim, belki birine yardımcı olabilir: tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html
Koray Tugay

36
OP'nin tam olarak ne istediğini merak ediyordum ve neden kapatıldığını anlamıyorum. Neyse ki cevaplar var.
Florian F

4
Apache web sunucusu ve Apache Tomcat farklı amaçlar için ayarlanmış iki farklı araçtır. Kullanım durumlarını artık gerçeklere ve uzmanlığa göre ayırt edemezsek, üzücü bir duruma geliriz. "Tartışmalı" soruları kapatmaya yönelik bu güce ulaşıldı. Belki de moderatörler daha bilgili ve daha az fikirli olmalıdır. @FlorianF'ın dediği gibi, en azından şimdi cevaplar var.
NeilG

2
Olumlu oyların sayısı göz önüne alındığında - bu kapalı olmamalı - bunun yerine kilitlenmelidir - çünkü aslında yararlı cevapları olan çok iyi bir soru.
simbro

Bu closedSorudaki bildirim, Yanıtların nesnel içeriğe sahip olmasını gerektirdiğini, ancak bu Sorunun bunun yerine öznel Cevap içeriği üreteceğini umuyor - Yanıtların çoğunun öznel yerine nesnel içerik (özellikle daha yüksek oylanan Cevaplar) içerdiği görülüyor - bu nedenle bu Soru UN KAPALI olmalıdır. Öznellik korkusu hiçbir zaman gerçekten olmadı ve ilk etapta Sübjektif olma riski taşıyan sorunun kesinlikle kabul edilmediğini düşünüyorum.
cellepo

Yanıtlar:


475

Apache Tomcat, Java Sunucu Uygulamalarınızı ve JSP'lerinizi dağıtmak için kullanılır. Java projenizde WAR (Web ARchive kısaltması) dosyanızı oluşturabilir ve Tomcat'teki konuşlandırma dizinine bırakabilirsiniz.

Temel olarak Apache HTTP sunan bir HTTP Sunucusudur. Tomcat, Java teknolojileri sunan bir Servlet ve JSP Sunucusudur.

Tomcat, bir kulübe konteyneri olan Catalina'yı içerir. Sonunda bir sunucu uygulaması bir Java sınıfıdır. JSP dosyaları (PHP'ye ve daha eski ASP dosyalarına benzer) Java kodunda (HttpServlet) oluşturulur ve daha sonra sunucu tarafından .class dosyalarına derlenir ve Java sanal makinesi tarafından yürütülür.


51
"Apache [...] HTTP sunuyor" ile neyi düşünüyorsunuz? Tomcat ayrıca HTTP (hypertext aka) HTTP sunmuyor mu? Tomcat neden sadece bir "mod_java" Apache modülü olamaz? Açıklayabilir misin?
Peterino

30
Tomcat bir sunucu uygulaması konteyneridir. Sonunda bir sunucu uygulaması bir Java sınıfıdır. JSP dosyaları (PHP veya ASP dosyalarına benzer) Java koduna (HttpServlet) oluşturulur ve bu kod sunucu tarafından .class dosyalarına derlenir ve Java sanal makinesi tarafından yürütülür. - Bunun dışında, bu forum Apache HTTPD ve Tomcat arasındaki farkı oldukça iyi açıklıyor: coderanch.com/t/85182/Tomcat/…
Peterino

17
Tomcat gerçekten beraberinde yetenekli bir web sunucusu getiriyor. Tomcat bir Servlet / JSP kapsayıcısıdır ve ayrıca bir web sunucusu sunar. Tomcat'in web sunucusu oldukça iyi, çoğu küçük ve orta web sitesi ihtiyacını karşılayabiliyor. Java NIO ve 64 bit bellek desteği ile, bazı büyük ölçekli web siteleri bile Tomcat'in Catalina modülü tarafından iyi bir şekilde sunulabilir. Çeşitli nedenlerle, bazı insanlar Catalina'yı görmezden gelmeyi tercih eder ve bunun yerine Tomache'nin Servlet yeteneklerini Apache httpdweb sunucusu ürününün arkasında kullanırlar .
Basil Bourque

21
Yorumuma düzeltme: Coyote, Tomcat'te web sunumundan sorumlu modüldür. Catalina, Servlets yapan modüldür. Jasper, JSP'leri işleyen modüldür.
Basil Bourque

17
@KorayTugay Evet. Tomcat = ( Web Server + Servlet container + JSP environment ). Tomcat'in startup.shkomut dosyasını çalıştırdığınızda , gelen bağlantılar (HTTP çağrıları) için 8080 numaralı bağlantı noktasını dinlerken web sunucusu varsayılan olarak AÇIK'tır. Tomcat, kendi web sunucusu uygulaması (Coyote) ile saf Java'dır. Apache HTTP Sunucusu (AHS), aksine, doğal C / C ++ kodu kullanarak, bir web sunucusunun tamamen ayrı bir uygulama vardır. AHS çok esnek ve güçlüdür, ancak genellikle aşırıdır. Tomcat'in kendi web sunucusu çok iyi çalışıyor. AHS'yi yalnızca gerçekten gerekliyse kullanın.
Basil Bourque

118

Yukarıdaki iyi yanıtlara ek olarak, Tomcat'in kendi HTTP sunucusunda yerleşik olduğu ve statik içerik sunmada tamamen işlevsel olduğu söylenmelidir. Java sanal makine yapılandırmanıza bağlı olarak, mod_proxy ve mod_jk gibi apache'deki geleneksel konektörlerden daha iyi performans gösterebilir.

Tam olarak optimize edilmiş bir Tomcat sunucusunun statik dosyaları hızlı bir şekilde sunması gerektiğini ve Java sunucu uygulamalarınız, JSP'leriniz ve ColdFusion dosyalarınız varsa, statik içeriğe ek olarak tomcat'in kendi başına mükemmel bir iş yaptığını görebilirsiniz.


3
Doğru. Ve birçok kişi Tomcat'lerinin yanında hala ekstra bir Apache kurulumu kullanıyor .. bu çoğu durumda gereksiz.
Marco Schoolenberg

6
Apache http'nin diğer birkaç sunucunun desteklediği en güçlü kısmı, uygulamanın görmesi gerekmeden, yani mod_rewritemotor ve koşullu ortam enjeksiyonu yoluyla isteği yeniden yönlendirme ve yeniden yazma yeteneğidir . mod_proxytemel yük dengelemesi sağlar (ve mod_jk ile birlikte yük dengeli tomcat örnekleri arasında temel sabit oturum / paylaşılan durum sağlar).
cowbert

81
  1. Apache, Tomcat'in desteklemediği bir dizi gelişmiş seçeneği destekleyen genel amaçlı bir http sunucusudur.
  2. Tomcat genel amaçlı bir http sunucusu olarak kullanılabilse de Apache ve Tomcat'i, statik içerik sunan ve dinamik içerik isteklerini Tomcat'e ileten Apache ile birlikte çalışacak şekilde de ayarlayabilirsiniz.

Sonunda tüm ağlar statik değil mi? Anladığım kadarıyla, Tomcat statik bir içerik (dinamik olarak) oluşturduğunda Apache buna hizmet edecektir. Bu yüzden Tomcat hiçbir zaman dinamik içeriğe veya başka bir şeye hizmet etmeyecek, yalnızca gerektiğinde oluşturacaktır.
Koray Tugay

11
@KorayTugay Şartlarınızı karıştırıyorsunuz. "Gerektiğinde üret" tam olarak "dinamik" anlamına gelir ve "statik" ifadesinin tam tersidir. Apache HTTP Sunucusunun temel amacı statik içerik sunmak iken, Servlet teknolojisinin temel amacı anında içerik (dinamik içerik) oluşturmaktır.
Basil Bourque

1
@BasilBourque Burada gerçekten içerik sunan Tomcat ile karıştırıldım. Yalnızca içeriği üretecek, Apache Http Server ile birlikte kullanıldığında sunulmayacaktır. Muhtemelen haklısın ve kafam karıştı, ama bana göre yine de birlikte kullanıldığında Apache hizmet veriyor, Tomcat gerektiğinde statik içerik oluşturuyor. Apache kullanılmazsa, Tomcat'teki Coyote sunumu yaparken, Catalina ve Jesper dinamik içeriği oluşturur.
Koray Tugay

3
@KorayTugay Evet, son yorumunuz doğru. Apache HTTP Sunucusu + Tomcat kullanılıyorsa, web tarayıcıları yalnızca Tomcat'in perdelerin arkasında çalıştığına dair hiçbir ipucu olmadan AWS'yi "görür". AWS, web tarayıcı istemcileri ile Tomcat arasında bir arabulucudur. Yalnızca Tomcat kullanıyorsanız, Tomcat'teki Coyote modülü, web tarayıcı istemcilerinin alan isteklerine AWS'nin yerini alır. AWS tarafından daha iyi ele alınacak çok özel ihtiyaçlarınız olduğunu bilmiyorsanız, ikincisini (yalnız Tomcat) öneririm.
Basil Bourque

29

Tomcat, öncelikle sunucunuzdaki özel olarak oluşturulmuş Java sunucu uygulamalarına veya JSP dosyalarına istekleri sunan bir uygulama sunucusudur. Genellikle Apache HTTP sunucusu ile birlikte kullanılır (en azından tecrübelerime göre). Gelen istekleri elle işlemek için kullanın.

HTTP sunucusu tek başına statik içerik sunmak için en iyisidir ... html dosyaları, resimler vb.


9
İfadeden şüpheliyim Tomcat is primarily an application server.
Rachel

6
tomcat öncelikle bir uygulama sunucusu olmak içindir . olsa yapar yanı sunucu statik içerik.
Ölçeklenebilir

4
Evet Terim, web tarayıcılarına iletilen dinamik içerik üreten bir Servlet kapsayıcısı anlamındaysa, esasen bir uygulama sunucusudur. İlk Servlet konteynırlarından biri olarak, Tomcat'in varlık nedeni budur.
Basil Bourque

1
tomcat bir uygulama sunucusu değil, bir web sunucusudur. javajee.com/web-server-web-container-and-application-server
Prateek Mishra

@PrateekMishra Sağladığınız bağlantıya dayanarak, tomcat'in bir web sunucusu olduğu ifadeniz yanlış; (esas olarak) , bir sunucu uygulaması kabı olarak da bilinen bir web kabıdır .
skomisa

21

bir apache sunucusu, herhangi bir basit http isteğine hizmet edebilen bir http sunucusudur; burada tomcat sunucusu aslında java sunucu uygulaması isteklerini sunabilen bir sunucu uygulaması kapsayıcısıdır.

Web sunucusu [apache] web istemcisi (web tarayıcıları) isteklerini işler ve bunu sunucu uygulaması [tomcat] 'a iletir ve konteyner isteklerini işler ve web sunucusu tarafından web istemcisine [tarayıcı] iletilen yanıtı gönderir.

Ayrıca daha fazla açıklama için bu bağlantıyı kontrol edebilirsiniz:

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

Ayrıca daha fazla araştırma yapmak için bu cevabı kontrol edin: -

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


sites.google.com/site/sureshdevang/servlet-architecture Bunu açıkladığınız gibi daha iyi bir görünüm verir
Akitha_MJ

13

Web uygulaması yapmak için java teknolojisi (Servlet / JSP) kullanıyorsanız, muhtemelen Apache Tomcat'i kullanacaksınız. Ancak, Perl, PHP veya ruby ​​gibi başka teknolojiler kullanıyorsanız, Apache HTTP Sunucusunu kullanmak daha iyidir (daha kolay).


9
Bu cevap benim için bir anlam ifade etmiyor. İlk cümle yanlıştır, çünkü Tomcat'in yanı sıra İskelet, JBoss / Wildfly, Glassfish, WebSphere ve daha pek çok popüler olan Servlet / JSP konteynırları da vardır. Popüler olsa da, Tomcat sadece az bir pazar payı ile hakim değil. İkinci cümle gelince, Tomcat genellikle Apache HTTP Sunucusunun arkasında bir Servlet kapsayıcısı olarak kullanılır. Ve PHP vb. Genellikle Nginx, Lighttpd ve diğerleri gibi diğer bazı web Sunucularında kullanılır .
Basil Bourque

3

Apache HTTP web sunucusu, Tomcat aynı zamanda Servlets ve JSP için de web sunucusu. Üstelik Apache Tomcat yerine gerçek zamanlı olarak tercih ediliyor


19
Bu soru oldukça eski ve cevabınız uzun zaman önce gönderilmiş olan soruları kopyalıyor gibi görünüyor. Cevaplar takdir ediliyor, ancak yeni cevaplar sohbete katkıda bulunacak.
GargantuChet

-2

Apache, HTTP işlevi gören bir HTTP web sunucusudur.

Apache Tomcat bir java sunucu uygulaması konteyneri. Web sunucusu ile aynı özelliklere sahiptir, ancak java sunucu uygulaması ve JSP sayfalarını yürütmek için özelleştirilmiştir.


1
evet cevabı biraz kafa karıştırıcı @ Basil Bourque yukarıda dedi "Coyote Tomcat içinde web hizmet sorumlu modülü, Catalina Servlets yapar modülü ve Jasper JSPs işleyen modül" şimdi nasıl "TOMCAT ÖZELLİKLERİ Aynı" web sunucusu olarak java servlet ve JSP sayfalarını yürütmek için özelleştirilmiş !!!! "
Dev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.