이번 장에서는 python flask 로 만든 web app 를 구성하고 nginx 와 연동해 보도록 하겠습니다.

사전에 python3 가 설치되어 있어야 합니다.


flask project 생성

먼저 flask app project 를 생성해 보도록 하겠습니다.

"flask-project" 라는 폴더를 생성하고 Virtual Env 를 설치해 줍니다.

$ mkdir flask-project
$ cd flask-project
$ python3 -m venv venv
BASH


venv 를 활성화합니다.

$ . venv/bin/activate
BASH


이제 Python Flask 를 사용자 모드로 설치합니다.

$ pip install Flask --user
BASH

flask app 구동

다음 내용으로 테스트용 web app 을 만들어서 hello.py 로 저장합니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return "<p>Hello, World!</p>"
PY


이제 python flask 에 내장된 기본 웹 서버를 실행해서 테스트 해봅니다.

FLASK_APP=hello flask run --host 127.0.0.1 --port 3000
BASH

브라우저에서 연결한 후에 / 와 /hello 라우팅에 연결해서 정상 작동 여부를 확인합니다.


방화벽때문에 연결이 안 될 경우 방화벽을 여는 것보다는 서버에서 curl 등 커맨드에서 연결 확인하는 게 좋습니다.

$ curl -v localhost:3000/hello
BASH


gunicorn 연동

이제 python 의 연동 규격인 WSGI 를 구현한 전용 WAS 로 python web app 을 구동할 차례로 WSGI WAS 로는 규니콘(gunicorn)을 사용하겠습니다.

먼저 다음 명령어로 gunicorn 을 설치합니다.

pip install gunicorn
BASH


현재 폴더에 wsgi.py  만들고 다음 내용을 추가합니다.

from hello import app

if __name__ == "__main__":
    app.run()
CODE


이제 gunicorn 을 구동합니다.

gunicorn --bind localhost:3000 wsgi:app
BASH


nginx 연동



Ref