Post

Flask를 이용한 웹서버 구축 (python)

Flask

flask_imgFlask

Flask는 충분히 복잡한 웹 애플리케이션을 작성할 수 있는 라이브러리이다. 다른 라이브러리나 의존성을 강요하지 않아서 가볍게 시작할 수 있어서 나도 처음으로 웹서버 구현을 Flask로 시도해보았다.

Flask 설치

pip으로 간단하게 설치할 수 있다. 아래 명령어를 터미널에서 실행하면 설치된다.

1
pip install flask

Hello World! 예제

Flask는 Werkzeug와 Jinja라는 다른 파이썬 웹 프레임워크에 대한 래퍼에서 탄생했기 때문에 Flask를 설치하면 자동으로 이 두 프레임워크도 같이 설치된다. 이 모듈을 따로 import해서 사용할 필요는 없고 아래처럼 Flask 자체만 임포트하여 사용할 수 있다.

아래 코드는 특별한 작업 없이 웹서버를 구동시키는 코드이다.

1
2
3
4
5
6
7
8
9
from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello World!'
 
if __name__ == '__main__':
    app.run(host="0.0.0.0", port=80)

이를 실행하고, 웹 브라우저에서 ‘127.0.0.1:포트번호’로 접속하면 ‘Hello World!’가 뜨는 것을 확인할 수 있다.

flask_helloworld.png

Port 5000 is in use by another program.(MacOS) 에러

참고로 Mac에서는 포트번호를 5000으로 설정하면 아래와 같은 에러메세지가 뜬다.

port5000error.png

이에 대한 자세한 원인과 해결 방법에 대해서는 아래 링크에 자세히 나와 있다. 나는 굳이 해결할 필요가 없는 상황이어서 포트번호를 80으로 설정해서 프로젝트를 진행하였다.

[Server] Port 5000 already in use | MacOS 사용자라면 무조건 해결할 방법

간단한 페이지 만들기

Flask에서는 템플릿 폴더를 사용하여 HTML 파일을 관리할 수 있다. 여기서는 template 폴더를 만들어 그 안에 index.html 파일을 생성하고 간단한 페이지를 만드는 방법을 설명한다.

먼저 프로젝트 폴더 안에 templates라는 폴더를 생성한다. 이 폴더에 HTML 파일을 저장할 것이다.

디렉토리 구조

프로젝트 디렉토리 구조는 다음과 같다.

index.html 작성

이제 templates 폴더 안에 index.html 파일을 생성하고 다음과 같이 작성하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask App</title>
</head>
<body>
    <h1>Welcome to My Flask App!</h1>
    <p>This is a simple Flask application.</p>
</body>
</html>

python 코드 수정

위에서 작성한 코드를 수정하여 index.html 템플릿을 렌더링하도록 설정해야 한다.

1
2
3
4
5
6
7
8
9
10
from flask import Flask, render_template

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=80)

render_template 함수를 사용하여 index.html 파일을 렌더링한다.

이제 파이썬 파일을 실행하고 웹 브라우저에서 ‘http://127.0.0.1:80’로 접속하면 index.html 파일이 렌더링되어 표시된다. 접속하면 “Welcome to My Flask App!“라는 메시지와 함께 간단한 페이지를 볼 수 있다.

flask_ex.png

이와 같이 Flask를 사용하여 템플릿을 렌더링하고 간단한 웹 페이지를 만들 수 있다. 추후에 CSS나 JavaScript 파일을 추가하여 더 복잡하고 아름다운 페이지를 만들 수 있다.

This post is licensed under CC BY 4.0 by the author.