본문 바로가기
IT/Web

Ubuntu에서 간단하게 Flask로 Web Server 만들기!

by Shuaaaa 2024. 1. 5.

AWS 환경에서 

  1. Ubuntu EC2 만든 후
  2. Flask로 간단한 Web Server 만들어보겠습니다!

 

1. Ubuntu EC2 만들기

EC2 > Launch Instance 클릭

필수설정은 아래와 같고, 나머지는 필요 것 설정하면 됩니다!

  • OS: Ubuntu 22.04LTS
  • Network Settings:
    • Auto-assign Public IP: Enable (자동 Public IP 할당)
      Enable 안할 경우, EC2 생성 후 따로 Elastic IP 할당해줘야 합니다.
    • Security Group:
      22, 80, 5001 Port Open from Anywhere 0.0.0.0/0
      보안을 위해서 My IP로 IP 접근제어 할 수 있습니다.
      5001은 Flask에서 지정하여 사용하는 포트입니다, 수정 가능합니다.

 

2. Flask Web Server 만들기

AWS 콘솔에서, EC2의 "Connect" 버튼 누르면 바로 CLI 접속 가능합니다.

만약 본인 환경에서 WSL, CLI 통해서 접속한다면 SSH 연결 권장합니다.

# 전체적으로 packages 업데이트
sudo apt update
sudo apt upgrade

# Python 환경 설치
sudo apt install python3 python3-pip python3-venv 

# Flask 돌아갈 폴더 생성
mkdir flask-app && cd flask-app

# 가상 환경 실행
python3 -m venv venv
source venv/bin/activate

# Flask 설치 및 확인
pip3 install Flask 
python3 -m flask --version

# Python 파일 생성
vim myapp.py
: '
from flask import Flask, request
import urllib
from urllib import parse

app = Flask(__name__)

@app.route("/go", methods=["GET"])
def route():
    url = request.args.get("url")

    if url:
        try:
            req = urllib.request.Request(url)
            with urllib.request.urlopen(req) as response:
                data = response.read()
        except:
            return "Error"
        return data
    else:
        return "Require URL parameter."

app.run(host='0.0.0.0', port=5001)
'

# Python 파일 실행
python myapp.py

# 가상 환경 종료 시
deactivate

 

myapp.py가 잘 실행되면 CLI에서는 아래와 같이 확인할 수 있습니다.

 

myapp.py 코드를 그대로 썼다면, 웹 브라우저에 아래와 같이 입력하면 됩니다.

http://<EC2 Public IP>:5001/go?url=

 

끝!

 

참고 자료

https://tecadmin.net/how-to-install-flask-on-ubuntu/

https://core-research-team.github.io/2022-11-01/AWS-Instance-Meta-data-SSRF-to-RCE

 

 

'IT > Web' 카테고리의 다른 글

Web Server 기본 (Apache & NGINX & MS-IIS)  (0) 2023.11.07
Web 기초 / 용어 정리  (0) 2023.11.07

댓글