Apache HTTP Server와 Apache Tomcat의 차이점은 무엇입니까? [닫은]


637

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

Tomcat은 Java로 작성되었고 HTTP Server는 C로 작성되었지만 다른 점은 실제로 어떻게 구별되는지 알지 못합니다. 서로 다른 기능이 있습니까?


12
: 내 블로그에 요약을 추가 한, 어쩌면 누군가 도움이 tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html
— Koray 투 케이

36
나는 OP가 무엇을 요구했는지 정확히 궁금해했으며 왜 닫혔는지 알 수 없습니다. 다행히 답변이 있습니다.
— Florian F

4
Apache 웹 서버와 Apache Tomcat은 서로 다른 용도로 조정 된 두 가지 도구입니다. 더 이상 사실과 전문 지식으로 유스 케이스를 구별 할 수 없다면 미안한 상태가됩니다. "논쟁적인"질문을 끝내기위한이 드라이브는 너무 많이 도달했습니다. 아마도 중재자는 더 많은 정보를 얻고 의견이 덜 필요합니다. @FlorianF가 말했듯이 적어도 지금은 대답이 있습니다.
— NeilG

2
업 보트의 수를 감안할 때 이것은 폐쇄되어서는 안되며 대신 잠겨 있어야합니다. 실제로 유용한 답변이있는 매우 좋은 질문입니다.
— simbro

closed이 질문에 대한 통지는 답변에 객관적인 내용이 있어야하지만 대신이 질문이 주관적 답변 내용을 생성 할 것으로 기대하고 있습니다. 대부분의 답변은 주관적이 아닌 객관적 내용 (특히 투표가 높은 답변)을 포함하는 것으로 보입니다. 닫혀 있어야합니다. 주관에 대한 두려움은 실제로 일어나지 않았으며, 나는 그 질문이 처음에 주관적 일 위험이 있다는 것에 동의하지 않는다.
— cellepo

답변:


475

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

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

Tomcat에는 서블릿 컨테이너 인 Catalina가 포함되어 있습니다. 마지막에 서블릿은 Java 클래스입니다. JSP 파일 (PHP와 유사한 이전 ASP 파일)은 Java 코드 (HttpServlet)로 생성 된 다음 서버에서 .class 파일로 컴파일되어 Java 가상 머신에서 실행됩니다.


51
"아파치가 [...] HTTP 제공"이란 무엇입니까? Tomcat이 HTTP (하이퍼 텍스트)를 제공하지 않습니까? Tomcat이 단순히 "mod_java"Apache 모듈이 될 수없는 이유는 무엇입니까? 설명 할 수 있습니까?
— Peterino

30
Tomcat은 서블릿 컨테이너입니다. 마지막에 서블릿은 Java 클래스입니다. JSP 파일 (PHP 또는 ASP 파일과 유사)은 Java 코드 (HttpServlet)로 생성 된 다음 서버에서 .class 파일로 컴파일되어 Java 가상 머신에서 실행됩니다. -그 외에도,이 포럼은 Apache HTTPD와 Tomcat의 차이점을 잘 설명합니다 : coderanch.com/t/85182/Tomcat/…
— Peterino

17
Tomcat은 실제로 가능한 웹 서버를 가지고 있습니다. Tomcat은 Servlet / JSP 컨테이너 이며 웹 서버도 제공합니다. Tomcat의 웹 서버는 매우 훌륭하여 대부분의 중소 웹 사이트 요구를 처리 할 수 ​​있습니다. Java NIO 및 64 비트 메모리를 지원하면 Tomcat의 Catalina 모듈이 일부 더 큰 규모의 웹 사이트를 제공 할 수도 있습니다. 여러 가지 이유로 일부 사람들은 Catalina를 무시하고 대신 Apache httpd웹 서버 제품 뒤에 Tomcat의 서블릿 기능을 사용 합니다.
— Basil Bourque

21
내 의견 수정 : 코요테는 Tomcat의 웹 서비스를 담당하는 모듈입니다. 카탈리나는 서블릿을 수행하는 모듈입니다. Jasper는 JSP를 처리하는 모듈입니다.
— Basil Bourque

