처음으로 Flask로 만든 어플리케이션을 AWS로 배포해 보았다.
방법을 기록해두기 위해 포스트를 작성한다.

이 방법은 미들웨어나 웹서버를 따로 사용하지 않으므로
성능이나 보안상 좋지 않기 때문에 연습 프로젝트용으로만 사용한다.
더 빠르고 안정적인 배포를 위해서는 gunicorn과 nginx를 사용하는 것이 좋다.

EC2 인인스턴스 만들기

EC2 인스턴스를 만든다. Image0

서버 이름을 정하고 우분투를 선택한다.
버전은 20.04, 18.04등의 무료 버전을 선택하면 된다.
Image1

인스턴스 타입과 키를 선택한다.
무료로 사용 할 수 있는 t2.micro
키페어는 만들어뒀던 것을 쓰기로 했다.
필요하다면 create new key pair를 눌러 새로 만들자
Image2

보안 그룹을 설정한다.
외부에서 접속할 수 있도록
Allow HTTPS traffic from the internet
Allow HTTP traffic from the internet
두개 항목을 체크해준다.
Image3

설정이 끝났으면 서머리를 확인하고 Launch instance를 누른다.
잠시 기다리면 인스턴스가 생성된다.
Image4

인스턴스 접속

인스턴스가 생성되면 인스턴스를 우클릭 후 Connect를 누른다.
Image5

처음 키를 등록한다면 1~4번까지를 따라한다.
그다음 Example 코드를 터미널에 입력하면 접속이 된다.
Image6

터미널에 입력하면 질문이 나오는데 yes를 입력하면 된다.
Image7
Image8

보안그룹 설정

보안그룹에서 추가 설정을 해줘야 한다.
플라스크는 디폴트로 포트 5000을 사용하기 때문에 열어줘야 한다.
보안그룹에 들어간다.
Image9

인바운드 설정에 들어간다.
Image9

타입은 Custom TCP 포트는 5000 아이피는 0.0.0.0 로 설정한다.
다른 포트번호를 원하면 수정한다.
Image9

설정이 끝나면 저장한다.

소스코드 복사

서버의 소스코드를 복사해온다.

git clone [레포지토리 주소]

Image9
그다음 필요한 라이브러리를 설치해 준다.

sudo apt update
sudo apt install python3-pip
pip3 install flask
그외 필요한 라이브러리 설치

서버 실행

서버를 그냥 실행하게 되면 터미널이나 ssh를 종료하면 서버가 종료된다.
터미널을 닫아도 서버가 실행되게 하려면
nohup 명령을 사용해 백그라운드에서 실행되게 해야한다.

nohup python3 -u flask_app.py &

nohup는 콘솔이 종료되어도 nohup.out 파일에 출력이 기록된다.
서버를 종료하고 싶다면 ps -ef 명령을 사용한다.

ps -ef

명령을 사용하면 실행되고 있는 프로세스를 보여준다.
PID를 확인하고 kill [PID] 하면 종료된다.
Image9

접속 확인

인스턴스를 확인하면 public IP를 확인 할 수 있다. Image9
아이피 뒤에 포트번호를 입력하고 접속을 확인한다.

http://[publicIP]:5000/

아이피 고정하기

EC2인스턴스를 stop하고 다시 실행하면 아이피가 바뀌게 된다.
고정 아이피를 사용하기 위해서는 Elastic IPs에서 IP를 받아야 한다.
이 내용은 추가로 포스팅 하도록 하겠다.

[[AWS] EC2에 고정 아이피 할당하기 (Elastic IP, EIP)]https://tes-b.github.io/aws/AWS_EIP/

참고

[생활코딩 AWS]https://www.youtube.com/watch?v=7ThkvfCKKQs&list=PLuHgQVnccGMC5AYnBg8ffg5utOLwEj4fZ
[flask웹서버 구동]https://ndb796.tistory.com/244
[백그라운드 실행]https://imsoncod.tistory.com/29?category=927391

Leave a comment