568

Apache HTTP Server와 Apache Tomcat 간의 기능면에서 차이점은 무엇입니까?

나는 Tomcat이 Java로 작성되었고 HTTP Server가 C로되어 있다는 것을 알고 있지만 그 이외의 방법으로는 Tomcat이 어떻게 구별되는지 모릅니다. 그들은 다른 기능을 가지고 있습니까?


  • 내 블로그에 요약을 추가했습니다. 아마도 도움이 될 것입니다.tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html - Koray Tugay
  • 나는 OP가 무엇을 요구했는지 정확히 궁금해했고, 왜 그것이 닫혔는지 알지 못한다. 다행히도 대답이 있습니다. - Florian F
  • Apache 웹 서버와 Apache Tomcat은 서로 다른 목적으로 조정 된 두 가지 도구입니다. 사실과 전문 지식을 바탕으로 유스 케이스를 더 이상 구분할 수 없다면 우리는 유감스러운 상태에 처하게됩니다. "인수"를 닫기위한이 드라이브는 질문에 도달했습니다. 아마도 운영자는 더 많은 정보를 제공하고 의견이 개진 될 필요가 있습니다. @FlorianF가 말했듯이 적어도 지금은 대답이 있습니다. - Anil G

8 답변


414

Apache Tomcat은 Java Servlet 및 JSP를 배치하는 데 사용됩니다. 따라서 Java 프로젝트에서 WAR (Web ARchive의 약자) 파일을 빌드하고 Tomcat의 deploy 디렉토리에 놓을 수 있습니다.

그래서 기본적으로 Apache는 HTTP를 제공하는 HTTP 서버입니다. Tomcat은 Java 기술을 제공하는 서블릿 및 JSP 서버입니다.

Tomcat은 서블릿 컨테이너입니다. 서블릿은 결국 Java 클래스입니다. JSP 파일 (PHP와 유사한 파일 및 이전 ASP 파일)은 Java 코드 (HttpServlet)로 생성 된 다음 서버에 의해 .class 파일로 컴파일되고 Java 가상 시스템에 의해 실행됩니다.


  • " Apache는 HTTP를 제공하고 있습니다 ... "라는 의도는 무엇입니까? Tomcat도 HTTP (하이퍼 텍스트라고도 함)를 제공하지 않습니까? Tomcat을 " mod_java " 아파치 모듈? 설명 할 수 있니? - Peterino
  • Tomcat은 서블릿 컨테이너입니다. 서블릿은 결국 Java 클래스입니다. JSP 파일 (PHP 또는 ASP 파일과 유사 함)은 Java 코드 (HttpServlet)로 생성 된 다음 서버에 의해 .class 파일로 컴파일되고 Java 가상 시스템에 의해 실행됩니다. - 그 외에도이 포럼은 Apache HTTPD와 Tomcat의 차이점을 잘 설명합니다.coderanch.com/t/85182/Tomcat/… - Peterino
  • Tomcat은 실제 웹 서버를 가지고 있습니다. Tomcat은 Servlet / JSP 컨테이너입니다.또한 웹 서버를 제공합니다. Tomcat의 웹 서버는 대부분의 중소 웹 사이트 요구를 잘 처리 할 수 있습니다. Java NIO 및 64 비트 메모리를 지원하기 때문에 일부 대규모 웹 사이트라도 Tomcat의 Catalina 모듈에서 잘 서비스 할 수 있습니다. 다양한 이유로 Catalina를 무시하고 대신 Apache 뒤에 Tomcat의 Servlet 기능을 사용하는 사람들이 있습니다httpd웹 서버 제품. - Basil Bourque
  • 내 의견에 대한 수정 : Coyote는 웹 서비스를 담당하는 Tomcat의 모듈입니다. Catalina는 Servlets을 수행하는 모듈입니다. Jasper는 JSP를 처리하는 모듈입니다. - Basil Bourque
  • @KorayTugay 예.Tomcat = ( Web Server + Servlet container + JSP environment ). 웹 서버는 Tomcat을 실행할 때 기본적으로 켜져 있습니다.startup.sh스크립트로 수신 연결 (HTTP 호출)을 위해 포트 8080에서 수신 대기합니다. Tomcat은 고유 한 웹 서버 구현 (Coyote)을 갖춘 순수 Java입니다. 그만큼Apache HTTP Server(AHS)는 네이티브 C / C ++ 코드를 사용하여 웹 서버를 완전히 별도로 구현합니다. AHS는 매우 유연하고 강력하지만 종종 과잉입니다. Tomcat 자체 웹 서버가 잘 작동합니다. 진정으로 필요한 경우에만 AHS를 사용하십시오. - Basil Bourque

