django와 아파치 사용법, mod_wsgi 사용법

django를 Apache_와 〈mod_wsgi’와 함께 배치하는 것은 짱고를 생산하기 위해 시도되고 시험된 방법이다.

mod_wsgi는 Django를 포함한 모든 Python WSGI 애플리케이션을 호스팅할 수 있는 Apache 모듈입니다. Django는 mod_wsgi를 지원하는 Apache의 모든 버전에서 작동합니다.

〈공식 mod_wsgi 설명서’는 mod_wsgi 사용 방법에 대한 모든 세부 정보를 제공하는 자료이다. 설치 및 구성 설명서부터 시작해 보십시오.

기본 구성

mod_wsgi가 설치되어 활성화되면 Apache 서버의 〈httpd.conf’_ 파일을 편집하고 다음을 추가합니다.

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonHome /path/to/venv
WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

《WSGIScriptAlias》 라인에 있는 첫 번째 비트는 애플리케이션을 서비스하려는 기본 URL 경로(〈/〉는 루트 URL을 나타냄)이며, 두 번째 비트는 아래에서 참조하는 WSGI 파일의 위치(일반적으로 프로젝트 패키지 내 《my site》)입니다. 그러면 Apache가 해당 파일에 정의된 WSGI 응용 프로그램을 사용하여 지정된 URL 아래의 모든 요청을 처리하라는 메시지가 표시됩니다.

프로젝트의 Python 종속성을 :mod:〉가상 환경’에 설치할 경우 《WSGiPython Home》을 사용하여 경로를 추가하십시오. 자세한 내용은 〈mod_wsgi 가상 환경 가이드’를 참조하십시오.

《WSG 파이톤 경로》 라인은 당신의 프로젝트 패키지를 파이썬 경로에서 가져올 수 있도록 보장하며, 다시 말해 《내 사이트 가져오기》는 효과가 있다.

《1〈《는 아파치가 당신의 :file:〉wsgi에 접근할 수 있도록 보장한다.파이 파일

