Gunicorn 사용 이유
Django의 내장 서버 (runserver)는 실서비스에 부적합하다. Django에는 개발용으로 runserver라는 내장 서버를 탑재하고 있다. 실제 서비스를 하기 전에 개발을 하면서 이용하게 되는 테스트 서버이다. 특징 중 하나는 소스코드의 수정이 이루어지면 이를 detect 하여 바뀐 것이 있을 경우 서버를 reload 하게 된다. 하지만 실제 서비스를 하기엔 성능상의 한계, 보안 등 다양한 문제점이 존재해 wsgi + Nginx + Gunicorn을 사용하게 된다.
Django.core.servers.basehttp 파일
```
DON'T USE IT FOR PRODUCTION USE!
```
위의 파일에 아래와 같은 문구가 주석으로 담겨져 있다. 즉 실제 서비스에 runserver를 이용하면 안 된다는 뜻을 내 표하고 있다. 이러한 이유로 사용할 수 없는 것이며, gunicorn을 가상 환경에 설치한다.
Gunicorn 설치
$(venv) $ pip install gunicorn # gunicorn 설치
Gunicorn 실행
$(venv) $ gunicorn --bind 0:8000 yourapp.wsgi:application
# 포트와 앱이름을 설정하여 위의 명령으로 구니콘을 실행할 수 있다.
# python manage.py runserver 0:8000 의 명령어를 대체한 셈이다.
Gunicorn 서비스 등록하기
systemd에 서비스 파일을 등록하여 서버가 재시작할때 Gunicorn도 실행되도록 설정한다.
$(venv) $ sudo systemctl daemon-relaod
# 서비스를 새로 등록하거나 수정할 경우 데몬을 리로드 해주어야 한다.
서비스 실행하고 등록하기
# start -> enable -> status 과정을 거치고 나면 Gunicorn이 실행되는것을 확인할수 있다.
$(venv) $ sudo systemctl start gunicorn # 작성한 서비스 실행하기
$(venv) $ sudo systemctl enable gunicorn # 서버 재시작시 자동으로 실행
$(venv) $ sudo systemctl status gunicorn.service # 실행한 서비스 상태 보기
$(venv) $ sudo systemctl stop gunicorn # 서비스 중지
$(venv) $ sudo systemctl restart gunicorn # 서비스 재시작
Gunicorn 실행 확인
# 실행 상태 확인
$(venv) $ sudo systemctl status gunicorn-django.service
runserver 를 실행하였을 때와 마찬가지로 해당 링크 http://127.0.0.1:8000에 접속해보면 정상적으로 장고 기본 페이지를 볼 수 있다. 여기까지 완료했다면 Django와 Gunicorn을 연동한 것이다.
'컴퓨터사이언스' 카테고리의 다른 글
닷넷프레임워크 + 닷넷프레임워크 응용프로그램 문제 해결법! (0) | 2022.04.22 |
---|---|
IPX/SPX 란? 그리고 블리자드 기존 출시작 IPX 프로토콜 및 LAN 정보 (4) | 2022.04.19 |
WSGI란? (0) | 2022.04.17 |
구니콘 (Gunicorn) 이란? (0) | 2022.04.17 |
HTTP란? (2) | 2022.04.17 |
댓글