server : ubuntu 12.04
Flask는 Django와 같이 python 기반의 web framework 이다. Flask의 특징 중 하나는 micro web framework 이라는 점이다. Micro web framework은 micro라는 단어에서도 알 수 있듯이, Django나 Ruby on Rails와 같은 full-stack web framework과는 다르게 low-level로 구현이 가능하다. 이러한 특징은 장단점이 있지만, 필요로 하는 기능만을 light하게 구현할 수 있다는 장점이 있다.
-. 필요한 패키지를 설치한다.
$ sudo apt-get install build-essential
$ sudo apt-get install python-dev
$ sudo apt-get install python-pip
$ sudo apt-get install nginx
$ sudo apt-get install uwsgi
$ sudo apt-get install uwsgi-plugin-python
-. Virtualenv
다양한 서버 환경을 고려하여 python 가상 환경을 설정해주는 virtualenv을 사용하도록 한다.
$ sudo pip install virtualenv
$ virtualenv flask_ex
$ cd flask_ex
$ source bin/activate
$ pip install flask
$ pip install uwsgi
-. Flask App. 개발
Virtualenv로 설정된 디렉토리 내에서 Flask App. 개발을 진행한다. 아래는 가장 간단한 Flask 예제이다. hello.py
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')
-. NGINX 설정
Flask App.을 nginx 웹서버를 통해 서비스하기 위해 설정파일을 수정한다.
$ sudo vim /etc/nginx/sites-available/default
server {
listen 80;
server_name 127.0.0.1;
location / { try_files $uri @app; }
location @app {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
}
}
-. uwsgi 설정
uwsgi는 Flask와 nginx 웹서버간에 연동을 위해서 사용한다.
$ sudo vim /etc/uwsgi/apps-available/uwsgi.ini
[uwsgi]
chdir = /path/to/flask_ex
uid = www-data
gid = www-data
chmod-socket = 666
socket = /tmp/uwsgi.sock
module = hello
callable = app
virtualenv = /path/to/flask_ex
$ sudo ln -s /etc/uwsgi/apps-available/uwsgi.ini /etc/uwsgi/apps-enabled/
-. nginx와 uswgi 재시작
$ sudo service nginx restart
$ sudo service uwsgi restart
$ uwsgi /etc/uwsgi/apps-available/uwsgi.ini &
http://127.0.0.1 로 접속하면 다음과 같이 출력된다. 필자는 localhost가 아니라 별도의 웹서버를 사용하여 접속주소가 달라서 삭제하였다.
'Web' 카테고리의 다른 글
Heroku 를 이용해 flask 웹 어플리케이션 배포하기 (0) | 2013.07.31 |
---|