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)

1. uWSGI 설정

✔️ uWSGI 설치 후 서버 테스트

# 글로벌 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]으로 서비스에 접근할 수 있다.

✔️ uWSGI 옵션 파일(.ini) 추가

# 디렉토리 구조 생성
$ 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