파이썬으로 장고(Django) 공략하기: 입문 강의를 정리한 내용입니다.

  • 이전 포스트에서 그대로 SSH 터미널을 종료하면 runserver 명령어로 실행한 웹 앱도 함께 종료된다. 따라서 파이썬의 uwsgi라는 모듈을 설치해보자.
  • WSGI : 웹 서버와 어플리케이션과의 통신을 할 수 있게 해준다.
$ pip install uwsgi
  • uwsgi.ini을 생성한 후 아래의 내용을 작성한다.
$ vi uwsgi.ini
[uwsgi]
chdir=/home/ubuntu/www/{프로젝트 폴더}
module=firstdjango.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/www/{프로젝트 폴더}/django.log
home=/home/ubuntu/www/{프로젝트 폴더}/venv
virtualenv=/home/ubuntu/www/{프로젝트 폴더}/venv
socket=/home/ubuntu/www/{프로젝트 폴더}/uwsgi.sock
chmod-socket=666
  • :wq로 저장 후 아래의 명령어로 지정해준다.
  • [uWSGI] getting INI configuration from uwsgi.ini 라고 뜨며 ls로 조회하면 uwsgi.sock 파일이 생성된 것을 확인할 수 있다.
$ uwsgi --ini uwsgi.ini
  • 장고 웹 앱을 웹 서버인 nginx와 연동해보자.
  • 아래의 명령어로 nginx를 설치한다.
$ sudo apt-get install nginx
  • nginx.conf에 upstream 추가
  • 웹 서버 nginx로 요청이 들어올 떄 웹 앱이 있는 곳을 연결한다.
$ sudo vi /etc/nginx/nginx.conf
http {
    upstream django {
        server unix:/home/ubuntu/www/{프로젝트 폴더}/uwsgi.sock;
}
  • Nginx 설정의 site-enabled 폴더 내에 default 파일 수정
  • uwsgi_pass django;는 추가했던 upstream django를 지칭한다.
$ sudo vi /etc/nginx/sites-enabled/default
server {
    …. (생략) ….
    server_name _;

    location /static/ {
        root /home/ubuntu/www/{프로젝트 폴더};
    }

    location / {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass django;
}
  • :wq로 저장 후 아래의 명령어로 nginx 설정을 갱신한다.
$ sudo service nginx reload
  • 이제 포트 번호없이 IP만으로 요청이 가능하게 된다.