AWS EC2를 이용하여 flask 웹 서버 배포하기

Yuusaku·2024년 1월 4일
post-thumbnail


aws 콘솔에 접속한 후 상단의 검색창에 ec2를 검색해줍니다.

ec2에서 인스턴스 시작 버튼을 눌러 인스턴스를 생성합니다.


이름 및 태그에 원하는 이름을 넣어줍니다.


AMI를 선택하는 영역인데 여기서는 프리티어인 Ubuntu Server 20.04 LTS AMI를 선택해서 생성하였습니다.


인스턴스 유형은 t2.micro 로 설정하였습니다.

키페어가 없다면 키페어 생성을 눌러 키페어를 발급받습니다.

네트워크 설정에서 편집을 눌러 보안 그룹을 생성하고 인바운드 보안 그룹 규칙을 설정합니다.
ssh 유형 22번 포트를 개방해줍니다.


보안 그룹 규칙 추가 버튼을 눌러 사용자 지정 TCP 유형을 선택하고 8000번 포트를 입력합니다. 소스 유형을 사용자 지정으로하고 0.0.0.0/0 을 선택하여 8000번 포트에서 모든 IP를 받아들일 수 있게 설정합니다.

그 후 인스턴스 시작을 눌러 인스턴스를 생성합니다.

인스턴스 탭으로 가서 생성된 인스턴스를 확인해주고 상태가 '실행중'인지 확인합니다.

인스턴스가 실행 중임을 확인하였으면 연결 버튼을 눌러 접속해줍니다.


EC2 인스턴스 연결에서 연결을 눌러줍니다.


연결을 눌러주면 CLI가 열리게 됩니다.

sudo apt-get update
를 입력하여 업데이트시켜주고
원하는 코드 파일을 업로드할 수 있게 git clone 을 실행하여 깃허브 레포지토리를 다운로드 받아줍니다.

git clone을 실행한 후 실행할 py 파일이 있는 위치로 이동하여줍니다.

flask 웹 서버를 실행하기 위해 작성한 app.py 파일 구조를 알아봅니다.

from flask import Flask, request, send_from_directory, render_template, jsonify, session, url_for, redirect, flash



app = Flask(__name__)



@app.route("/")
def home():
    return render_template('index.html')



if __name__ == '__main__':

    app.logger.info("test") 
    app.logger.debug("debug test") 
    app.logger.error("error test") 
    # app.run(debug=True)
    app.run(host="0.0.0.0", port ="8000",debug=True)

host = '0.0.0.0'으로 두고 port를 8000으로 두어 8000번 포트에 대해 모든 ip 접속을 허가해줍니다.

py 파일을 실행하기 전 flask 라이브러리를 설치합니다.

pip install flask

그 후 app.py 파일을 실행해줍니다.

python3 app.py

python3 명령어를 이용해서 실행하도록 합니다.

이제 public ip 주소 + :8000 을 웹 브라우저 주소창에 입력하여 접속이 되는 것을 확인합니다.

ssh 종료 후에도 웹 서버를 계속 실행시켜주고 싶다면 소유권 포기를 해야 합니다.

Ctrl+Z 를 통해 파이썬 프로세스를 중지합니다
$ bg : 백그라운드에서 프로세스 재구동합니다
$ disown -h : 소유권 포기

소유권 포기 후에는 프로세스 아이디로 서버를 종료해야 합니다.

ps -ef | grep python
python이 들어간 프로세스 탐색하는 코드입니다.
이를 통해 python3 app.py 가 실행되고 있는 프로세스 아이디를 찾을 수 있습니다.

kill -9 PID
PID : 프로세스 아이디

프로세스 아이디 입력란에 app.py 프로세스 아이디를 입력하여 서버를 종료합니다.

1개의 댓글

comment-user-thumbnail
2024년 1월 31일

정말 짱이세요!

답글 달기