파이썬으로 장고(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만으로 요청이 가능하게 된다.