99

위의 훌륭한 답변 외에도 Tomcat에는 자체 HTTP 서버가 내장되어 있으며 정적 콘텐츠를 제공 할 때도 완벽하게 기능한다고합니다. 자바 가상 머신 설정에 따라 mod_proxy와 mod_jk와 같은 아파치의 전통적인 커넥터를 통해 성능이 실제로 뛰어나다.

완벽하게 최적화 된 Tomcat 서버는 정적 파일을 빠르게 제공해야하며 정적 컨텐츠 이외에 Java 서블릿, JSP 및 ColdFusion 파일이있는 경우 Tomcat이 뛰어난 작업을 수행한다는 것을 알 수 있습니다.


  • 참된. 그리고 많은 사람들은 Tomcat 외에 다른 아파치 설정을 사용합니다. 대부분의 경우 불필요합니다. - Marco Schoolenberg
  • 다른 몇몇 서버가 지원하는 아파치 http의 가장 강력한 부분은 애플리케이션이 그것을보아야하기 전에 요청을 다시 라우트하고 재 작성하는 기능이다.mod_rewrite엔진 및 조건부 환경 주입.mod_proxy초보적인로드 밸런싱을 제공합니다 (mod_jk와 결합하면로드 균형 조정 된 톰캣 인스턴스간에 기본적인 끈적한 세션 / 공유 상태가 제공됩니다). - cowbert

67

  1. 아파치는 범용 http 서버로, Tomcat이 제공하지 않는 많은 고급 옵션을 지원합니다.
  2. Tomcat을 범용 http 서버로 사용할 수 있지만 Apache와 Tomcat이 정적 컨텐츠를 제공하고 동적 컨텐츠 요청을 Tomcat으로 전달하도록 설정할 수도 있습니다.


  • 끝에 모든 웹이 고정되어 있지 않습니까? Tomcat은 " a " (동적으로) 정적 인 콘텐츠라면 Apache가이를 제공 할 것입니다. 따라서 Tomcat은 실제로 동적 인 내용이나 다른 것을 제공하지 않습니다. 필요할 때만 생성합니다. - Koray Tugay
  • @KorayTugay 귀하는 귀하의 조건을 혼동하고 있습니다. " 필요한 경우 생성 " 정확히 "동적" 의미하고, "정적"의 정반대이다. Apache HTTP Server의 주요 목적은 정적 컨텐츠를 제공하는 것이지만 Servlet 기술의 주요 목적은 컨텐츠를 즉석에서 생성하는 것입니다 (동적 컨텐츠). - Basil Bourque
  • @BasilBourque 실제로 여기에서 컨텐츠를 제공하는 Tomcat과 혼동을 느꼈습니다. 그것은 단지 콘텐츠를 생성 할 것이고, 아파치 Http 서버와 함께 사용될 때 그것을 제공하지 않을 것이다. 아마 당신이 옳은 나는 혼란스러워하지만 나에게 나는 여전히 아파치가 함께 사용될 때 Tomcat이 필요할 때 정적 컨텐츠를 생성한다고 말할 것이다. Apache가 사용되지 않으면 Tomcat의 Coyote가 게재를 수행하고 Catalina와 Jesper는 동적 콘텐츠를 생성합니다. - Koray Tugay
  • @KorayTugay 네, 마지막 의견이 맞습니다. Apache HTTP Server + Tomcat을 사용하는 경우 웹 브라우저는 " see " 톰캣이 커튼 뒤에서 일한다는 단서가없는 AWS. AWS는 웹 브라우저 클라이언트와 Tomcat의 중개자입니다. Tomcat 만 사용하는 경우 Tomcat의 Coyote 모듈이 AWS 대신 웹 브라우저 클라이언트의 필드 요청을 처리합니다. AWS가 더 잘 해결할 수있는 매우 특별한 요구 사항이 있다는 것을 안다면 후자 (Tomcat 혼자)를 추천합니다. - Basil Bourque

24

Tomcat은 기본적으로 응용 프로그램 서버로서 서버에 사용자 정의 Java 서블릿 또는 JSP 파일에 대한 요청을 제공합니다. 이것은 보통 Apache HTTP 서버와 함께 사용됩니다 (적어도 내 경험에 의하면). 들어오는 요청을 수동으로 처리하는 데 사용하십시오.