17
@KorayTugay 예. Tomcat = ( Web Server + Servlet container + JSP environment ). Tomcat의 startup.sh스크립트 를 실행하면 포트 8080에서 수신 연결 (HTTP 호출)을 수신 대기하면서 웹 서버가 기본적으로 켜져 있습니다. Tomcat은 자체 웹 서버 구현 (Coyote)을 갖춘 순수한 Java입니다. 반면 Apache HTTP Server (AHS)는 네이티브 C / C ++ 코드를 사용하여 웹 서버를 완전히 별도로 구현합니다. AHS는 매우 유연하고 강력하지만 종종 과도합니다. Tomcat의 자체 웹 서버는 매우 잘 작동합니다. 꼭 필요한 경우에만 AHS를 사용하십시오.
— Basil Bourque

118

위의 훌륭한 답변 외에도 Tomcat에는 자체 HTTP 서버가 내장되어 있으며 정적 콘텐츠도 제공하는 데 완벽하게 작동한다고합니다. Java 가상 머신 구성에 따라 실제로 mod_proxy 및 mod_jk와 같은 아파치의 기존 커넥터보다 성능이 뛰어납니다.

즉, 완전히 최적화 된 Tomcat 서버는 정적 파일을 빠르게 제공해야하며 정적 컨텐츠 외에 Java 서블릿, JSP 및 ColdFusion 파일이있는 경우 Tomcat 자체가 훌륭한 작업을 수행 할 수 있습니다.


3
진실. 그리고 많은 사람들이 여전히 Tomcat 외에 추가 Apache 설정을 사용합니다. 대부분의 경우 필요하지 않습니다.
— Marco Schoolenberg

6
아파치 http의 가장 강력한 부분은 응용 프로그램이 요청을보기 전에 mod_rewrite엔진 및 조건부 환경 주입을 통해 요청을 다시 작성하고 다시 쓰는 기능 입니다. mod_proxy기본로드 밸런싱을 제공합니다 (mod_jk와 결합하면로드 밸런싱 된 Tomcat 인스턴스간에 기본 고정 세션 / 공유 상태를 제공함).
— cowbert

81
  1. Apache는 범용 http 서버이며 Tomcat이 지원하지 않는 여러 가지 고급 옵션을 지원합니다.
  2. Tomcat을 범용 http 서버로 사용할 수 있지만 Apache와 정적 컨텐츠를 제공하고 동적 컨텐츠 요청을 Tomcat에 전달하는 Apache와 함께 작동하도록 Apache 및 Tomcat을 설정할 수도 있습니다.

모든 웹이 마지막에 정적이지 않습니까? 내 이해는 Tomcat이 "동적"정적 컨텐츠를 생성하면 Apache가이를 제공한다는 것입니다. 따라서 Tomcat은 실제로 동적 콘텐츠 또는 기타 서비스를 제공하지 않으며 필요할 때만 생성합니다.
— Koray Tugay

11
@KorayTugay 용어를 혼동하고 있습니다. "필요한 경우 생성"은 "동적"의 의미와 "정적"의 반대입니다. Apache HTTP Server의 주요 목적은 정적 컨텐츠를 제공하는 것이며 Servlet 기술의 주요 목적은 즉석에서 컨텐츠 (동적 컨텐츠)를 생성하는 것입니다.
— Basil Bourque

1
@BasilBourque 나는 Tomcat이 실제로 콘텐츠를 제공하는 것과 혼동되었습니다. 컨텐츠 만 생성하며 Apache Http Server와 함께 사용하면 컨텐츠를 제공하지 않습니다. 아마도 당신이 옳고 혼란 스러울 수 있지만 필자는 Apache 서비스를 함께 사용할 때 Tomcat이 필요할 때 정적 컨텐츠를 생성한다고 여전히 말하고 싶습니다. Apache를 사용하지 않으면 Tomcat의 Coyote가 서빙을 수행하는 반면 Catalina와 Jesper는 동적 컨텐츠를 생성합니다.
— Koray Tugay

3
@KorayTugay 네, 마지막 코멘트는 정확합니다. Apache HTTP Server + Tomcat을 사용하는 경우 웹 브라우저는 Tomcat이 커튼 뒤에서 작동하고 있다는 단서없이 AWS 만 "참조"합니다. AWS는 웹 브라우저 클라이언트와 Tomcat의 중개자입니다. Tomcat 만 사용하는 경우 Tomcat의 Coyote 모듈은 AWS를 대신하여 웹 브라우저 클라이언트의 요청을 필드로 처리합니다. AWS가 더 잘 해결할 수있는 매우 특별한 요구 사항이있는 경우가 아니면 후자 (Tomcat 만 해당)를 권장합니다.
— Basil Bourque

