Django에서 Gunicorn, Nginx 이용하기

Reading time ~2 minutes


Nginx Install

$ sudo apt-get update
$ sudo apt-get install nginx

제대로 동작하는지 확인하기 위해 nginx를 실행해본다.

$ sudo service nginx start

사이트 IP 주소에 접속해서 Welcome to nginx! 페이지가 보이면 정상 동작하는 것이다.


Nginx Setting

Django를 이용해서 서버에 요청을 보낼 수 있도록 Nginx 설정 파일을 생성한다.

/etc/nginx/sites-available/사이트주소

server {
    listen 80;
    server_name 서버_이름;

    location / {
        proxy_pass http://localhost:8000;
    }
}

이 설정은 로컬 포트 8000으로 들어오는 모든 요청을 Django로 보내서 응답하도록 한다.


$ sudo ln -s /etc/nginx/sites-available/사이트주소 /etc/nginx/sites-enable/사이트주소
$ ls -l /etc/nginx/sites-enabled

symlink를 이용하여 사이트를 쉽게 시작하고 종료할 수 있도록 설정한다.


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

기본으로 설정된 Welcome to Nginx 은 제거한다.


Run

$ sudo service nginx reload
$ python manage.py runserver

사이트 IP 주소에 접속해서 원하는 페이지가 보이는지 확인한다.


Gunicorn Install

$ pip install gunicorn


Static file setting

Django 개발 서버는 정적 파일을 알아서 제공해주지만 Gunicorn을 이용하면 해주지 않기 때문에 Nginx가 정적 파일을 제공할 수 있도록 하는 설정이 필요하다.

python manage.py collectstatic

먼저 collectstatic으로 정적 파일들을 Nginx가 찾을 수 있는 폴더에 복사한다.


/etc/nginx/sites-available/사이트주소

server {
    listen 80;
    server_name 서버_이름;

    location /static {
        alias static 파일 경로;
    }

    location / {
        proxy_pass http://localhost:8000;
    }
}

설정 파일을 수정한다.


Run

$ sudo service nginx reload
$ gunicorn 프로젝트명.wsgi:application

사이트에 접속해서 페이지를 확인한다.


참고자료

클린 코드를 위한 테스트 주도 개발 - 해리 J.W.퍼시벌 지음 / 김완섭 옮김

Django test attachment using SimpleUploadedFile

django 에서 첨부파일 기능의 테스트 코드를 작성하는데 모델의 객체를 생성하는 과정에서 test파일을 이용하는 방법을 몰라서 어려움을 겪었다. 이 포스팅에서는 FileField을 필드로 가지고 있는 모델을 테스트 하기 위해 upload된 ...… Continue reading