HTTP 서버는 그 자체로 정적 컨텐츠를 제공하는 데 가장 적합합니다 ... html 파일, 이미지 등


  • 나는 의심한다.Tomcat is primarily an application server성명서. - Rachel
  • 바람둥이는 주로의미심장 한응용 프로그램 서버가 될 수 있습니다. 그래도~하다서버 정적 컨텐츠도 포함됩니다. - Scalable
  • 예 톰캣은 실제로 웹 브라우저에 전달되는 동적 컨텐트를 생성하는 서블릿 컨테이너의 의미로 사용되는 경우 애플리케이션 서버입니다. 첫 번째 서블릿 컨테이너 중 하나 인 Tomcat은 존재 이유입니다. - Basil Bourque
  • tomcat은 응용 프로그램 서버가 아니며 웹 서버입니다.javajee.com/web-server-web-container-and-application-server - Prateek Mishra
  • @PrateekMishra 당신이 제공 한 링크를 기반으로 tomcat이웹 서버부정확하다; 그것은 (주로)웹 컨테이너, 일컬어 a서블릿 컨테이너. - skomisa

17

아파치 서버는 모든 간단한 HTTP 요청을 처리 할 수있는 HTTP 서버입니다. 여기서 Tomcat 서버는 실제로 자바 서블릿 요청을 처리 할 수있는 서블릿 컨테이너입니다.

웹 서버 [apache]는 웹 클라이언트 (웹 브라우저) 요청을 처리하여 서블릿 컨테이너 [tomcat]에 전달하고 컨테이너는 요청을 처리하고 웹 서버가 웹 클라이언트 [브라우저]로 전달하는 응답을 보냅니다.

또한 좀 더 명확히하기 위해이 링크를 확인할 수 있습니다 : -

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

또한 추가 조사를 위해이 답변을 확인하십시오.

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


12

웹 응용 프로그램을 만들기 위해 자바 기술 (Servlet / JSP)을 사용하고 있다면 아마도 Apache Tomcat을 사용할 것입니다. 그러나 Perl, PHP 또는 루비와 같은 다른 기술을 사용하는 경우 Apache HTTP Server를 사용하는 것이 더 쉽습니다.


  • 이 대답은 나에게 의미가 없습니다. Tomcat 외에도 Jetty, JBoss / Wildfly, Glassfish, WebSphere 등과 같이 많이 사용되는 Servlet / JSP 컨테이너가 많이 있다는 점에서 첫 번째 문장은 잘못되었습니다. 대중적이지만, Tomcat은 지배적이지 않으며 소수의 시장 점유율을 가지고 있습니다. 두 번째 문장에서 Tomcat은 종종 Apache HTTP Server의 서블릿 컨테이너로 사용됩니다. PHP 등다른 여러 웹 서버와 함께 자주 사용됨Nginx, Lighttpd 및 기타 등. - Basil Bourque

3

Apache는 HTTP 웹 서버입니다. Tomcat은 서블릿 및 JSP 용 웹 서버이기도합니다. 또한 Apache Tomcat보다 실시간으로 Apache가 선호됩니다.


  • 이 질문은 꽤 오래된 것이고, 당신의 대답은 오래전에 게시 된 것과 중복되는 것 같습니다. 답변은 감사하지만 새로운 답변은 대화에 도움이 될 것입니다. - GargantuChet

-1

아파치는 HTTP 역할을하는 HTTP 웹 서버이지만 아파치 톰캣은 자바 서블릿 컨테이너입니다. IT FEATURES 자바 서블릿과 JSP 페이지를 실행하기 위해 사용자 정의 된 웹 서버와 같습니다.


  • 이 대답은 약간 혼란 스럽습니다. - mac
  • yes 대답은 @ Basil Bourque가 " Coyote는 웹 서비스를 담당하는 Tomcat의 모듈이며 Catalina는 Servlets을 수행하는 모듈입니다. Jasper는 JSP를 처리하는 모듈입니다 " 이제는 "TOMCAT FEATURES Java Servlet 및 JSP 페이지를 실행하도록 사용자 정의 된 웹 서버와 동일한 방식으로 명확하게 설명합니다. !!!! " - Dev

연결된 질문


관련된 질문

최근 질문