[새싹x코딩온] 풀스택 개발자 부트캠프 과정 4주차-1 회고 | Server
서버(Server)
서버란 클라이언트에게 네트워크를 통하여 서비스를 제공하는 컴퓨터 이며 요청과 응답을 통해 서비스를 제공합니다
서버는 백엔드와 밀접한 연관이 있는데 백엔드는 클라이언트의 요청을 서버컴퓨터가 응답 할 수 있도록 서비스를 설계하는 역할을 합니다
요청(request) : 클라이언트가 서버에 요청을 하는것
응답(response) : 서버가 클라이언트의 요청에 응하여 데이터를 반환하는 것
프로토콜
프로토콜은 클라이언트와 서버의 통신규약이며 한마디로 약속이라고 할 수 있습니다
이 프로토콜은 숫자로 이루어져 있으며 대표적으로 사용하는 포트의 경우 이름이 정해져있습니다 예로 http(80), ftp(21) 등등 보통 폐쇄적인 서비스에선 보안을 위해 별도의 비공식 포트를 지정해 프라이빗하게 서비스하는 경우도 종종 있다고 들은 것 같습니다 특히 보안이 매우 중요한 서비스에선 MySQL같은 포트는 따로 지정하여 사용했던 경험이 있는데요 3306이 기본 포트이나 다른 번호를 지정해서 사용한 경험이 있습니다 왜냐면 내가 만드 프로그램에서만 커넥션 이루어 질 것이기때문에 굳이 기본값으로 둬서 불필요한 보안이슈를 만들 필요가 없기때문에!
서버구축
서버구축 방법은 다양한 방법이 존재하는데 서버호스팅, 웹호스팅, 클라우드 호스팅 등이 존재합니다
서버호스팅의 경우 웹호스팅 업체의 IDC의 컴퓨터를 통채로 임대하는 방식입니다 그렇기때문에 다른 서비스에 비해 많은 자원을 사용할 수 있고 서버환경을 마음대로 설정할 수 있다는 큰 장점이 있습니다 다만 높은 유지비용, 서버설정에 관한 지식이 필요하다는 단점이 존재합니다
웹호스팅
서버컴퓨터의 일정 공간음 임대하는 방식입니다 그렇다 보니 서버로 접속하는 일일용량(트래픽)과, 업로드 가능한 용량이 한정적이며 서버환경을 마음대로 설정할 수 없다는 제약이 있지만 유지비가 저렴하고 간편하다는 장점이 있습니다 리더님께서 아파트로 비유를 해주셨는데 굉장히 쉽게 이해할 수 있는 접근방법으로 설명 해주셔서 확 깨닫게 됐습니다 설명이 이렇게 중요합니다..
서버호스팅 = 아파트동 전체임대
웹호스팅 = 아파트의 호실임대
클라우드
서버셋팅에 소요되는 시간이 짧으며 자원 제약이 없습니다 필요한 만큼 사용할 수 있어 비용적인 측면에서도 유리합니다 서버호스팅과 웹호스팅의 장점을 모아 만들어진 서비스라고 볼 수 있습니다 대표적인 클라우드 서비스는 AWS(아마존), Azure(MS), GCP(구글), NCP(네이버)가 있습니다 국내 및 글로벌 점유율은 AWS가 많습니다
서버와 클라이언트
서버와 클라이언트의 개념에대해 이해해봅시다 서버란 특정한 서비스 및 정보를 제공하는 프로그램입니다 그렇기 때문에 방대한 데이터를 저장하고 있고 이 데이터를 필요로 하는 프로그램이 있을겁니다 바로 이 데이터를 필요로 하는 프로그램들을 클라이언트라고합니다 즉 서버는 응답을하고 클라이언트는 요청합니다 이런 구조는 우리의 일상에서도 볼 수있는데요 비유를 해보자면 점심에 식사를 하러 서브웨이 방문했습니다 그리고 직원에게 요청합니다 요청하는 순간부터 저희는 클라이언트입니다
나(클라이언트 요청): 이탈리안 비엠티 주세요
직원(서버 응답): 네 빵은 어떻게 하시겠어요?
나(클라이언트 요청): 호밀빵으로 주세요
직원(서버 응답): 빵은 호밀빵 채소는 어떻게 하시겠어요?
나(클라이언트 요청): 양상추와 양파만 주세요
직원(서버 응답): 야채는 양상추 양파 소스는 어떻게 하시겠어요?
나(클라이언트 요청): 베바큐소스에 후추, 올리브오일로 주세요
직원(서버 응답): 네 여기요 안녕히가세요
직원(서버 응답): 매장을 나감(서버와 연결종료)
즉! 클라이언트는 요청을 보내고 서버는 그 요청을 처리해서 필요한 정보를 보내주는 관계라고 생각하면 될 것 같습니다
IP Address
IP란 인터넷상에서 데이터를 주고받기 위한 통신 규약입니다 세상은 인터넷으로 연결되어 있고 각각 디바이스마다 인터넷이라는 통신규약에 접속하게되면 고유한 아이피를 배정받습니다 이 아이피는 세계에서 나만 보유한 아이피가됩니다 즉 미국에서도 내 컴퓨터에 접근할 수 있고 심지어 달에서도 일론머스크의 스타링크가 내 디바이스기기를 인터넷을 연결해준다면 접속이 가능할겁니다 쉽게 말하면 내 집주소와같다고 보시면됩니다 세상에 똑같은 집주소는 존재하지 않듯 고유한 값입니다 세상이 발전함에 따라 인터넷에 접속하는 기기들이 점차 많아지게 되고 IPv4로 배정할 수 있는 아이피수가 고갈되어 IPv6 기술이 새로 도입되었습니다 기존 32비트 8비트씩 끊어 0~255 사이의 자리로 배정하던 아이피를 128비트 16비트씩 끊어 나열한 아이피입니다
공인IP와 사설 IP
세상은 굉장히 많은 디바이스 기기들이 존재합니다 스마트폰, PC 뿐만 아니라 프린터, TV, 냉장고, 공기청정기, CCTV 등 이처럼 내손에 닿지않는 전자기기에 접근할 수 있는 모든 기기들은 인터넷에 연결되어있습니다 그렇기 때문에 그 기기에 관한 정보를 볼 수있는것입니다 앞서 말했듯 1인당 이렇게 많은 전자기기를 사용할때 IP4 방식으로 아이피를 배정하게되면 더이상 배정할 수 있는 아이피가 없기때문에 고갈이라는 큰 문제에 부딪히게 되는데 이 문제를 보완하기 위해 나온 방안이 공인 IP와 사설 IP입니다
쉽게 설명하자면 공인 IP는 외부에 노출된 아이피이고 사설 IP는 가상 IP입니다
공인아이피는 우리가 배정받은 고유한 아이피입니다 외부의 다른 PC에서 접근이 가능한 아이피이고 사설IP는 공인IP 내부에 있는 가상으로 배정된 IP입니다 부모와 자식관계라고 봐도 될진 모르겠지만 딱히 떠오르는 이미지가 부모>자식 이라고밖에 설명할 수 없을것같습니다 사설 IP들 중 외부의 접근이 필요할 경우 포트포워딩 이라는 네트워크 장비를 통하여 접근이 가능한데 궁굼하다면 내용이 길어 네트워크에 대해 공부를 별도로 해야합니다
유동IP 와 고정IP
단어에서 유추할수있듯 바뀌는 IP와 바뀌지않는 IP입니다 일반 가정에서 사용하는 아이피는 유동IP입니다 즉 통신사의 아이피배정서버에서 설정한 주기로 아이피가 바뀌게됩니다 반대로 고정IP는 통신사가 고정적으로 부여한 IP로 컴퓨터를 꺼도 바뀌지않는 아이피입니다 보통기업이나 서버같은 기기에 아이피를 부여할때 사용하며 일반 가정집에서도 통신사에 돈만 더 주면 신청가능합니다
PuTTY
로그인 - ubuntu 입력
//sudo 관리자권한
//어떤 프로그램을 설치할수잇는지 가져오기
# sudo apt-get update
//nginx 설치
# sudo apt-get install nginx
//방화벽 열기
//nginx 파일질라 권한 주
sudo chown -R ubuntu:ubuntu /var/www/html
//nginx 파일질라 권한 삭제
sudo chown -R root:root /var/www/html
//현재경로
pwd