[Spring] CH05 서버 (책)

jaegeunsong97·2023년 2월 18일
0

[Fast Campus] Spring

목록 보기
6/44
post-thumbnail

📕 서버

서버는 '제공한다'는 뜻을 가진 'serve'에 사람이라는 뜻을 나타내는 'er'을 붙인 단어이다. 위의 사전의 뜻을 보면 공통적으로 뭔가를 제공한다는 것을 알 수 있다. 컴퓨터에서는 서버는 클라이언트에게 여러 가지 서비스를 제공하는 것을 뜻한다.

통신을 하지 않는 서버도 있다. 단지 서버는 자원을 가지고 있고, 그것을 어떠한 방법으로든 공유할 수 있으면 된다. 하지만 웹 서버는 HTTP 통신을 통해 자원을 공유하고, 그에 따른 규약을 가진다.

📕 논문 공유

📜 CERN 입자물리 연구소 - 전세계 과학자들이 연구하고 논문을 쓰는 곳

📜 논문 작성 방법에 대한 일관성 필요 (종이, 프로그램등등..)

📜 논문을 읽는 공통된 프로그램 필요

📜 전 세계 흩어져 있는 논문을 쉽게 공유할 수 있는 방법이 필요

📜 WWW 프로젝트 시작

📕 HTML

HTML (Hypertext Markup Language,하이퍼텍스트 마크업 언어)는 프로그래밍 언어는 아니고, 우리가 보는 웹페이지가 어떻게 구조화되어 있는지 브라우저로 하여금 알 수 있도록 하는 마크업 언어입니다. 이는 개발자로 하여금 복잡하게도 간단하게도 프로그래밍 할 수 있습니다. HTML은 elements로 구성되어 있으며, 이들은 적절한 방법으로 나타내고 실행하기 위해 각 컨텐츠의 여러 부분들을 감싸고 마크업 합니다.

HTML의 탄생으로 논문 작성 방법에 대한 일관성 생김.

📜 Hypertext - a태그를 통해 문서를 읽으면서 참고 자료를 확인할 수 있다

📜 Markup Language - 문자 앞 뒤로 마크를 하여 감싸는 언어, 즉 문자의 특징을 표시하는 언어

📕 웹 브라우저

브라우저란 웹 페이지, 이미지, 비디오 등의 콘텐츠를 수신, 전송 및 표현하는 소프트웨어다.

브라우저의 탄생으로 HTML로 작성된 문서를 표현(해석 or 렌더링)할 수 있게 됨.

📕 URL

URL(Uniform Resource Locator)이란 사용자가 원하는 정보의 위치와 종류를 파악할 수 있도록 웹페이지의 정보 구조를 반영한 것이다.

URL의 탄생으로 서버가 들고 있는 자원을 외부에 노출시킬 수 있는 표기법을 발견함.

📕 HTTP(Hyper Text Transfer Protocol)

HTML파일을 가진 웹서버 컴퓨터가 어떻게 HTML을 필요로 하는 클라이언트에게 정보를 전달할 것인가
에 대한 형식과 방법에 대해 정의되어 있다.

HTML을 송수신하는 규약을 만들고, 해당 규약을 바탕으로 HTML 파일을 공유할 수 있게 되었다.

📜 최초의 HTTP 프로토콜

웹서버는 수동적인 애플리케이션이다.

  • 웹서버는 갑이라는 뜻!! (자원을 가지고 공유할 준비를 하고 있다)

클라이언트는 필요로 하는 자원이 있을 때, URL 요청을 통해 웹서버에게 HTML 파일을 요청한다.
이것을 GET 요청이라고 한다.

🔔 순서

  1. 클라이언트는 서버의 서버소켓에게 연결을 요청한 뒤, 서버소켓은 새로운 소켓을 만들고 클라이언트와연결된다. 클라이언트는 BufferedWriter를 생성한 뒤, 요청에 내용을 웹서버에게 전송한다. 이를 요청(Request)이라고 하고 URL을 사용한다.
  2. 웹서버는 BufferedReader를 생성한 뒤, 요청에 대한 내용을 읽는다. 이때, URL을 파싱(분석)한다.
  3. 분석된 URL을 바탕으로 HTML 자원을 찾는다.
  4. 찾은 HTML 파일의 내용을 파일에 연결된 소켓에 BufferedReader를 달고 읽어드린다.
  5. 읽어드린 HTML 파일을 클라이언트쪽에 연결된 BufferedWriter에 담는다.
  6. 최종적으로 flush하여 클라이언트에게 전송한다. 이를 응답(Response)이라고 한다.
  7. 정보가 응답되면 더 이상 소켓을 유지할 필요가 없기 때문에 소켓을 닫는다.

클라이언트는 다시 자원 요청이 필요하면 새로운 GET요청을 해야 한다. 그 이유는 웹서버로부터 정보를 응답받은 뒤 소켓이 유지되지 않기 때문이다. 이렇게 클라이언트의 상태를 저장하지 않는 서버를 stateless 무상태 서버라고 한다.

📕 아파치/톰켓

📜 아파치 웹서버

아파치는 웹서버이다. 단순히 브라우저가 이해할 수 있는 파일을 HTTP 프로토콜을 통해 공유하는 소프트웨어이다.

현재의 HTTP 프로토콜은 GET 요청만 있지 않다.

🔔 HTTP 프로토콜

📐 GET (SELECT)

📐 POST (INSERT)

📐 PUT (UPDATE)

📐 DELETE (DELETE)

📜 톰켓 웹 애플리케이션 서버

🔔 특징

  • html 파일은 정적인 파일이다. 100번을 요청해도 동일한 결과를 응답한다.
  • html 코드에 Java 언어를 섞어 만든 파일을 JSP(Java Server Page)라고 한다.
  • 클라이언트는 웹 브라우저를 통해 웹서버에게 JSP 파일을 요청할 수 있다.

📕 아파치 톰켓 실습

📜 아파치 실습

아파치를 설치합니다.

📜 아파치/톰켓 실습

톰켓을 설치합니다.

🔔 톰켓 설정 변경 및 알아보기

📐 PORT 변경

📐 WelcomeFileList 변경

📐 ThreadPool 변경

📐 HTTP 프로토콜 버전 확인

📐 HTTPS 서버 설정 (RSA) 확인

📐 Host appBase 확인

📐 unpackAARs 와 autoDeploy 확인

📜 war 파일 배포해보기

🔔 server.xml 에 Context docbase 설정

conf/server.xml

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
	<Context docBase="myapp-0.0.1-SNAPSHOT" path="/" reloadable="true" />
</Host>

🔔 myapp-1.0.war 파일 배포

myapp-1.0.war 파일을 아파치/톰켓을 start한 상태에서 webapps 폴더에 배포해보자. (복사 붙여넣기)

🔔 브라우저로 요청해보기


profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글