5주차 - 서버 배포 / AWS / 도메인 // 완강
5주차에는 AWS로 클라우드 환경에서 서버를 사서 내 사이트를 다른 사람이 볼 수 있게 배포하는 과정을 배웠다!
진짜 좋았다! 이전에 해온 클론 코딩을 배포할 수 있게 되니 친구들도 볼 수 있게 돼서 자랑했다!
5주차를 끝으로 웹개발 종합반 전체 과정을 마쳤는데 프론트엔드 ~ 백엔드 전반적인 부분을 넓고 얕게 배운 것 같다!
아쉬운 점은 백엔드 부분이 백엔드에서 주로 사용하는 자바가 아니었다는 것??
자바는 왕초보가 하기에는 너무 어려워서 그런 것 같다. 나도 따로 공부를 열심히 해봐야겠다.
[무비스타] - GET 연습(보여주기)
서버쪽에서는 DB에 저장되어 있는 데이터들을 클라이언트에게 내려줘야하는데,
이때, Like열은 like가 큰 순서대로 거꾸로 내려줘야한다(내림차순)
→ pymongo의 정렬로 뽑는 기능 사용
find().sort("name", 1)
/ find().sort("name", -1)
: “name”은 정렬할 열, 1은 오름차순 / -1은 내림차순 정렬
내 프로젝트를 서버에 올리기
AWS(아마존 웹 서비스)를 이용하여 서버를 사서 배포
: 가상의 컴퓨터를 사서 그 컴퓨터에서 내 서버를 돌리는 것이다!
리눅스 OS를 산다.
리눅스 OS : 오픈소스, 무료이다. → 라이센스 비가 필요없는 오픈소스 OS를 사용한다.
→ 마우스가 없고 명령어로 모든 것이 이루어진다.
※ 키 페어 : 원격으로 서버를 돌리고 있는 AWS 컴퓨터에 들어갈 때 사용하는 PASSWORD 개념의 키이다.
굉장히 중요하므로 잘 보관하고 있는 것이 중요하다!
※ AWS로 산 서버에 원격접속 하는 방법
$ ssh -i '키페어 위치' ubuntu@퍼블릭 IPv4 주소
입력※ 몇 가지 명령어
mkdir
: 폴더 만드는 명령어(make directory)ls
: 내 위치에서 존재하는 파일 목록 표시cd 경로
: 위치 이동 (cd sparta : sparta로 현재 위치 이동)cd ..
: 현재 위치에서 한 칸 벗어나기 (sparta에서 벗어나기)python3 python파일이름
: python 파일 실행시키기서버 세팅하기
① filezilla
이용해서 간단한 python 파일 올리기
→ filezilla
: 내 컴퓨터에 있는 파일을 올려주는 업로더
filezilla
세팅 :
② EC2 세팅하는 파일을 다운 받아서 서버에 올린 후 파일 실행
sudo chmod 755 initial_ec2.sh
: 권한 주기
./initial_ec2.sh
: 실행
우리가 산 EC2 컴퓨터에 flask 서버 실행하기
pip install flask
pip install pymongo
※ pip
: 파이썬의 패키지들을 쉽게 깔아주는 라이브러리
설치 후에 git bash에 python app.py
하면 app.py가 실행된다.
이때, app.py를 실행해서 flask 서버를 돌리고,
AWS 서버의 퍼블릭 IPv4 주소:5000
을 입력하면 들어가지는 줄 알았으나 안 된다!!
→ 이유 : AWS에서 컴퓨터를 샀는데, AWS에 자체 방화벽이 있어서 이걸 뚫어야 한다!
AWS EC2에서 보안 → 보안 그룹 → 인바운드 규칙 → 인바운드 규칙 편집
들어가보면 포트 범위에 22가 적혀있다!
22 : filezilla에서 설정한 포트 → AWS에서 22를 허용했기 때문에 22로 설정한 것이다!
따라서 여기에 우리가 접속할 포트를 추가해주면 된다!
5000
, 위치 무관으로 추가
80
, 위치 무관으로 추가
27017
, 위치 무관으로 추가
80
: HTTP의 기본 포트!
27017
: mongoDB의 포트!
쇼핑몰 숙제 업로드 해보기!
내 컴퓨터에서 서버에 있는 mongoDB로 Robo3T 접속하기
→ Robo3T에서 계정 connect address를 서버 IPv4 주소로!
→ Authentication에서 아이디 패스워드 설정
→ 완료!
서버라서 mongoDB에 아이디 패스워드가 설정했으므로 python에 코드를 수정해야한다.
client = MongoClient('mongodb://test:test@localhost', 27017) # ID/PW 설정한 코드
# client = MongoClient('localhost', 27017) # 기존 로컬 코드
client = MongoClient('mongodb://ID:PW@localhost', 27017)
이렇게 수정!!
접속 하는 주소에 포트 번호 없애기(포트포워딩)
http의 포트인 80
포트로 접속하면 80포트를 안 붙여도 된다!!
80
포트를 안 쓰는 대신 http를 쓴다!
80으로 들어온 것을 5000포트로 돌아가고 있는 flask로 넘겨주는 것을 포트포워딩
이라고 한다!
→ 포트포워딩은 보통 처음 서버 환경 세팅 시에 해준다.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
따라서, 서버 환경 설정 시에 포트포워딩을 해줬기 때문에 우리는 :5000
을 빼고 http를 입력하더라도 (포트 80으로 들어오더라도) 우리 서버 포트인 5000으로 넘겨주기 때문에 접속할 수 있다.
git bash에서 ssh 접속을 끊어도 서버가 실행되게 하는 방법
① 계속 실행시키기
nohup python app.py &
입력 후 엔터
② 실행 종료하기
ps -ef | grep 'app.py'
입력 후 엔터ps -ef
: 컴퓨터에 돌아가고 있는 모든 프로세스를 다 보여준다.
grep "app.py"
: 프로세스 중에서 “app.py”만 검색해서 가져와라!
kill -9 22801
/ kill -9 22811
도메인 설정 방법
DNS 관리에서 DNS 레코드 추가해서
@
입력내 퍼블릭 IPv4 주소
입력끝!
og태그 넣기!
<meta property="og:title" content="블루투스스피커 SHOP" />
<meta property="og:description" content="블루투스 스피커를 팔고 있어요!" />
<meta property="og:image" content="{{ url_for('static', filename='ogimage.png') }}" />
og:title
: 보여질 제목
og:description
: 보여질 본문(요약)
og:image
: 보여질 이미지 → static 폴더 안에 ogimage.png
파일을 이미지로 사용하겠다.