항해 사전강의 주차

항해 99 사전강의 5주차 마지막

노엠디엔 2022. 9. 30. 00:45

이번 마지막 주차에서는 우리가 만들었던 방명록 페이지를 인터넷에 배포해서 전 세계 사람들이 볼 수 있게끔

하는 것 까지 해보았다.

 

Filezilla 설치하기

https://filezilla-project.org/download.php

가비아 가입후 도메인 구입

https://www.gabia.com

이번 주차에서는 버킷리스트 명록을 만들면서 복습해 보는 시간을 가졌다.

버킷 리스트를 작성하고 기록하면 mongoDB에 저장되고 페이지에 보이게 된다.

해당 버킷 리스트에 완료버튼을 누르면 해당 버킷 리스트에 줄이 그어지면서 버튼이 사라지게 된다.

이때!

해당 데이터가 몇번째 데이터인지 구분할 수 있는 숫자가 필요하다.

해당 코드를 보면 post방식으로 데이터를 저장하는데 

count라는 변수를 만들어서 가져온 buck_list의 길이만큼 len(bucket_list) 의 값에서 + 1 해주고 doc라는 객체에 num이라는 key값으로 count 변수를 넣어주고 

done이라는 변수를 같이 넣어주는데

done 변수에 역할은 버킷 리스트가 완료되었다는 버튼이 눌렸을 때 1로 바꿔주는 일종의 boolean 형태의 기능을 하게 된다

(참, 거짓) 나머지로 버킷 리스트에 작성한 데이터들을 같이 넣어주면서 저장하게 된다.

# len이라는 함수가 () 괄호 안에 있는 배열의 길이를 계산해준다.

def bucket_done():
    num_receive = request.form['num_give']
    db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
    return jsonify({'msg': '버킷 완료!'})

완료 버튼이 눌렸을 때 해당 데이터가 가지고 있는 숫자 데이터로 해당 데이터를 찾은 후에

그 데이터의 done값을 1로 바꿔줌으로써 그 버킷 리스트가 완료되었다는 설정을 해주는 코드

 

 

이제 내가 만든 프로젝트를 배포해보자  배포는 누구나 내 서비스를 사용할 수 있게 하기 위해서 작업이다. 

웹 서비스를 론칭하기 위해 클라이언트의 요청에 항상 응답해줄 수 있는 서버에 프로젝트를 실행시켜줘야 한다..

컴퓨터가 항상켜져 있고 프로그램이 실행되어 있어야 하고,

모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 해야한다.

서버는 그냥 컴퓨터라는 거?  외부 접속이 가능하게 설정한 다음에 내 컴퓨터를 서버로 사용할 수도 있다.

강의에서는  AWS라는 클라우드 서비스에서 편하게 서버를 관리하기 위해서 항상 켜 놓을 수 있는 컴퓨터인 EC2 사용권을 구입해 서버로 사용할 겁니다.

 

쉽게 요약하자면 우리는 서버 컴퓨터를 계속 켜놓을 수 없으니깐 인터넷상에 있는 남의 컴퓨터를 사서! 빌려 써서!

그 컴퓨터를 계속 돌려놓는다!

 

AWS 가입

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2 

Ubuntu Server20.04 버전을 구입해서 사용해 보았다. 프리티어 사용 가능이라고 써져 있으면

1년 동안 한 대에 대해서 무료이다.

작업을 하다 해당 인스턴스를 다시 만들고 싶다면 해당 인스턴스 종료를 눌러야 한다. 인스턴스 중지는 컴퓨터를 잠시 끄는 것

이제 gitBash를 통해서 명령어를 입력해야 한다

mkdir 파일명 : 지금 있는 경로에 파일명의 파일을 만든다.

ls : 지금 있는 경로에 있는 파일들을 보여준다

cd  파일명: 경로에 있는 파일명의 파일 안으로 들어간다. 

ssh -i /c/Users/jh/Desktop/sparta_mykey.pem ubuntu@aws퍼블릭 ip

이것으로 내가 산 컴퓨터 서버에 원격 접속을 한 것이다.

이 컴퓨터는 리눅스라는 체제로 맥, 윈도나 마우스로 하는 것이 아니라,

이렇게 명령어를 입력해서 파일을 만들거나 설정, 경로 이동 등을 해준다.

 

강의에  알려주는 EC2 명령어들을 복사하면서 서버 설정을 해주었다.

# python3 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
# pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

다음으로 FIleZilla를 실행시켜서

왼쪽은 내 컴퓨터 파일 오른쪽은 내가 산 컴퓨터, 즉 서버가 되겠다.

서버에 파일을 올리 때에는 왼쪽 상단 파일 -> 사이트 관리자 -> 새 사이트 -> 파일을 하나 생성 -> 
프로토콜을 SFTP -> 호스트에 AWS에서 받은 프라이빗 IP주소 입력 -> 포트는 22번으로 고정!

-> 로그인 유형 키파일 -> 사용자명은 ubuntu -> 받았던 key파일을 넣어주면 설정 완료

 

연결이 되면 올릴 파일들을 오른쪽으로 옮기면 되는데 옮길 때에는 static, templates, app, py 파일만 올려주면 된다!

이제 다시 gitBash 돌아가서 파이 참에서 설치했던 패키지들도 서버 컴퓨터에 설치를 해주어야 한다.

 

이제 AWS에서 열었던 내 퍼블릭 주소:5000으로 들어가면 실행이.. 안된다.

우리가 산 서버에 5000번으로 통하는 통로를 열어줘야 한다.

다시 AWS로 돌아가서 실행 중인 인스턴스에 보안 그룹에 들어가 인바운드 규칙 편집을 해준다.

두 개의 포트를 열어줘야 하는데 5000번과 80을 열어줘야 한다? 80번을 열어주는 이유는?

대부분의 페이지는 주소 뒤에 80이라는 숫자가 숨겨져 있다?

포트 번호를 입력하지 않아도 자동으로 접속되기 위해,  80 포트로 오는 요청을 5000 포트로 전달하게 하는 포트 포워딩(port forwarding)이라는 방법을 사용하기 위함이다.

쉽게 바꾸면 80이라는 길을 우리 페이지로 들어오게끔 열어놓고 그 길을 5000번과 이어주는 것이다.

이제 해당 ip주소로 이동하면 페이지가 잘 뜬다.

 

이제 서버를 계속 열어두는 방법이다.

nohup python app.py & 

명령어를 gitBash에 입력

이제 계속 열려있는 서버를 끄는 방법은

ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill 

이 명령어를 입력하면 된다.

 

도메인 연결

https://dns.gabia.com/

가비아 페이지로 들어가서 내가 산 도메인의 DNS 설정에 들어가 내 페이지의 IP주소를 입력하면 된다.

og태그 설정

og태그란 카카오나 sns에서 내 페이지를 공유 시에 내 페이지의 대표 이미지나, 제목, 내용들을 설정해서 마치 명함처럼 보이게끔 해주는 설정이다.

<meta property="og:title" content="최고의 비보이들" />
<meta property="og:description" content="여러분이 생각하는 최고의 비보이를 남겨주세요" />
<meta property="og:image" content="https://img.redbull.com/images/c_crop,x_0,y_0,h_3568,w_5352/c_fill,w_1170,h_780/q_auto,f_auto/redbullcom/2020/5/28/b7j1gt80kdu4zzdyg7eb/time-square-flips-little-shao" />