29

Tomcat은 주로 애플리케이션 서버로, 서버에서 사용자 정의 빌드 된 Java 서블릿 또는 JSP 파일에 대한 요청을 제공합니다. 일반적으로 Apache HTTP 서버와 함께 사용됩니다 (적어도 내 경험으로는). 수신 요청을 수동으로 처리하는 데 사용하십시오.

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


9
나는 Tomcat is primarily an application server진술을 의심한다 .
— Rachel

6
바람둥이는 주로 의미 하는 응용 프로그램 서버가 될 수 있습니다. 그것은 비록 않습니다 뿐만 아니라 서버의 정적 컨텐츠를.
— 확장

4
예 Tomcat은 주로 웹 서버에 전달되는 동적 컨텐츠를 생성하는 서블릿 컨테이너의 의미로 사용되는 경우 실제로 애플리케이션 서버입니다. 첫 번째 서블릿 컨테이너 중 하나 인 Tomcat이 그 이유입니다.
— Basil Bourque

1
tomcat은 응용 프로그램 서버가 아니며 웹 서버입니다. javajee.com/web-server-web-container-and-application-server
— Mishra

@PrateekMishra 귀하가 제공 한 링크에 근거하여 tomcat이 웹 서버 라는 진술 이 잘못되었습니다. 서블릿 컨테이너 라고도 하는 웹 컨테이너 (주로) 입니다.
— skomisa

21

아파치 서버는 간단한 http 요청을 처리 할 수있는 http 서버이며, 여기서 Tomcat 서버는 실제로 Java 서블릿 요청을 처리 할 수있는 서블릿 컨테이너입니다.

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

또한 더 자세한 설명을 위해이 링크를 확인할 수 있습니다.

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

추가 연구를 위해이 답변을 확인하십시오.

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


sites.google.com/site/sureshdevang/servlet-architecture 여기에 설명 된 것처럼 더 잘 볼 수 있습니다
— Akitha_MJ

13

웹 응용 프로그램을 만들기 위해 Java 기술 (Servlet / JSP)을 사용하는 경우 Apache Tomcat을 사용할 수 있습니다. 그러나 Perl, PHP 또는 ruby와 같은 다른 기술을 사용하는 경우 Apache HTTP Server를 사용하는 것이 좋습니다.


9
이 대답은 나에게 이해가되지 않습니다. 첫 번째 문장은 Tomcat 외에도 Jetty, JBoss / Wildfly, Glassfish, WebSphere 등과 같은 매우 유명한 다른 Servlet / JSP 컨테이너가 있다는 점에서 잘못되었습니다. Tomcat은 인기가 많지만 소수의 시장 점유율만으로도 지배적이지는 않습니다. 두 번째 문장에서 Tomcat은 종종 Apache HTTP Server 뒤의 서블릿 컨테이너로 사용됩니다. 그리고 PHP 등은 종종 Nginx, Lighttpd 등과 같은 다른 여러 웹 서버 와 함께 사용됩니다 .
— Basil Bourque

3

Apache는 HTTP 웹 서버이며 Tomcat은 Servlet 및 JSP의 웹 서버이기도합니다. 또한 Apache는 실시간으로 Apache Tomcat보다 선호됩니다.


19
이 질문은 매우 오래되었으며, 귀하의 답변은 오래 전에 게시 된 질문과 중복되는 것 같습니다. 답변은 높이 평가되지만 새로운 답변은 대화에 도움이 될 것입니다.
— GargantuChet

-2

Apache는 HTTP 역할을하는 HTTP 웹 서버입니다.

Apache Tomcat은 Java 서블릿 컨테이너입니다. 웹 서버와 동일하지만 Java 서블릿 및 JSP 페이지를 실행하도록 사용자 정의됩니다.


1
@ Basil Bourque가 "Coyote는 웹 서비스를 담당하는 Tomcat의 모듈이고 Catalina는 서블릿을 수행하는 모듈이고 Jasper는 JSP를 처리하는 모듈"입니다. 자바 서블릿 및 JSP 페이지를 실행하도록 사용자 정의 된 웹 서버로 !!!! "
— Dev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.