python manage.py runserver로 서버는 띄웠다. 그러나 테스트용 서버는 많은 request를 처리하기 힘들다고 한다. 따라서, 1.[충분히 성능이 좋은 웹서버]를 세팅하고, 2.[웹서버(또는 클라이언트)와 Django를 연결해줄 웹어플리케이션서버]를 찾아서 연결해본다.
🏥 uWSGI, Nginx 정리 🏥
Django 배포연습 2 - nginx, wsgi 개념
따라서 우리는 성공적인 웹서비스의 배포를 위해 uWSGI와 Nginx의 세팅을 해줄 것이다.
지금부터 [PROJECT]
는 manage.py
가 있는 위치를, [CONFIG]
는 settings.py
가 있는 위치를 의미한다.
(현재 강의 기준 [PROJECT]
는 piro-session
, [CONFIG]
는 testing
)
# 글로벌 uWSGI 패키지 설치
$ sudo -H pip install uwsgi
# 가상환경 안에 uWSGI 패키지 설치
$ cd /home/ubuntu/[PROJECT] # 프로젝트 경로로 이동
$ source venv/bin/activate # 가상환경 진입
$ pip install uwsgi # 가상환경 안에 uWSGI 설치
# 패키지 설치 후 uWSGI 서버 테스트
$ uwsgi --http :8000 --home /home/ubuntu/[PROJECT]/venv --chdir /home/ubuntu/[PROJECT] -w [CONFIG].wsgi
# 성공적으로 수행했을 경우 uwsgi가 돌아가며, 서버가 run된다.
# python manage.py runserver 했을때와 마찬가지로 [ip주소:8000]으로 서비스에 접근할 수 있다.
# 디렉토리 구조 생성
$ sudo mkdir -p /etc/uwsgi/sites # -p 옵션은 중간에 없는 디렉토리까지 같이 생성해준다.
# dir: /etc/uwsgi/sites/[PROJECT].ini
# dir: /home/[USER]/run/uwsgi/[PROJECT].ini -> 애플리케이션이 하나만 있을 경우 run 폴더에 바로 설정해도 무관
# 옵션파일 생성
$ sudo vi /etc/uwsgi/sites/[PROJECT].ini