요즘 노드기반의 웹서버와 아파치 기반의 웹서버를 사용하면서
서버개념이 많이 흔들리고 있어서 정리를 할 겸 공부도 할 겸 해서 해당 글을 쓰게 되었다.
=====================================================================
Web 서버란 ?
HTTP 프로토콜을 통해 클라이언트(웹브라우저)의 요청 정보를 받아 처리하고 그 결과를 다시 클라이언트에 보내는 역할을 함.
클라이언트가 요청하는 자원(리소스)을 URL(Uniform Resource Locator)형태로 받아 내부 파일시스템과 매핑하여 처리하거나,URL과 입력 값을 함께 받으면 사전에 약속된 처리를 한 후 그 결과를 클라이언트에 전달한다.
ex) 아파치(Apache), 엔진엑스(nginx), ISS(Internet Information Services)
WAS(Web Application Server) 란 ?
클라이언트/서버 환경에서 트랜잭션 처리 및 관리와 애플리케이션 실행 환경을 제공하는 미들웨어 소프트웨어서버
애플리케이션 실행 환경과 데이터베이스 접속 기능을 제공하고, 트랜잭션을 관리하며, 업무를 처리하는 비즈니스 로직을 수행
동적 서버 콘텐츠를 수행
* 단순히 이론적으로 web서버는 정적인 컨텐츠를 제공하고 was서버는 동적인 컨텐츠와 DB연결을 할 수 있다.
정도만 알고 사실 개발 들어갈때 딱히 내가 서버를 세팅하지는 않으니.. 소스 잘 빌드하고 화면에 뿌려주면 잘 나오니 그렇게만 알고 있어서... 서버에 대한 관리나 그런 문의가 들어오면 사실 멘붕이 오고 헐레벌떡 검색해서 답을 찾는다.
일단 내가 개념이 부족하고 헷갈렸던 이유를 찾았다. 나는 거의 아파치톰캣서버 환경에서 개발을 하다보니 하나로 뭉퉁그려서 개념이 잡혀있다......
이제부터 하나씩 짚고 넘어가보자.
apache란?
- http 웹서버 : http요청을 처리하는 웹서버. 즉 클라이언트가 get,post,delete등의 메소드를 이용해 요청을 하면 이프로그램이 어떤 결과를 돌려주는 기능을 한다.
모든화면에 대해서 html리소스들을 서버에 올라가 있어서 서버 자원들이 커짐
tomcat이란?
- 흔히 WAS(Web Application Server)라고 일컫는다.
Servelet Container라는 개념(동적 웹서비스를 가능하게 함)이 추가되었다.
apache tomcat server란 ?
WEBServer + WAS Server
아파치 톰캣 서버는 WEB서버와 WAS서버 두개 다 동작하는 서버구성
정적인처리 = apache(web서버)
동적인처리 = Tomcat(was서버)
컨테이너 - 웹서버에서 동척요청을 받으면 쓰레드를 생성함
그 요청에 대한 정보로 httpServletRequest 객체와 httpServletResponse라는 빈 객체와 쓰레드를 생성한다.
Web.xml 파일에 접근해 이 요청을 어디에서 처리하는 지 알아가지고 온다.
그 요청을 처리하는 부분이 Servlet,
담당 servelet을 찾아내면 그 서블릿에서 doGet(), doPost()함수를 실행시킨다.
즉 httpServletRequest에서 전달 받은 데이터들로 새로운 동적페이지를 생성하는 것
결과 페이지는 httpServletResponse 객체에 담아놓고 작업이 완료되면 다시 WEB한테 보냄
WEB은 HTTP(80포트)만 다루기 때문에 HttpResponse형태로 가공하여 WEB에 던져줌
던짐과 동시에 httpServletRequest 객체와 httpServletResponse라는 객체와 쓰레드는 소멸시키고 httpResponse를 받았던 WEB은 그 와중에 그걸 사용자에게 전달하고 요청이 완료되는것.
WEB 서버인 apache 는 80
was 서버 톰캣은 8080
apache와 톰캣사이는 ajp 라는 8009 포트
방화벽 알아봐이지