Gunicorn은 명령어를 사용하거나 Django, Pyramid, TurboGears와 같은 유명한 프레임워크와 통합하여 실행할 수 있습니다. Gunicorn을 프로덕션 환경에서 배포하는 방법은 Gunicorn 배포를 참조하세요.
Gunicorn을 설치하면 gunicorn
이라는 커맨드 라인 스크립트에 접근할 수 있습니다.
기본 사용법:
$ gunicorn [옵션] [WSGI_APP]
여기서 WSGI_APP
은 $(MODULE_NAME):$(VARIABLE_NAME)
패턴입니다. 모듈 이름은 전체 점으로 구분된 경로일 수 있습니다. 변수 이름은 지정된 모듈에서 찾을 수 있는 WSGI 호출 가능 객체를 나타냅니다.
버전 20.1.0에서 변경: WSGI_APP
은 설정 파일에서 정의되어 있다면 선택적입니다.
테스트 앱 예시:
def app(environ, start_response):
"""가능한 가장 단순한 애플리케이션 객체"""
data = b'Hello, World!\n'
status = '200 OK'
response_headers = [
('Content-type', 'text/plain'),
('Content-Length', str(len(data)))
]
start_response(status, response_headers)
return iter([data])
다음 명령어로 앱을 실행할 수 있습니다:
$ gunicorn --workers=2 test:app
변수 이름은 함수 호출일 수도 있습니다. 이 경우 이름은 모듈에서 가져온 다음 애플리케이션 객체를 얻기 위해 호출됩니다. 이를 "애플리케이션 팩토리" 패턴이라고 일반적으로 부릅니다.
def create_app():
app = FrameworkApp()
...
return app
$ gunicorn --workers=2 'test:create_app()'
위치 및 키워드 인수도 전달될 수 있지만, 환경 변수에서 설정을 불러오는 것이 권장됩니다.
자주 사용되는 인수:
-c CONFIG, --config=CONFIG
- 설정 파일을 지정합니다. 형식은 $(PATH)
, file:$(PATH)
, 또는 python:$(MODULE_NAME)
입니다.-b BIND, --bind=BIND
- 바인딩할 서버 소켓을 지정합니다. 서버 소켓은 $(HOST)
, $(HOST):$(PORT)
, fd://$(FD)
, 또는 unix:$(PATH)
중 하나입니다.-w WORKERS, --workers=WORKERS
- 작업자 프로세스의 수입니다. 일반적으로 이 수는 서버 코어당 2-4 작업자 사이여야 합니다.-k WORKERCLASS, --worker-class=WORKERCLASS
- 실행할 작업자 프로세스의 유형입니다.-n APP_NAME, --name=APP_NAME
- 프로세스 시스템 테이블에서 Gunicorn 프로세스의 이름을 조정할 수 있습니다.환경 변수 GUNICORN_CMD_ARGS
를 사용하여 설정을 지정할 수 있습니다.
Gunicorn은 또한 Django와 Paste Deploy 애플리케이션을 위한 통합을 제공합니다.
Gunicorn은 지정되지 않은 경우 WSGI 호출 가능 객체인 application
을 찾을 것입니다. 따라서 일반적인 Django 프로젝트에서 Gunicorn을 호출하는 방법은 다음과 같습니다:
$ gunicorn myproject.wsgi
참고: 이렇게 하려면 프로젝트가 Python 경로에 있어야 합니다; 가장 간단한 방법은 manage.py
파일과 같은 디렉터리에서 이 명령어를 실행하는 것입니다.
설정 경로를 불러오기 위해 --env
옵션을 사용할 수 있습니다. 필요한 경우 --pythonpath
옵션을 사용하여 애플리케이션 경로를 PYTHONPATH
에 추가할 수도 있습니다:
$ gunicorn --env DJANGO_SETTINGS_MODULE=myproject.settings myproject.wsgi
Pyramid과 Turbogears와 같은 프레임워크는 일반적으로 Paste Deployment 설정 파일을 사용하여 구성됩니다. 이 파일들을 Gunicorn과 함께 사용하고 싶다면 두 가지 접근법이 있습니다.
서버 러너로서 Gunicorn은 pserve
또는 gearbox
와 같은 프레임워크의 명령어를 사용하여 애플리케이션을 제공할 수 있습니다. 설정 파일에서 서버로 Gunicorn을 지정하려면 다음과 같이 작성하십시오:
[server:main]
use = egg:gunicorn#main
host = 127.0.0.1
port = 8080
workers = 3
이 접근법은 Gunicorn을 빠르게 시작하는 가장 빠른 방법입니다만, 몇 가지 제한 사항이 있습니다. Gunicorn은 애플리케이션의 로딩 방식을 제어할 수 없으므로, reload
와 같은 설정은 효과가 없고, 실행 중인 애플리케이션을 뜨거운 업그레이드할 수 없습니다.
Gunicorn의 전체 재로딩 및 뜨거운 코드
업그레이드 기능을 활용하려면, 다음과 같은 명령어로 설정 파일을 실행해야 합니다:
$ gunicorn --paste development.ini
이렇게 하면 Gunicorn은 프레임워크 명령어를 대체하여 애플리케이션을 로딩할 수 있고, 애플리케이션 코드 업데이트와 설정 변경을 지원할 수 있습니다.
더 자세한 내용은 PasteDeploy 문서를 참고하세요.