스파르타 코딩 클럽 [웹개발종합반] 5주차 WIL(Week I Learned) - 서버 배포 / AWS / 도메인

5주차 - 서버 배포 / AWS / 도메인 // 완강

5주차에는 AWS로 클라우드 환경에서 서버를 사서 내 사이트를 다른 사람이 볼 수 있게 배포하는 과정을 배웠다!

진짜 좋았다! 이전에 해온 클론 코딩을 배포할 수 있게 되니 친구들도 볼 수 있게 돼서 자랑했다!

5주차를 끝으로 웹개발 종합반 전체 과정을 마쳤는데 프론트엔드 ~ 백엔드 전반적인 부분을 넓고 얕게 배운 것 같다!

아쉬운 점은 백엔드 부분이 백엔드에서 주로 사용하는 자바가 아니었다는 것??

자바는 왕초보가 하기에는 너무 어려워서 그런 것 같다. 나도 따로 공부를 열심히 해봐야겠다.


[무비스타] - GET 연습(보여주기)

서버

서버쪽에서는 DB에 저장되어 있는 데이터들을 클라이언트에게 내려줘야하는데,

이때, Like열은 like가 큰 순서대로 거꾸로 내려줘야한다(내림차순)

→ pymongo의 정렬로 뽑는 기능 사용

find().sort("name", 1) / find().sort("name", -1) : “name”은 정렬할 열, 1은 오름차순 / -1은 내림차순 정렬


[무비스타] - POST 연습(좋아요 +1)

  1. 조회 : 영화인 정보 전체 조회
  2. 좋아요 : 클라이언트에서 받은 이름(name_give)로 현재 좋아요 개수를 찾아서 좋아요(like)를 증가(업데이트)
  3. 삭제 : 클라이언트에서 받은 이름(name_give)으로 영화인 찾고 그 영화인 삭제

내 프로젝트를 서버에 올리기

AWS(아마존 웹 서비스)를 이용하여 서버를 사서 배포

: 가상의 컴퓨터를 사서 그 컴퓨터에서 내 서버를 돌리는 것이다!

리눅스 OS를 산다.

리눅스 OS : 오픈소스, 무료이다. → 라이센스 비가 필요없는 오픈소스 OS를 사용한다.

→ 마우스가 없고 명령어로 모든 것이 이루어진다.

※ 키 페어 : 원격으로 서버를 돌리고 있는 AWS 컴퓨터에 들어갈 때 사용하는 PASSWORD 개념의 키이다.

굉장히 중요하므로 잘 보관하고 있는 것이 중요하다!

※ AWS로 산 서버에 원격접속 하는 방법

  1. git bash 켜기
  2. $ ssh -i '키페어 위치' ubuntu@퍼블릭 IPv4 주소 입력
  3. yes 입력
  4. ubuntu@ip- ~~ 로 나오면 성공! (원격 접속 되어 있다는 뜻이다)

※ 몇 가지 명령어

  1. mkdir : 폴더 만드는 명령어(make directory)
  2. ls : 내 위치에서 존재하는 파일 목록 표시
  3. cd 경로 : 위치 이동 (cd sparta : sparta로 현재 위치 이동)
  4. cd .. : 현재 위치에서 한 칸 벗어나기 (sparta에서 벗어나기)
  5. python3 python파일이름 : python 파일 실행시키기

서버 세팅하기

filezilla 이용해서 간단한 python 파일 올리기

filezilla : 내 컴퓨터에 있는 파일을 올려주는 업로더

filezilla 세팅 :

  1. New site 만들고 호스트를 AWS에서 산 서버의 퍼블릭 IPv4 주소 / Port를 22! 바꾸면 안 된다.
  2. 로그온 유형 : 키파일 / 사용자 : ubuntu / 키 파일 : 내가 다운 받은 keypair 파일 선택

② EC2 세팅하는 파일을 다운 받아서 서버에 올린 후 파일 실행

  1. sudo chmod 755 initial_ec2.sh : 권한 주기

  2. ./initial_ec2.sh : 실행


우리가 산 EC2 컴퓨터에 flask 서버 실행하기

  1. flask 패키지 설치: pip install flask
  2. pymongo 설치 : 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의 포트!


쇼핑몰 숙제 업로드 해보기!

  1. 내 컴퓨터에서 서버에 있는 mongoDB로 Robo3T 접속하기

    → Robo3T에서 계정 connect address를 서버 IPv4 주소로!

    → Authentication에서 아이디 패스워드 설정

    → 완료!

  2. 서버라서 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 & 입력 후 엔터

② 실행 종료하기

  1. ps -ef | grep 'app.py' 입력 후 엔터

ps -ef : 컴퓨터에 돌아가고 있는 모든 프로세스를 다 보여준다.

grep "app.py" : 프로세스 중에서 “app.py”만 검색해서 가져와라!

  1. 리스트에 뜬 값(22801, 22811)을 강제종료하는 명령어 실행

kill -9 22801 / kill -9 22811


도메인 설정 방법

DNS 관리에서 DNS 레코드 추가해서

  1. 호스트에 @ 입력
  2. ip주소에 내 퍼블릭 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 파일을 이미지로 사용하겠다.


좋은 웹페이지 즐겨찾기