# Django 5.2.9 문서

# 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는 파일 자체를 서비스하지 않습니다; 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)의 정적 파일을 제공한다. 이것은 하지만 사실이 아닐 때는 다른 서버 배열을 사용한다. 당신은 아파치를 설정하고, 아니면,는 관리 파일을 제공하는 중 웹 서버를 사용하는 책임이 있다.

The admin files live in (django/contrib/admin/static/admin) of the Django distribution.

에서는 관리자 파일(앞부분에서 설명한 웹 서버와 함께):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 인증확인 문서’를 참조하십시오.