# 서버 관련 개념

1. 서버

요청을 보냈을 때 답신을 주면 그게 서버임. 그 형식이 tcp면 tcp 서버인거고 http면 웹서버임.


여기서 요청을 보내는 쪽이 클라이언트, 요청을 받는 쪽이 호스트임.


그래서 내 pc에서 서버를 띄우면 localhost라고 뜨지? 

클라이언트(크롬) -> 웹서버(내pc) 여서 로컬호스트라고 하는 거임.


여기서 그러면 서버를 띄워놓은 컴퓨터를 어떻게 찾냐 하면 IP 주소로 찾음.



2. 포트

서버컴퓨터는 IP주소로 찾으면 되는데 그거 찾았다고 안끝남. 요청을 받는 프로그램을 찾아야함. 택배 받을 때 몇 동 몇 호 적는거라 생각하면 됨. 


많이 쓰는거는 80(HTTP), 443(HTTPS), 22(SSH)번이 있음.



2.1 방화벽

포트 열어 놓을거 지정하는 거임. 보통 위에 3개 빼놓고 막아버림.



3. 웹서버

아까 위에서 서버는 요청 보내면 답신 준다 했지? 웹서버는 정해진 것만 답신을 줌. 


보통 html 파일을 돌려주거나 아니면 그림이나 엑셀파일 등 여러가지를 뱉을 수 있는데 중요한건 이미 만들어져 있는 파일이나 값만 뱉을 수 있다는거임.


대표적인 프로그램으로는 nginx, 아파치 HTTP 서버 등이 있는데 1황은 nginx임. 나도 nginx 밖에 안 써봄.



4. WAS 

웹 어플리케이션 서버의 약자임. 이미 만들어진 파일을 뱉을 수만 있는 웹 서버와 달리 '어플리케이션' 즉, 프로그램으로서 기능이 돌아감. 

값을 계산 해서 뱉어주거나 DB에 저장된 값을 조회해서 가져오거나 클라이언트에서 올린 파일을 저장하거나 하는게 WAS 역할임.

어플리케이션으로서 역할을 해야해서 자바나 C#, php 등을 사용하는 거임.  여기서 서버 역할로 많이 쓰는게 스프링부트에 붙어있는 톰캣임. 



5. DB 

데이터베이스. 이건 설명 안해도 다들 알 듯. 저장소라고 생각하면 편함.




# 서버 올려보기

일단 오해 하나 풀고가면 리눅스≠서버. 

리눅스랑 서버는 별개다. 리눅스는 서버 프로세스가 동작하는 컴퓨터의 OS고 그 자체가 서버는 아니다. 


여튼 그래서 서버를 띄울 때 굳이 리눅스로 안띄워도 된다. 그냥 지금 쓰는 컴퓨터에 nginx 깔아서 실행하면 그 컴퓨터가 서버가 된다. 참 쉽죠?