make instance
- AMI(Amazon Machine Image)로는, ubuntu 20.04 LTS 버전을 선택한다.
- (참고로, Python 3.8.10 버전이 기본적으로 설치되어있다.)
- 인스턴스 유형은, Free Tier 이므로 t2.micro를 선택한다.
key pair
- 키 페어를 사용함으로써, 인스턴스에 안전하게 연결할 수 있다.
- 해당 인스턴스에 접속할 때마다 필요하다.
- .ppk로 만들고, PuTTY를 통해 SSH 프로토콜로 인스턴스에 접속한다.
- (미리 만들어두고, 사용한다)
network setting
- security group
- 인바운드 규칙
- 22번
- SSH 프로토콜로 PuTTY를 통해 인스턴스에 접속할 것이므로,
내 IP 주소에 대해 열어둔다.
- 5000번
- Flask 서버에 대한 것으로,
어떤 IP주소의 호스트로부터 요청을 받을 것인지 설정한다.
- 일반적으로는 0.0.0.0/0 및 ::/0으로, 모든 IP주소에 대해 열어두지만
공부 목적으로 나만 사용할 테니, 내 IP주소에 대해서만 열어둔다.
- 80번(Nginx), 3306번(MySQL) 등도 있다.
- 아웃바운드 트래픽은 딱히 필요한 경우가 아니라면,
기본 설정되어 있는 0.0.0.0/0으로 둔다.
- (미리 만들어두고, 사용한다)
instance storage
- 세부적인 설정은 뒤로 하고, 만약 이후에 스냅샷이 생성된다면,
혹시 모를 과금을 방지하기 위해 삭제하도록 한다.
access remote host
- PuTTY를 통해 SSH로 접속한다.
- ubuntu AMI를 사용하였으므로,
login as:
ubuntu를 입력한다.
run simple Flask APP server
- 패키지 업데이트 및 설치
sudo apt update
: OS에서 사용 가능한 패키지들의 버전을 업데이트 한다.
(해당 버전들로 설치까지 하려면, upgrade로 할 수 있다.)
sudo apt install python3-pip
: Python3와 달리, pip3는 기본적으로 설치되어있지 않다.
sudo apt insatll python3.8-venv
: Python3와 달리, venv를 위해 따로 설치해줘야 한다.
- clone remote repository
- clone 하는 방법에는 여러 가지가 있지만, 여기선 간단히 HTTPS로 한다.
- username은, Github에 가입한 계정의 이메일 ID가 아니라
Account의 username이다. (즉, github.com/~)
- password로는, 계정 비밀번호 입력을 통한 인증은 더 이상 사용할 수 없다.
따로 Github의 Personal access token를 생성하여 password로 이용할 수 있다.
- run Flask APP
- venv를 실행하고, 필요한 패키지(flask)를 설치 한다.
- host IP주소를
'0.0.0.0'
으로 하고 APP을 실행한다.
- 로컬에서,
인스턴스 public IP주소:5000
를 통해 웹 사이트에 접속할 수 있게 된다.
- Flask 실행 시
Running on http://~:5000
문구는,
인스턴스의 private IP주소 및 localhost이다.
nohup
과 &
으로, 백그라운드 실행 및 로그를 남길 수 있다.
manage instance
- Elastic IP주소
- Elastic IP주소를 설정하지 않으면,
인스턴스를 중지했다가 다시 실행할 때 public IP주소가 변경된다.
- Free Tier를 사용함에 따라, 과금이 되지 않게 주의해야 한다.