[TIL]GUNICORN

여주링·2021년 1월 24일
3

TIL

목록 보기
8/13
post-custom-banner

위코드 2차때 한번 경험해본 적이 있는 gunicorn. 그런데 발표당일 gunicorn이 돌아가지 않아 진땀을 흘린 경험이 있다. 회사에서도 적용하는 개념이라서 이번에 한번 제대로 사용해보았다.

Gunicorn이란?

Gunicorn(구니콘)은 웹 서버 게이트웨이 인터페이스(WSGI)에서 가장 인기있는 오픈소스이다.

WSGI(Web Server Gateway Interface) : 파이썬에서 어플리케이션, 즉 파이썬 스크립트(웹 어플리케이션)가 웹 서버와 통신하기 위한 인터페이스 이다.

즉 runserver처럼 일시적인 서버 통신이 아닌 지속적으로 통신이 가능하게 해주는 인터페이스!

Gunicorn 설치

#설치
pip install gunicorn

#잘되는지 확인(manage.py 가 있는 파일)
gunicorn --bind 0:8000 config.wsgi:application

Gunicorn 실행

#gunicorn 실행
$ nohup gunicorn --bind=0.0.0.0:8000 ncnc.wsgi
$ gunicorn --bind=0.0.0.0:8000 ncnc.wsgi (--daemon --reload)
--daemon: 데몬 프로세스로 실행
--reload: 소스 변경시 재구동

#gunicorn 종료
$ pkill -f gunicorn

Gunicorn 설정

Gunicorn을 호출하는데 사용되는 설정방법은 여러방법이 존재한다. 공식문서에 따르면

1.Framework Settings
2.Configuration File
3.Command Line

순으로 먼저 참고가 된다고 한다.

👉관련 공식문서

다양한 설정 방법이 존재하지만 나는 프로젝트 파일에서 manage.py가 있는 디렉토리에 config.py를 만들고 거기에 gunicorn을 설정해두었다.
보통은 gunicorn service 등록스크립트라는 걸 특정경로에 맞추는 작업을 하고 해당 스크립트를 등록하는 작업을 하지만 이번에는 config.py로 진행했다.

#프로젝트파일(manage.py가 있는 위치)에서 config.py를 생성
import multiprocessing
  
bind = '127.0.0.1:8000'
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = 'sync'
raw_env = ['DJANGO_SETTINGS_MODULE=settings파일이 위치한 경로']
pidfile = '/home/ubuntu/gunicorn_main.pid'
timeout = 30

이런식으로 지정해주면 된다

그리고 해당파일에 대한 경로를 구니콘에게 알려주기위해 구성파일 경로를 지정하자

gunicorn -c [config.py]
profile
🌱Backend Developer👩‍💻
post-custom-banner

0개의 댓글