[스파르타코딩클럽/웹개발 종합반] 10일차. 5-5 ~ 5-12 강의 (AWS, Ubuntu)

5-5. [무비스타] - 뼈대 준비하기
index.html, app.py 준비하기
5-6. [무비스타] - GET연습(보여주기)
pymongo 정렬: .find().sort('like', -1) #like로 내림차순
만들 API 정보: 조회(Read) 기능: 영화인 정보 전체를 조회
A. 요청 정보
- 요청 URL= /api/list ,
- 요청 방식 = GET
- 요청 데이터 : 없음
B. 서버가 제공할 기능 : 데이터베이스에 영화인 정보를 조회(Read)하고, 영화인 정보를 응답 데이터로 보냄
C. 응답 데이터 : (JSON 형식) 'stars_list'= 영화인 정보 리스트
5-7. [무비스타] - POST연습(좋아요+1)
만들 API 정보: 좋아요기능: 클라이언트에서 받은 이름(name_give)으로 찾아서 좋아요(like)를 증가
A. 요청 정보
- 요청 URL= /api/like ,
- 요청 방식 = POST
- 요청 데이터 : 영화인 이름(name_give)
B. 서버가 제공할 기능 : 영화인 이름(요청 데이터)과 일치하는 영화인 정보의 좋아요 수를 한 개 증가시켜 데이터베이스에 업데이트하고(Update), 성공했다고 응답 메세지를 보냄
C. 응답 데이터 : (JSON 형식) 'msg'='좋아요 완료!'
라인 전체 선택 단축키 = Shift + Home, End
단어 단위 선택 단축키 = Ctrl + shift + 방향키(왼쪽, 오른쪽)
5-8. [무비스타] - POST연습(삭제하기)
만들 API: 삭제(Delete) 기능: 클라이언트에서 받은 이름(name_give)으로 영화인을 찾고, 해당 영화인을 삭제
A. 요청 정보
- 요청 URL= /api/delete ,
- 요청 방식 = POST
- 요청 데이터 : 영화인 이름(name_give)
B. 서버가 제공할 기능 : 영화인 이름(요청 데이터)와 일치하는 영화인 정보를 데이터베이스에서 삭제(Delete)하고, 성공했다고 응답 메세지를 보냄
C. 응답 데이터 : (JSON 형식) 'msg'='삭제 완료!'
5-9. 내 프로젝트를 서버에 올리기
프로젝트를 배포 = 웹 서비스를 런칭
특별한 컴퓨터가 아닌 모든 컴퓨터는 서버가 될 수 있음.
서버의 역할은 브라우저가 요청을 하면 브라우저한테 그릴 것을 주거나 Ajax로 요청을 하면 Ajax에 대한 답변으로
데이터를 주거나 그런 뭔가를 주는 행위를 함(클라이언트들의 요청을 받는 행위)
요청에 응답하려면,
1. 컴퓨터가 항상 켜져 있어야 하고, app.py가 실행되어 있어야 하고
2. 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 컴퓨터를 밖에다 열어놔야함.
통상적으로 클라우드 환경 즉 인터넷 환경에 있는 컴퓨터를 사서 거기다 올려놓고
사람들한테 그쪽으로 접속하게 만들어둠.
옛날에는 서버실을 만들어 두고 컴퓨터본체들을 모아 두었는데 요새는 거의 없음.
AWS = 아마존웹서비스(아마존에서 만든 클라우드 플랫폼)
우리가 접속하는 컴퓨터는 숫자로 되어있는 주소(IP 주소)가 붙어있음.
URL 은 우리가 알아보기 쉽게 하는 등의 이유로 IP 주소를 알파벳으로 바꾼 것.
이렇게 변환해주는 시스템을 DNS(=Domain Name System).
IP 주소:
컴퓨터가 통신할 수 있도록 컴퓨터마다 가지는 고유한 주소. 정확히는 네트워크가 가능한 모든 기기가 통신할 수 있도록 가지고 있는 특수한 번호.
서버는 하나의 주소를 가지고 있음.
포트(port):
하나의 IP에 여러 포트가 있음. 하나의 포트에 하나의 프로그램을 실행시킬 수 있음.
5-10. AWS 서버 구매하기
aws에서는 컴퓨터 한대한대를 인스턴스라고 부름.
https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2 - 로그인 -
인스턴스 - 인스턴스 시작 - Ubuntu Server 18.04 LTS (HVM), SSD Volume Type(리눅스 운영체제) 선택 -
t2.micro 선택 - 시작하기 - 새 키 페어 생성(컴퓨터에 원격접속 할 수 있는 키,
잊어버리면 aws에서도 안찾아줌. 잘보관해야함)
키페어 이름: spartakeypair, 키페어 유형: RSA
리눅스 운영체제 특징: 오픈소스 즉 무료. 라이센스비가 필요없음. 여러가지 계열이 있는데 우분트도 그 중 하나.
마우스가 없기 때문에 모든 것을 명령어로 해야함.
mkdir sparta #sparta라는 폴더 만들기
~ #내 위치
ls #내 위치에 있는 모든 파일보기
cd sparta/ #sparta라는 폴더로 들어가기
cd .. #상위 폴더로 이동
pwd #내 위치(폴더의 경로)를 알려줌
5-11. 서버 세팅하기
filezilla:내 컴퓨터에 있는 파일을 올려주는 업로더
서버 환경 세팅:
1. EC2 컴퓨터의 시간대를 한국으로 맞추는 명령어
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
2. python3 명령어를 python으로 사용할 수 있게 하는 명령어
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
3. pip3 설치
sudo apt-get update
sudo apt-get install -y python3-pip
4. pip3 명령어를 pip으로 사용할 수 있게 하는 명령어
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
5. mongoDB 설치
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org
6. mongoDB 실행하기
sudo service mongod start (아무 반응이 없으면 잘 실행된 것)
7. 포트포워딩 (80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어)
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
5-12. flask 서버를 실행해보기
pip: 파이썬의 패키지를 쉽게 깔아주는 라이브러리
pip install flask #flask 설치