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 데몬 모드 사용’을 통해 각 사이트가 자체 데몬 프로세스로 실행되도록 합니다.

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

If you get a UnicodeEncodeError when uploading or writing files with file names or content that contains non-ASCII characters, make sure Apache is configured to support UTF-8 encoding:

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

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

Alternatively, if you are using mod_wsgi daemon mode you can add lang and locale options to the WSGIDaemonProcess directive:

WSGIDaemonProcess example.com lang='en_US.UTF-8' locale='en_US.UTF-8'

자세한 내용은 유니코드 참조 안내서 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 doesn’t serve files itself; it leaves that job to whichever web server you choose.

We recommend using a separate web server – i.e., one that’s not also running Django – for serving media. Here are some good choices:

  • 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>

관리자파일 제공

When django.contrib.staticfiles is in INSTALLED_APPS, the Django development server automatically serves the static files of the admin app (and any other installed apps). This is however not the case when you use any other server arrangement. You’re responsible for setting up Apache, or whichever web server you’re using, to serve the admin files.

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

We strongly recommend using django.contrib.staticfiles to handle the admin files (along with a web server as outlined in the previous section; this means using the collectstatic management command to collect the static files in STATIC_ROOT, and then configuring your web server to serve STATIC_ROOT at STATIC_URL), but here are three other approaches:

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

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

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

Back to Top