본문 바로가기
카테고리 없음

[AWS, Filezilla, gabia 활용하여 배포하기] 웹프로그래밍 A-Z 내일배움캠프 AI트랙

by lovvepearl 2021. 12. 16.



 

서버가 언제나 요청에 응답하려면

서버 컴퓨터가 항상 켜져있어야하고, 

접근가능한 IP주소를 가지고 있어야 합니다.

 

하지만 로컬환경에서 작업을 해왔기 때문에

내 컴퓨터를 계속 켜둘수는 없겠죠😅

 

하지만, AWS(Amazon Web Service)의

클라우드 환경 리눅스 컴퓨터 EC2(Elastic Compute Cloud)를 사용하면

내 컴퓨터가 꺼져도 서버를 항상 켜놓을 수 있다는 사실!

 

01. AWS EC2서버 구매하기

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

 

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

 

ap-northeast-2.console.aws.amazon.com

 

OS(운영체제)로 ubuntu를 사용할거기 때문에 ubuntu server 18.04 혹은 20.04를 구매합니다.

Launch 버튼을 차례로 클릭하면 완료!

 

아래와 같은 key pair 창이 뜨면 create a new key pair 로 설정한 뒤

download - Launch 버튼 클릭!

 

02. AWS EC2 접속하기

EC2는 SSH(Secure Shell Protocol)프로그램으로 접속하는데

22번 포트가 열려있어야 접속이 가능합니다. EC2에서는 기본적으로 열려있답니다🤩

 

리눅스 컴퓨터는 '쉘 명령어'만으로 작동가능하기 때문에 몇가지 명령을 터미널에 입력해야 합니다. 

sudo chmod 400 키페어드래그앤드롭
ssh -i 키페어드래그앤드롭 ubuntu@인스턴스퍼블릭IP주소

이렇게 하면 EC2 컴퓨터에 접속가능한 상태가 됩니다.

 

03. 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(80포트로 받아서 5000포트와 연결해주는 작업)

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

 

04. FileZilla 로 EC2서버에 파일 업로드하기

 

FileZilla의 new site 를 클릭하면 아래와 같은 화면이 나오는데,

프로토콜 : SFTP

호스트 : 인스턴스의 퍼플릭 IP 주소

포트 : 22

로그온 유형 : 키 파일

사용자 : ubuntu

키 파일 찾아서 등록하면 내 컴퓨터와 EC2 서버 컴퓨터와의 연동이 완료됩니다👍

왼쪽이 내 컴퓨터, 오른쪽이 서버 컴퓨터 입니다. 드래그 앤 드롭하여 파일을 업로드 할 수 있습니다. 

 

05. 크롬으로 접속하기

 

터미널에 아래 명령으로 EC2와 연동을 시킨 후

ssh -i 키페어드래그앤드롭 ubuntu@인스턴스퍼블릭IP주소

 

 

내 컴퓨터와 서버 컴퓨터의 환경을 동일하게 하기 위해

파이썬 라이브러리 세가지를 설치 해봅시다. 

pip install pymongo dnspython flask

 

 

EC2에 폴더를 생성한 뒤 아래 명령을 실행하면

python app.py

정상적으로 실행이 되는 것을 확인할 수 있습니다🌈

자, 이제 서버는 구동이 되었습니다. 

생성된 IP를 가지고 크롬에서 실행하기 위해서는 EC2 인스턴트 포트를 추가로 열어주어야 합니다. 

 

생성된 인스턴스를 클릭하면 아래 화면이 뜹니다.

화면 아래쪽의 보안을 클릭하고 보안그룹 - 인바운드규칙편집 을 차례로 클릭합니다. 

포트번호 5000번과 80번을 추가해주고 Anywhere IP로 지정한 뒤 규칙저장을 하면 포트 설정이 완료됩니다. 

 

이제 크롬에서 생성된 IP 주소로 웹페이지를 출력할 수 있습니다👏

http://[내 EC2 IP]:5000/

 

서버 컴퓨터도 계속 켜져있고, 접근가능한 IP 주소도 생성을 하였는데

내 컴퓨터의 터미널이 종료되면 SSH는 효력을 잃고 맙니다...😰

 

그렇다면 서버 컴퓨터가 제 역할을 할 수가 없겠죠?

터미널이 꺼져도 SSH가 살아있게 하는 방법! 바로 'nohup' 입니다.

nohup python app.py &

파일에 변동사항이 있는 경우, 자동으로 업데이트 되지 않습니다.

이런 경우는 1) 강제종료 2) FileZilla 파일삭제 후 재업로드 3) nohup 재시작 하여 업데이트 합니다. 

ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill   # 강제종료 명령어

 

06. 가비아 도메인 연결하기

도메인 구입 후 My가비아 - 서비스관리 - DNS관리툴에 접속합니다.

도메인을 선택하고 DNS 설정을 클릭!

호스트 : @

값/위치 : EC2의 인스턴스 퍼플릭 IP 주소 를 입력합니다. 

저장을 누르면 IP주소와 도메인 연결 완료💜

 

10분 ~ 1시간 정도 기다리면, 

크롬에서 도메인 주소로 접속할 수 있습니다!

 

대장정 끝에 배포가 완료되었습니다🙌