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.