Apache2 + Flask 환경 구성

Apache2 에서 wsgi 모듈을 이용하여 Flask 개발 환경을 구성하는 방법에 대해 간단히 기록한다.

일단, Apache2에서 wsgi 모듈을 설치해야 한다.

sudo apt-get install libapache2-mod-wsgi

그 후에 간단한 구조를 구성해준다. 나는 그냥 간단하게 /FLASK/flask_app 폴더에 __init__.py와 flask_app.wsgi 파일을 생성해두었다.

/FLASK/flask_app/
                /__init__.py
                /flask_app.wsgi

먼저 __init__.py 에 Flask를 이용한 화면 뷰를 구성해준다.

import flask

app = flask.Flask(__name__)

@app.route("/")
def ok_print():
    return "OK!"

if __name__ == '__main__':
    app.run()

간단하게 접속하면 “OK!”를 뿌려주는 뷰이다. 다음으로 flask_app.wsgi 파일을 생성해준다.

#!/usr/bin/python
import sys
sys.path.insert(0, "/FLASK/")
from flask_app import app as application

간단히 보면 현재 패스를 /FLASK로 변경하고 flask_app의 app을 application으로 할당하여 apache2 mod_wsgi 모듈을 통해 실행한다는 의미로 이해된다. 그리고 /FLASK 폴더의 권한을 www-data:www-data로 할당한다.

chown -R www-data:www-data /FLASK

마지막으로 VirtualHost 세팅을 아래을 위해 /etc/apache2/sites-available 폴더에 파일을 하나 생성한다. 나는 편리한 사용을 위해 ok.teshi.net.conf 라는 파일명으로 생성해주었다. 해당 파일 내용은 아래와 같다.

<VirtualHost *:80>
        ServerAdmin [Mail Address]
        ServerName ok.teshi.net
        ErrorLog ${APACHE_LOG_DIR}/ok/error.log
        CustomLog ${APACHE_LOG_DIR}/ok/access.log combined

        WSGIDaemonProcess flask_app user=www-data group=www-data threads=5
        WSGIProcessGroup flask_app
        WSGIScriptAlias / /FLASK/flask_app/flask_app.wsgi
        <Directory /FLASK/flask_app>
            Order deny,allow
            Allow from all
            Require all granted
        </Directory>
        <Files /FLASK/flask_app/flask_app.wsgi>
            Order deny,allow
            Allow from all
            Require all granted
        </Files>
</VirtualHost>

위의 파일을 생성한 후,

sudo a2ensite ok.teshi.net

명령어를 사용하여 사이트를 VirtualHost에 추가한다. 그 후 Apache를 다시 불러온다.

sudo systemctl reload apache2

위와 같이 실행한 후 웹페이지를 열어 접속해본다.

댓글 남기기

이메일은 공개되지 않습니다.