Web2013. 7. 31. 14:33
 


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


Posted by bayron