flask 백엔드로 활용하기 (5) aws ec2에서 배포하기

hyereen·2022년 1월 30일
0

flask-backend

목록 보기
5/7

출처: 스프링 부트와 AWS로 혼자 구현하는 웹서비스

env: vscode python 3.7.8 flask 1.1.4

플라스크로 만든 앱을 aws ec2에 배포시켜보겠다. 이 글을 작성하기 위해 거의 초심으로 돌아간 것 처럼 다시 처음부터 다 찾아보고 그랬다..ㅠㅠ
혹시 이 글을 참고할 미래의 나 혹은 다른 사람들에게 일러두자면

  • 이 방법은 정석적인 현명한 방법은 아니다
  • 유지보수에는 적절하지 않다

부정적인 말들만 가득한 것 같지만, 혹시 맹신할 수도 있어서.. 미리 알려두고자 한다. 그냥 삽질한 기록이라고 생각해주면 좋겠다. 그래도 이 프로젝트 덕에 하면 된다는 자신감을 많이 얻었다. 미래에 다시 백엔드를 맡을 일이 생긴다면 더 잘해보고싶다.

EC2 인스턴스 생성하기




무료 계정을 사용하고 있으므로 프리티어를 선택해준다.

보안그룹

  • 포트 항목이 22인 경우는 aws ec2에 터미널로 접속할 때를 이야기함
  • pem 키가 없으면 접속이 안되니 전체 오픈을 하는 경우를 종종 발견하는데, pem키가 노출되는 순간 가상화폐가 채굴되는 등 위험할 수 있음
  • 보안은 언제나 높을수록 좋으니 pem 키 관리자와 지정된 IP에서만 ssh 접속이 가능하도록 구성하는 것이 안전(내 IP를 선택하면 현재 접속한 장소의 IP가 자동 지정됨)

검토 및 시작

pem 키 선택

  • 인스턴스는 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있어, 해당 pem키 이외에는 접근을 허용하지 않음
  • 이 pem 키는 절대 유출되면 안되고 이후 ec2 서버 접속할 때 필수이므로 잘 관리할 수 있는 곳에 보관해야 함
  • 나는 기존에 생성된 pem키가 있어서 그걸 선택함

탄력적 IP만들기

  • 인스턴스도 하나의 서버이기 때문에 IP가 존재
  • 인스턴스 생성시 항상 새 IP를 할당하는데, 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당 됨
    • 요금을 아끼기 위해서 인스턴스 중지하고 다시 시작하면 IP가 변경되는 것
  • 인스턴스 IP가 매번 변경되지 않고 고정 IP를 가지하게 하도록 고정IP(탄력적IP)를 할당해줘야 함


네트워크 및 보안 > 탄력적 IP > 탄력적 IP 주소 할당 클릭 > 페이지 안에서 맨 아래 할당

이 탄력적 IP 주소 연결 선택

오른쪽 아래 연결 선택

다시 인스턴스 목록에 가서 인스턴스 정보를 확인해보면

탄력적 IP가 할당된 것을 확인할 수 있다.

EC2 서버에 접속하기위해 putty 사용하기(window)

putty 사이트(https://www.putty.org/)에 접속하여 실행파일을 다운받기

  • putty.exe
  • puttygen.exe

puttygen.exe 파일을 실행

  • putty는 pem키로 사용이 안되며 pem키를 ppk파일로 변환해야 함
  • puttygen은 이러한 변환 과정을 진행해주는 클라이언트
  • puttygen에서 Conversions -> Import Key를 선택해서 내려받은 pem키를 선택

그럼 자동으로 변환이 진행되고 Sabe private key 버튼을 클릭하여 ppk파일을 생성함

putty.exe 실행

Session

  • Host Name: ec2-user@탄력적 IP
  • Port: 22
  • Connection type: SSH

Connection > SSH > Auth

  • Private Key file for authentication: 아까 저장해준 ppk파일을 선택

다시 Session으로 돌아와서 저장

  • Save Sessions: 현재 설정들을 저장할 이름 등록
  • Save 버튼 클릭하면 목록에서 확인 가능

SSH 접속

Saved Sessions 이름 선택 > Open 누르면 다음과 같이 SSH 접속 알림 창이 나타남


Accept 해주면

연결된 것을 확인할 수 있음

기본 설정

sudo yum update -y
sudo yum install python3-pip

git 설치하기

sudo yum install git -y

프로젝트 clone하기(프로젝트 리포지토리가 public이라는 가정하에)

cd /srv
sudo git clone "https://github.com/깃아이디/리포지토리이름.git


requirements library 설치하기

pip3 install -r requirements.txt

flask 실행하기

python3 app.py

insomnia로 api 확인하기


파라미터로 한글 자모음을 받았을 때 '선풍기'라는 완성된 단어를 리턴하는 것을 확인할 수 있다.

참고자료: https://buildabetterworld.tistory.com/84

profile
안녕하세요. 피드백은 언제나 감사합니다.

0개의 댓글