# 웹 서버 공부

- Author: @kimyoungjo
- Published: 2019-10-04
- Updated: 2019-10-04
- Source: http://blex.me/@kimyoungjo/%EC%9B%B9-%EC%84%9C%EB%B2%84-%EA%B3%B5%EB%B6%80
- Tags: 서버, 백엔드, 웹서버

---

# 1. Web server의 종류

## 1-1 static web server
static(정적) web server의 특징은 서버가 호스팅 된 파일을 "있는 그대로" 브라우저로 보내므로 이를 정적 이라고함.
## 1-2 dynamic web server
dynamic web server은 static web server와 extra software로 구성되어있습니다. ex) 응용프로그램 서버, 데이터베이스
우리가 이것을 동적이라고 표현하는 이유는 응용프로그램 서버가 호스팅된 파일을 받을때마다 HTML서버를 업데이트하기 때문입니다. 

# 2. Web server의 동작
web page를 가져오려면 브라우져는 web server에 요청하여 자체 스토리지에 저장된 데이터 중 요청받은 데이터를 검색합니다.
파일을 찾으면 서버는 파일을 읽고 필요에 따라 처리를 한 다음 브라우저로 보냅니다. 이 과정을 좀 더 세분화 해보겠습니다.

## 2-1 Hosting File
웹 서버는 먼저 웹 사이트의 파일, 즉 이미지, CSS 스타일 시트, JavaScript 파일, 글꼴 및 비디오를 포함한 모든 HTML 문서 및 관련 자산을 저장해야합니다. 물론 기술적으로 우리는 모든 파일을 컴퓨터에 호스팅이 가능하지만 전용 웹 서버에 모든 파일을 저장하는 것이 훨씬 편리합니다. 그 이유를 정리해보면,

1. 항상 가동되고있다.
2. 인터넷에 항상 연결되어있다.
3. 항상 동일한 ip주소를 가진다.
4. 제 3자에 의해 유지, 관리된다.

이러한 특징 중 가장 중요한 것은 4번 제 3자에 의해 유지, 관리되는 부분이다. 저 제 3자가 굉장히 중요한 요소가 될 것입니다.
저 제 3자는 다양한 서버제공 회사들 중 자신의 필요에 맞게 잘 선택하여야 합니다.

## 2-2 HTTP
web server는 HTTP를 지원합니다. HTTP는 두 컴퓨터간에 하이퍼텍스트를 전송하는 방법을 지정합니다.
Protocol은 두 컴퓨터간의 통신 규약입니다. HTTP는 텍스트형식의 저장 protocol입니다.

HTTP의 3가지 규칙

1. 클라이언트 만 HTTP 요청을 만들 수 있으며 서버로만 보낼 수 있습니다. 서버는 클라이언트의 HTTP 요청에만 응답 할 수 있습니다.
2. HTTP를 통해 파일을 요청할 때 클라이언트는 파일의 URL을 제공해야합니다.
3. web server는 적어도 모든 오류 메시지에 응답해야합니다.

웹 서버에서 HTTP 서버는 들어오는 요청을 처리하고 응답하는 일을 담당합니다.
요청을 받으면 HTTP 서버는 요청 된 URL이 기존 파일과 일치하는지 먼저 확인합니다.
그렇다면 웹 서버는 파일 내용을 다시 브라우저로 보냅니다. 그렇지 않은 경우 응용 프로그램 서버는 필요한 파일을 빌드합니다.
어느 프로세스도 가능하지 않으면 웹 서버는 가장 일반적으로 404 Not Found라는 오류 메시지를 브라우저에 반환합니다. (그 오류는 너무나 흔하며 많은 웹 디자이너들이 404 오류 페이지를 디자인하는데 상당한 시간을 투자합니다.)

## 2-3 정리
대충 말하면 서버는 정적 또는 동적 컨텐트를 제공 할 수 있습니다. "정적"은 "제공된 그대로"를 의미합니다. 정적 웹 사이트를 설정하는 것이 가장 쉽기 때문에 첫 번째 사이트를 정적 사이트로 만들 것을 권장합니다 
"동적"은 서버가 콘텐츠를 처리하거나 심지어 데이터베이스에서 즉시 생성하는 것을 의미합니다. 이 솔루션은 더 많은 유연성을 제공하지만 기술 스택을 처리하기가 더 어려워지므로 웹 사이트 구축이 훨씬 복잡해집니다
## 2-4 centOS로 첫 서버 구축 시작
centOS 리눅스로 서버구축을 해 볼 예정인데 그 전에 간단하게 웹 서버의 개념을 다시한번 정리해보았다. 이론상으로는 어느정도 알겠는데 역시 직접 다뤄보면서 익힐 수 있도록 하여서 면접 및 실무에 대비해야 해야 할 것이다.
