본문 바로가기

Programming

[Python] Flask & Nginx & Gunicorn 연결하기

[Python] Flask & Nginx & Gunciorn 연결하기

Flask Gunicorn Nginx

이번에 동아리의 친구와 함께 간단한 웹 개발을 했었다. 둘 다 웹 프로그래밍에 익숙치 않아 공부 혹은 개인적으로 사용할 용도로 Flask 자체에 있는 웹 서버로 구동하고 있었는데, 의외로 동아리 사람들이 많이 사용을 하게 되어 동접자 10명만 넘어도 CSS, JS, HTML 파일들을 제대로 불러오지 못하고 렉이 걸리는 문제가 발생했었다.
그래서 웹 서버와 Flask를 연동하자는 생각이 들었고, 하는 김에 전에 들었던 Gunicorn WSGI까지 ㅇ녀동해서 사용해 보려고한다.

  • WSGI & Gunicorn
  • Nginx
  • Flask & Gunicorn & Nginx 연동

WSGI & Gunicorn

추후 추가

Nginx

추후 추가

Flask & Gunicorn & Nginx 연결

서버 : Ubuntu 12.04 LTS(64-bit)
Python v2.7.3

기본적으로

sudo apt-get install nginx-full
sudo apt-get install python-pip
sudo apt-get install python-dev
pip install virtualenv

등등을 설치해야 한다.

그 후 프로젝트 폴더와 virtualenv를 생성하고, 로드

mkdir flask-app ; cd flask-app
virtualenv py-env
source py-env/bin/activate

flask와 Gunicorn 설치

pip install flask
pip install gunicorn

간단한 Flask 앱을 생성한다.
vi run.py

이 후 Nginx 설정을 해야한다. 그 전에 default 삭제

    sudo rm /etc/nginx/sites-available/default
    sudo rm /etc/nginx/sites-enabled/default

    sudo vi /etc/nginx/sites-available/nginx-test
    server{
        location / {
            proxy_pass http://127.0.0.1:8000;
        }
        location /static{
            alias /home/nginx-test/flask-app/static;
            proxy_pass http://127.0.0.1:8000;
        }
    }
    sudo ln -s /etc/nginx/sites-available/nginx-test /etc/nginx/sites-enabled/

Nginx를 재시작하고

sudo service nginx restart

nginx restart

gunicorn을 이용해 8000포트로 어플리케이션을 실행한다

gunicorn run:app -b localhost:8000

gunicorn run