학습 목표
- 서버의 정의와 역할을 이해한다.
- 서버의 구성요소과 각 요소와의 관계를 이해한다.
- 서버가 어떻게 구축되는지 이해한다.
- 서버와 관련된 개념들을 이해한다.
핵심 개념 키워드
- 서버와 서비스
- 서버 : 네트워크에서 데이터를 주는 컴퓨터, 서비스를 제공하는 쪽
- 서비스: 이메일서비스, 게임서비스 등 서버에서 제공하는 것
- 클라이언트 - 서버 관계 클라이언트- 서비스를 서버에 요청하고 받는 쪽 서버- 클라이언트가 요청한 서비스를 제공하는 쪽
- 서버의 동작 방식과 순서(요청이 들어왔을 때 서비스가 어떻게 처리되는가?) 웹기준
- Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받는다.
- Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
WAS는 관련된 Servlet을 메모리에 올린다.
- WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
- HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
- 5-1. Thread는 Servlet의 service() 메서드를 호출한다.
5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.protected doGet(HttpServletRequest request, HttpServletResponse response)
- doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
- WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
- 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다
- 서버의 구조
-
Server Program
- 웹서버 :웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 컴퓨터 프로그램(소프트웨어 개념)
- nginx 비동기 이벤트 기반구조
- apache 스레드/프로세스 기반 구조
-
Back-end Language
- java - spring, spring boot
- javascript - node.js, express
- python - django, flask
-
DB, DBMS
- SQL 관계형 데이터베이스 시스템
- NoSQL 비관계형 데이터 베이스 시스템
- APM
- Apache :HTTP 웹서버 소프트웨어
- PHP 동적으로 HTML 데이터를 생성하여 동적 웹페이지를 제공하는 것을 주된 목적으로 하는 서버측 스크립트 언어
- MySql 관계형 데이터베이스 관리 시스템
- 비트나미 가상 어플라이언스 및 웹 애플리케이션, 개발 스택용 소프트웨어 패키지 및 설치 라이브러리이다.
- 로컬호스트(localhost) 컴퓨터 네트워크에서 사용하는 루프백 호스트명으로, 자신의 컴퓨터를 의미
- 가상머신(Virtual Machine) :컴퓨팅 환경을 소프트웨어로 구현한 것
- Virtual Box 컴퓨터 가상화 프로그램 ex) 오라클 VM VirtualBox는 Oracle의 x86 및 AMD64/Intel64 가상화 소프트웨어입니다. GNU General Public License(GPL) 버전 2에 따라 배포되는 무료 오픈 소스 가상화 제품
- VMware VMware에는 다양한 가상화 제품이 있습니다. VMware Workstation Player 는 비상업적 용도로 사용할 수 있는 무료 x64 가상화 소프트웨어
- Linux, Ubuntu
- Linux 유닉스를 기반으로 한 무료 오픈 소스 운영체제
- Ubuntu 리눅스 배포판
- Linux, Ubuntu 유사한점
- 무료 오픈소스
- 멀티 테스킹, 멀티 쓰레딩 지원
- 다중 처리 허용, 다중 사용자를 지원
- Linux, Ubuntu 차이점 Linux는 Linux 커널을 기반으로 구축 된 무료 오픈 소스 소프트웨어 운영 체제 제품군. 우분투는 데비안 기반의 무료 오픈 소스 운영 체제 및 리눅스 배포판입니다.
- 리눅스 명령어
- 리눅스 디렉토리 구조
- vi(vim) 편집기 사용법
실습: 비트나미로 서버 구축, APM패키지 설치로 서버구축
이제서야 실습이 올라오는 이유??
->실습 게시물을 게시하기에 앞서, 저작권 문제로 게시가 안되는 줄 알았으나 실습영상을 제외한 내가 수행한 실습자료는 업로드가 가능한 것을 알고 이제서야 뒤늦게 업로드를 한다.
실습
1️⃣ 실습1. 비트나미를 통해 본인의 컴퓨터에 서버(APM) 구축해보기
2️⃣ (과제) 실습2. 리눅스 개발환경 위에 APM 패키지 설치로 서버 구축해보기
과제
📝 실습 체크리스트
정리: 노션에는 토글 기능이 있는데 토글로 정리한 것이 적나라하게 다 들어나니 지저분해 보인다,, 그럼에도 불구하고 이렇게 올리는 이유는 앞으로 시간이 지날수록 정리능력이 얼마나 달라지는지를 보기위해서이다.(이래놓고 안달라질수도?)
느낀점: 1주일 밖에 안지났는데도 개념이 붕 떠있는 것 같다. 기록을 해두고 상시로 보자.
출처:
(https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html)
(https://ko.wikipedia.org/wiki/Nginx)
(https://terms.naver.com/entry.naver?docId=1227932&cid=40942&categoryId=32837)
(https://gomguard.tistory.com/73)
(https://coding-factory.tistory.com/499)
(https://jhnyang.tistory.com/54)