다음에는 파일:〉wsgi’를 확인해야 합니다.WSGI 애플리케이션 객체가 있는 py가 존재합니다. Django 버전 1.4부터는 :djadmin:〉start project’가 사용자를 위해 생성되며, 그렇지 않으면 사용자가 생성해야 합니다. :doc 참조:이 파일에 넣어야 할 기본 콘텐츠에 대한 WSGI 개요 문서와 그 밖에 추가할 수 있는 콘텐츠를 보기위해서는 :doc:`WSGI overview documentation 를 참조하세요

경고

여러 개의 Django 사이트가 단일 mod_wsgi 프로세스에서 실행되는 경우, 이들 사이트 모두 먼저 실행되는 사이트의 설정을 사용합니다. 이 문제는 다음을 변경하여 해결할 수 있습니다.

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")

in wsgi.py, to:

os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"

또는 :ref:〉mod_wsgi 데몬 모드 사용’을 통해 각 사이트가 자체 데몬 프로세스로 실행되도록 합니다.

파일 업로드를 위한 《유니코드 인코딩 오류》 수정

비ASC 파일 이름을 가진 파일을 업로드할 때 《유니코드 인코딩 오류》가 발생하는 경우II 문자, Apache가 ASCII가 아닌 파일 이름을 허용하도록 구성되었는지 확인합니다.

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

이 구성을 배치하는 공통 위치는 다음과 같습니다.``/etc/apache2/envvars``.

자세한 내용은 유니코드 참조 안내서 Files 의 섹션을 참조하십시오.

mod_wsgi 데몬모드 사용법

《데몬 모드》는 Windows가 아닌 다른 플랫폼에서 mod_wsgi를 실행하는 데 권장되는 모드입니다. 필요한 데몬 프로세스 그룹을 만들고 이를 실행할 Django 인스턴스를 위임하려면 적절한 ``WSG DaemonProcess》와 《WSGIP ProcessGroup》 지침을 추가해야 한다. 데몬 모드를 사용할 경우 위의 구성에 추가로 필요한 변경 사항은 ``WSGiPythonPath》를 사용할 수 없고 《WSGidaemonProcess》에 대한 《python-path》 옵션을 사용해야 한다는 것이다.

WSGIDaemonProcess example.com python-home=/path/to/venv python-path=/path/to/mysite.com
WSGIProcessGroup example.com

만약 당신이 당신의 프로젝트를 서브디렉토리(이 예에서 https://example.com/mysite로 제공하기를 원한다면, 당신은 위의 구성에 《WSGIScriptAlias》를 추가할 수 있다.

WSGIScriptAlias /mysite /path/to/mysite.com/mysite/wsgi.py process-group=example.com

〈데몬 모드 설정에 대한 세부 정보’는 공식 mod_wsgi 설명서를 참조하십시오.

파일 저장법

Django는 파일 자체를 서비스하지 않으며 선택한 웹 서버에 작업을 맡깁니다.

미디어 서비스를 위해 Django를 실행하지도 않는 별도의 웹 서버를 사용하는 것이 좋습니다. 몇 가지 좋은 선택은 다음과 같습니다.

  • Nginx
  • Apache_의 stripped-down 버전

그러나 만약 당신이 Django와 같은 Apache 《VirtualHost》에서 미디어 파일을 제공하는 것 외에 다른 방법이 없다면, 당신은 Django에 mod_wsgi 인터페이스를 사용하여 일부 URL을 정적 미디어로 서비스하도록 Apache를 설정할 수 있다.

이 예는 현지의 뿌리에 짱고를 세우지만 ``로봇》을 취급한다.txt, ``favicon.ico》 그리고 ``/staticon/》 그리고 ``/media/》 URL 공간에 있는 모든 것을 정적 파일로 저장한다. 다른 모든 URL은 mod_wsgi를 사용하여 제공됩니다.

Alias /robots.txt /path/to/mysite.com/static/robots.txt
Alias /favicon.ico /path/to/mysite.com/static/favicon.ico

Alias /media/ /path/to/mysite.com/media/
Alias /static/ /path/to/mysite.com/static/

<Directory /path/to/mysite.com/static>
Require all granted
</Directory>

<Directory /path/to/mysite.com/media>
Require all granted
</Directory>

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

관리자파일 제공

:모드:`django.contrib.staticfiles의:에 있:`INSTALLED_APPS`, 장고 개발 서버는 자동으로는 관리 앱(그리고 다른 설치된 apps)의 정적 파일을 제공한다. 이것은 하지만 사실이 아닐 때는 다른 서버 배열을 사용한다. 당신은 아파치를 설정하고, 아니면,는 관리 파일을 제공하는 중 웹 서버를 사용하는 책임이 있다.

admin 파일은 django 배포판의 (:file:〉django/contrib/admin/static/admin〉)에 있습니다.

에서는 관리자 파일(앞부분에서 설명한 웹 서버와 함께):mod:〉django.contrib.static files’를 사용하여 정적 파일을 :seting:〉에서 수집하도록 강력 권장합니다.STATIC_ROOT’을 선택한 다음 웹 서버가 서비스하도록 구성합니다. 설정:〉STATIC_ROOT〉 at : setting:〉STATIC_URL)〉), 그러나 다음은 세 가지 다른 접근법이다.

  1. 문서 루트 내에서 관리 정적 파일에 대한 심볼 링크를 생성합니다(이 링크를 사용하려면 Apache 구성에서 《+FollowSymLinks》가 필요할 수 있음).
  2. 위에서 설명한 대로 《Alias》 지시문을 사용하여 적절한 URL(아마도 : setting: 설정)을 별칭으로 지정한다.STATIC_URL〉 + 관리 파일의 실제 위치에 《admin/》.
  3. 관리 정적 파일이 Apache 문서 루트 내에 있도록 복사합니다.

Apache에서 Django의 사용자 데이터베이스에 대해 인증

Django는 Apache가 Django의 인증 백엔드에 대해 사용자를 직접 인증할 수 있도록 하는 핸들러를 제공합니다. :doc:〉mod_wsgi 인증확인 문서’를 참조하십시오.

Back to Top