---
title: "django와 아파치 사용법, mod_wsgi 사용법"
version: 6.0
locale: ko
source: https://docs.djangoproject.com/ko/6.0/howto/deployment/wsgi/modwsgi/
canonical: https://djangodocs.dev/ko/6.0/howto/deployment/wsgi/modwsgi/
---
# django와 아파치 사용법, mod\_wsgi 사용법

django를 Apache\_와 ‘mod\_wsgi’와 함께 배치하는 것은 장고를 생산하기 위해 시도되고 시험된 방법이다.

mod\_wsgi는 Django를 포함한 모든 Python [WSGI](https://wsgi.readthedocs.io/en/latest/) 애플리케이션을 호스팅할 수 있는 Apache 모듈입니다. Django는 mod\_wsgi를 지원하는 Apache의 모든 버전에서 작동합니다.

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

## 기본 구성

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

```apache
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 를 참조하세요

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

> **파일 업로드를 위한 “유니코드 인코딩 오류” 수정**
>
> ASCII가 아닌 문자가 포함된 파일 이름이나 콘텐츠로 파일을 업로드하거나 파일에 쓸 때 UnicodeEncodeError\`\`가 발생한다면 Apache가 UTF-8 인코딩을 지원하도록 구성되어 있는지 확인하세요.
>
> ```shell
> export LANG='en_US.UTF-8'
> export LC_ALL='en_US.UTF-8'
> ```
>
> 이 구성을 배치하는 공통 위치는 다음과 같습니다.\`\`/etc/apache2/envvars\`\`.
>
> 또는 [mod\_wsgi 데몬 모드](#daemon-mode) 를 사용하고 있다면 `WSGIDaemonProcess` 지시문에 `lang` 및 `locale` 옵션을 추가할 수 있습니다.
>
> ```text
> WSGIDaemonProcess example.com lang='en_US.UTF-8' locale='en_US.UTF-8'
> ```
>
> 자세한 내용은 유니코드 참조 안내서  [Files](/ko/6.0/ref/unicode/#unicode-files) 의 섹션을 참조하십시오.

## `mod_wsgi` 데몬모드 사용법

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

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

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

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

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

## 파일 저장법

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

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

- [Nginx](https://nginx.org/en/)
- Apache\_의 stripped-down 버전

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

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

```apache
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>
```

## 관리자파일 제공

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

admin 파일은 Django 배포판의 ([django/contrib/admin/static/admin](https://github.com/django/django/blob/stable/6.0.x/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 인증확인 문서’를 참조하십시오.
