배포를 위한 Django 설정: Gunicorn

Django 웹 애플리케이션을 개발할 때 일반적으로 사용하는

python manage.py runserver


내장 Django 웹 서버를 시작하고 기본 포트인 8000에서 실행합니다. 이 개발 서버는 코드가 변경되면 자동으로 다시 시작되며 별도의 구성 없이 쉽게 실행할 수 있습니다. 이것은 개발 서버에 적합하므로 Django를 시작하고 실행하려는 경우 개발 서버를 사용하십시오. 이 서버 사용의 단점은 프로덕션용으로 구축되지 않았다는 것입니다. 속도가 느리고 한 번에 많은 요청을 처리할 수 없습니다.

웹 애플리케이션을 프로덕션에 배포하려면 Apache 또는 NGINX와 같은 프로덕션 준비 웹 서버가 필요합니다. 이러한 웹 서버는 일반적으로 Python 애플리케이션과 직접 통신할 수 없습니다. 따라서 첫 번째 단계는 WSGI 서버를 설치하고 구성하는 것입니다. WSGI(Web Server Gateway Interface)는 Python으로 작성된 웹 응용 프로그램이 HTTP 웹 서버와 통신할 수 있도록 하는 표준입니다.



Gunicorn은 WSGI 서버의 예입니다. 이 기사에서는 Django 애플리케이션으로 설치, 구성 및 실행gunicorn하는 방법을 보여줍니다.

가상 환경



첫 번째 단계는 가상 환경을 만들고 Django 및 Gunicorn을 설치하여 환경을 설정하는 것입니다. 저는 Linux를 사용하며 가상 환경을 만드는 가장 좋은 방법은 내장venv 모듈을 사용하는 것입니다.

$ sudo apt-get install python3-venv
$ python3 -m venv .venv
$ source .venv/bin/activate


가상 환경이 생성되고 활성화되면 Django 및 Gunicorn을 설치합니다.

$ pip install django
$ pip install gunicorn


다음으로 myproject 라는 새 Django 프로젝트를 만들고 끝에 마침표(".")를 적어 둡니다.

$ django-admin startproject myproject .


이제 gunicorn 서버를 사용하여 프로젝트를 실행할 수 있는지 확인합니다.

gunicorn myproject.wsgi


Gunicorn은 실행해야 하는 애플리케이션의 이름인 인수를 사용합니다. Django 프로젝트의 경우 프로젝트 디렉터리의 wsgi 파일을 가리킵니다. 다음과 유사한 출력이 표시됩니다.


[2021-06-03 21:48:52 +0200] [8618] [INFO] Starting gunicorn 20.1.0
[2021-06-03 21:48:52 +0200] [8618] [INFO] Listening at: http://127.0.0.1:8000 (8618)
[2021-06-03 21:48:52 +0200] [8618] [INFO] Using worker: sync
[2021-06-03 21:48:52 +0200] [8620] [INFO] Booting worker with pid: 8620


브라우저를 열고 http://127.0.0.1:8000 으로 이동합니다. 모든 것이 예상대로 작동하면 다음과 같은 친숙한 화면이 표시됩니다.



Gunicorn 구성



마지막 섹션에서는 많은 인수 없이 명령줄에서 실행할 수 있음gunicorn을 확인했습니다. 실제로는 로깅, 디버깅, SSL 및 사용할 작업자 수와 같은 항목을 제어하는 ​​매개변수를 사용하여 실행gunicorn하는 것이 좋습니다. 명령줄에서 이러한 많은 매개변수를 gunicorn 스크립트에 전달할 수 있지만 구성 파일을 통해 이 작업을 수행하는 것이 더 쉽습니다.
gunicorn 구성 파일을 만들려면 프로젝트 루트(config와 동일한 수준)에 manage.py라는 이름의 디렉터리를 만들고 그 안에 파일 확장자가 .py인 파일을 만들고 원하는 이름으로 지정합니다. . 규칙은 이름을 지정하는 것입니다gunicorn.conf.py. 여기에서 gunicorn 서버를 구성하는 데 사용할 유효한 설정이나 매개변수를 추가합니다.

내 프로젝트를 다음과 같이 구성했습니다.


# gunicorn.conf.py

command = "/home/vndlovu/django/.venv/bin/gunicorn"
pythonpath = "/home/vndlovu/django/myproject"
bind = "0.0.0.0:8000"
workers = 3



첫 번째 설정commandgunicorn 실행 파일의 경로입니다. Gunicorn은 기본적으로 bin 폴더의 가상 환경에 설치됩니다. 다음 줄은 Python 경로에 추가할 경로를 지정합니다. 이것은 기본적으로 작업 디렉토리의 경로입니다. bind 설정은 수신해야 하는 IP 및 포트를 알려줍니다gunicorn. 여기에서 유닉스 소켓에 바인딩gunicorn할 수도 있습니다. 마지막 설정은 요청 처리에 사용해야 하는 작업자 프로세스gunicorn의 수입니다.

이러한 새 설정을 사용하여 이제 다음과 같이 실행할 수 있습니다gunicorn.

$ gunicorn -c conf/gunicorn.conf.py myproject.wsgi


결론



이 게시물은 gunicorn을 사용하여 애플리케이션을 설치, 구성 및 제공하는 방법을 보여줍니다. Gunicorn은 HTTP 요청을 Python으로 변환하는 데 유용하지만 충분하지 않습니다. 대부분의 경우 대중에게 입구 역할을 하는 웹 서버를 원할 것입니다. 웹 서버는 HTTP 요청을 처리합니다. 이 시리즈의 다음 기사에서는 Nginx 웹 서버를 설정하는 방법을 보여 드리겠습니다.

좋은 웹페이지 즐겨찾기