{"title":"django와 아파치 사용법, mod_wsgi 사용법","version":"3.1","locale":"ko","docname":"howto/deployment/wsgi/modwsgi","url":"/ko/3.1/howto/deployment/wsgi/modwsgi/","canonical":"https://djangodocs.dev/ko/3.1/howto/deployment/wsgi/modwsgi/","summary":"django를 Apache_와 ‘mod_wsgi’와 함께 배치하는 것은 짱고를 생산하기 위해 시도되고 시험된 방법이다. mod_wsgi는 Django를 포함한 모든 Python WSGI 애플리케이션을 호스팅할 수 있는 Apache 모듈입니다. Django는 mod_wsgi를 지원하는…","html":"<h1>django와 아파치 사용법, mod_wsgi 사용법<a class=\"heading-anchor\" href=\"#how-to-use-django-with-apache-and-mod-wsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>django를 Apache_와 ‘mod_wsgi’와 함께 배치하는 것은 짱고를 생산하기 위해 시도되고 시험된 방법이다.</p>\n<p>mod_wsgi는 Django를 포함한 모든 Python <a class=\"reference external\" href=\"https://wsgi.readthedocs.io/en/latest/\">WSGI</a> 애플리케이션을 호스팅할 수 있는 Apache 모듈입니다. Django는 mod_wsgi를 지원하는 Apache의 모든 버전에서 작동합니다.</p>\n<p>‘공식 mod_wsgi 설명서’는 mod_wsgi 사용 방법에 대한 모든 세부 정보를 제공하는 자료이다. 설치 및 구성 설명서부터 시작해 보십시오.</p>\n<section id=\"basic-configuration\">\n<h2>기본 구성<a class=\"heading-anchor\" href=\"#basic-configuration\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>mod_wsgi가 설치되어 활성화되면 Apache 서버의 ‘httpd.conf’_ 파일을 편집하고 다음을 추가합니다.</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">WSGIScriptAlias</span><span class=\"w\"> </span>/<span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n<span class=\"nb\">WSGIPythonHome</span><span class=\"w\"> </span><span class=\"sx\">/path/to/venv</span>\n<span class=\"nb\">WSGIPythonPath</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com</span>\n\n<span class=\"nt\">&lt;Directory</span><span class=\"w\"> </span><span class=\"s\">/path/to/mysite.com/mysite</span><span class=\"nt\">&gt;</span>\n<span class=\"nt\">&lt;Files</span><span class=\"w\"> </span><span class=\"s\">wsgi.py</span><span class=\"nt\">&gt;</span>\n<span class=\"nb\">Require</span><span class=\"w\"> </span><span class=\"k\">all</span><span class=\"w\"> </span>granted\n<span class=\"nt\">&lt;/Files&gt;</span>\n<span class=\"nt\">&lt;/Directory&gt;</span>\n</code></pre></div>\n<p>“WSGIScriptAlias” 라인에 있는 첫 번째 비트는 애플리케이션을 서비스하려는 기본 URL 경로(‘/’는 루트 URL을 나타냄)이며, 두 번째 비트는 아래에서 참조하는 WSGI 파일의 위치(일반적으로 프로젝트 패키지 내 “my site”)입니다. 그러면 Apache가 해당 파일에 정의된 WSGI 응용 프로그램을 사용하여 지정된 URL 아래의 모든 요청을 처리하라는 메시지가 표시됩니다.</p>\n<p>프로젝트의 Python 종속성을 :mod:’가상 환경’에 설치할 경우 “WSGiPython Home”을 사용하여 경로를 추가하십시오. 자세한 내용은 ‘mod_wsgi 가상 환경 가이드’를 참조하십시오.</p>\n<p>“WSG 파이톤 경로” 라인은 당신의 프로젝트 패키지를 파이썬 경로에서 가져올 수 있도록 보장하며, 다시 말해 “내 사이트 가져오기”는 효과가 있다.</p>\n<p>“1‘“는 아파치가 당신의 :file:’wsgi에 접근할 수 있도록 보장한다.파이 파일</p>\n<p>다음에는 파일:’wsgi’를 확인해야 합니다.WSGI 애플리케이션 객체가 있는 py가 존재합니다. Django 버전 1.4부터는 :djadmin:’start project’가 사용자를 위해 생성되며, 그렇지 않으면 사용자가 생성해야 합니다. :doc 참조:이 파일에 넣어야 할 기본 콘텐츠에 대한 WSGI 개요 문서와 그 밖에 추가할 수 있는 콘텐츠를 보기위해서는 :doc:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>WSGI overview documentation 를 참조하세요</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">경고</p>\n<p>여러 개의 Django 사이트가 단일 mod_wsgi 프로세스에서 실행되는 경우, 이들 사이트 모두 먼저 실행되는 사이트의 설정을 사용합니다. 이 문제는 다음을 변경하여 해결할 수 있습니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">environ</span><span class=\"o\">.</span><span class=\"n\">setdefault</span><span class=\"p\">(</span><span class=\"s2\">&quot;DJANGO_SETTINGS_MODULE&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;{{ project_name }}.settings&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>in <code class=\"docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code>, to:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">environ</span><span class=\"p\">[</span><span class=\"s2\">&quot;DJANGO_SETTINGS_MODULE&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;{{ project_name }}.settings&quot;</span>\n</code></pre></div>\n<p>또는 :ref:’mod_wsgi 데몬 모드 사용’을 통해 각 사이트가 자체 데몬 프로세스로 실행되도록 합니다.</p>\n</aside>\n<aside class=\"admonition-fixing-unicodeencodeerror-for-file-uploads admonition\">\n<p class=\"admonition-title\">파일 업로드를 위한 “유니코드 인코딩 오류” 수정</p>\n<p>비ASC 파일 이름을 가진 파일을 업로드할 때 “유니코드 인코딩 오류”가 발생하는 경우II 문자, Apache가 ASCII가 아닌 파일 이름을 허용하도록 구성되었는지 확인합니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">export</span> <span class=\"n\">LANG</span><span class=\"o\">=</span><span class=\"s1\">&#39;en_US.UTF-8&#39;</span>\n<span class=\"n\">export</span> <span class=\"n\">LC_ALL</span><span class=\"o\">=</span><span class=\"s1\">&#39;en_US.UTF-8&#39;</span>\n</code></pre></div>\n<p>이 구성을 배치하는 공통 위치는 다음과 같습니다.``/etc/apache2/envvars``.</p>\n<p>자세한 내용은 유니코드 참조 안내서  <a class=\"reference internal\" href=\"/ko/3.1/ref/unicode/#unicode-files\"><span class=\"std std-ref\">Files</span></a> 의 섹션을 참조하십시오.</p>\n</aside>\n</section>\n<section id=\"using-mod-wsgi-daemon-mode\">\n<span id=\"daemon-mode\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code> 데몬모드 사용법<a class=\"heading-anchor\" href=\"#using-mod-wsgi-daemon-mode\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>“데몬 모드”는 Windows가 아닌 다른 플랫폼에서 mod_wsgi를 실행하는 데 권장되는 모드입니다. 필요한 데몬 프로세스 그룹을 만들고 이를 실행할 Django 인스턴스를 위임하려면 적절한 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>WSG DaemonProcess”와 “WSGIP ProcessGroup” 지침을 추가해야 한다. 데몬 모드를 사용할 경우 위의 구성에 추가로 필요한 변경 사항은 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>WSGiPythonPath”를 사용할 수 없고 “WSGidaemonProcess”에 대한 “python-path” 옵션을 사용해야 한다는 것이다.</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">WSGIDaemonProcess</span><span class=\"w\"> </span>example.com<span class=\"w\"> </span>python-home=/path/to/venv<span class=\"w\"> </span>python-path=/path/to/mysite.com\n<span class=\"nb\">WSGIProcessGroup</span><span class=\"w\"> </span>example.com\n</code></pre></div>\n<p>만약 당신이 당신의 프로젝트를 서브디렉토리(이 예에서 <a class=\"reference external\" href=\"https://example.com\">https://example.com</a>/mysite로 제공하기를 원한다면, 당신은 위의 구성에 “WSGIScriptAlias”를 추가할 수 있다.</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">WSGIScriptAlias</span><span class=\"w\"> </span><span class=\"sx\">/mysite</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span><span class=\"w\"> </span>process-group=example.com\n</code></pre></div>\n<p>‘데몬 모드 설정에 대한 세부 정보’는 공식 mod_wsgi 설명서를 참조하십시오.</p>\n</section>\n<section id=\"serving-files\">\n<span id=\"id1\"></span><h2>파일 저장법<a class=\"heading-anchor\" href=\"#serving-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django는 파일 자체를 서비스하지 않으며 선택한 웹 서버에 작업을 맡깁니다.</p>\n<p>미디어 서비스를 위해 Django를 실행하지도 않는 별도의 웹 서버를 사용하는 것이 좋습니다. 몇 가지 좋은 선택은 다음과 같습니다.</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference external\" href=\"https://nginx.org/en/\">Nginx</a></p></li>\n<li><p>Apache_의 stripped-down 버전</p></li>\n</ul>\n<p>그러나 만약 당신이 Django와 같은 Apache “VirtualHost”에서 미디어 파일을 제공하는 것 외에 다른 방법이 없다면, 당신은 Django에 mod_wsgi 인터페이스를 사용하여 일부 URL을 정적 미디어로 서비스하도록 Apache를 설정할 수 있다.</p>\n<p>이 예는 현지의 뿌리에 짱고를 세우지만 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>로봇”을 취급한다.txt, <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>favicon.ico” 그리고 <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>/staticon/” 그리고 <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>/media/” URL 공간에 있는 모든 것을 정적 파일로 저장한다. 다른 모든 URL은 mod_wsgi를 사용하여 제공됩니다.</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">Alias</span><span class=\"w\"> </span><span class=\"sx\">/robots.txt</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/static/robots.txt</span>\n<span class=\"nb\">Alias</span><span class=\"w\"> </span><span class=\"sx\">/favicon.ico</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/static/favicon.ico</span>\n\n<span class=\"nb\">Alias</span><span class=\"w\"> </span><span class=\"sx\">/media/</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/media/</span>\n<span class=\"nb\">Alias</span><span class=\"w\"> </span><span class=\"sx\">/static/</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/static/</span>\n\n<span class=\"nt\">&lt;Directory</span><span class=\"w\"> </span><span class=\"s\">/path/to/mysite.com/static</span><span class=\"nt\">&gt;</span>\n<span class=\"nb\">Require</span><span class=\"w\"> </span><span class=\"k\">all</span><span class=\"w\"> </span>granted\n<span class=\"nt\">&lt;/Directory&gt;</span>\n\n<span class=\"nt\">&lt;Directory</span><span class=\"w\"> </span><span class=\"s\">/path/to/mysite.com/media</span><span class=\"nt\">&gt;</span>\n<span class=\"nb\">Require</span><span class=\"w\"> </span><span class=\"k\">all</span><span class=\"w\"> </span>granted\n<span class=\"nt\">&lt;/Directory&gt;</span>\n\n<span class=\"nb\">WSGIScriptAlias</span><span class=\"w\"> </span>/<span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n\n<span class=\"nt\">&lt;Directory</span><span class=\"w\"> </span><span class=\"s\">/path/to/mysite.com/mysite</span><span class=\"nt\">&gt;</span>\n<span class=\"nt\">&lt;Files</span><span class=\"w\"> </span><span class=\"s\">wsgi.py</span><span class=\"nt\">&gt;</span>\n<span class=\"nb\">Require</span><span class=\"w\"> </span><span class=\"k\">all</span><span class=\"w\"> </span>granted\n<span class=\"nt\">&lt;/Files&gt;</span>\n<span class=\"nt\">&lt;/Directory&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"serving-the-admin-files\">\n<span id=\"id3\"></span><h2>관리자파일 제공<a class=\"heading-anchor\" href=\"#serving-the-admin-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">:모드:`django.contrib.staticfiles의:에 있:`INSTALLED_APPS`</span></a>, 장고 개발 서버는 자동으로는 관리 앱(그리고 다른 설치된 apps)의 정적 파일을 제공한다. 이것은 하지만 사실이 아닐 때는 다른 서버 배열을 사용한다. 당신은 아파치를 설정하고, 아니면,는 관리 파일을 제공하는 중 웹 서버를 사용하는 책임이 있다.</p>\n<p>admin 파일은 django 배포판의 (:<a class=\"reference external\" href=\"file:'django/contrib/admin/static/admin\">file:’django/contrib/admin/static/admin</a>’)에 있습니다.</p>\n<p>에서는 관리자 파일(앞부분에서 설명한 웹 서버와 함께):mod:’django.contrib.static files’를 사용하여 정적 파일을 :seting:’에서 수집하도록 강력 권장합니다.STATIC_ROOT’을 선택한 다음 웹 서버가 서비스하도록 구성합니다. 설정:’STATIC_ROOT’ at : setting:’STATIC_URL)’), 그러나 다음은 세 가지 다른 접근법이다.</p>\n<ol class=\"arabic simple\">\n<li><p>문서 루트 내에서 관리 정적 파일에 대한 심볼 링크를 생성합니다(이 링크를 사용하려면 Apache 구성에서 “+FollowSymLinks”가 필요할 수 있음).</p></li>\n<li><p>위에서 설명한 대로 “Alias” 지시문을 사용하여 적절한 URL(아마도 : setting: 설정)을 별칭으로 지정한다.STATIC_URL’ + 관리 파일의 실제 위치에 “admin/”.</p></li>\n<li><p>관리 정적 파일이 Apache 문서 루트 내에 있도록 복사합니다.</p></li>\n</ol>\n</section>\n<section id=\"authenticating-against-django-s-user-database-from-apache\">\n<h2>Apache에서 Django의 사용자 데이터베이스에 대해 인증<a class=\"heading-anchor\" href=\"#authenticating-against-django-s-user-database-from-apache\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django는 Apache가 Django의 인증 백엔드에 대해 사용자를 직접 인증할 수 있도록 하는 핸들러를 제공합니다. :doc:’mod_wsgi 인증확인 문서’를 참조하십시오.</p>\n</section>","rootId":"how-to-use-django-with-apache-and-mod-wsgi","toc":[{"title":"기본 구성","anchor":"basic-configuration","children":[]},{"title":"mod_wsgi 데몬모드 사용법","anchor":"using-mod-wsgi-daemon-mode","children":[]},{"title":"파일 저장법","anchor":"serving-files","children":[]},{"title":"관리자파일 제공","anchor":"serving-the-admin-files","children":[]},{"title":"Apache에서 Django의 사용자 데이터베이스에 대해 인증","anchor":"authenticating-against-django-s-user-database-from-apache","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"“How-to” 가이드","url":"/ko/3.1/howto/"},{"docname":"howto/deployment/index","title":"Django 배포하기","url":"/ko/3.1/howto/deployment/"},{"docname":"howto/deployment/wsgi/index","title":"WSGI를 사용하여 배포하는 방법","url":"/ko/3.1/howto/deployment/wsgi/"}],"prev":{"docname":"howto/deployment/wsgi/uwsgi","title":"uWSGI와 함께 django를 사용하는 방법","url":"/ko/3.1/howto/deployment/wsgi/uwsgi/"},"next":{"docname":"howto/deployment/wsgi/apache-auth","title":"Apache에서 Django의 사용자 데이터베이스에 대해 인증","url":"/ko/3.1/howto/deployment/wsgi/apache-auth/"},"formats":{"html":"/ko/3.1/howto/deployment/wsgi/modwsgi/","markdown":"/ko/3.1/howto/deployment/wsgi/modwsgi.md","json":"/ko/3.1/howto/deployment/wsgi/modwsgi.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/howto/deployment/wsgi/modwsgi.txt","official":"https://docs.djangoproject.com/ko/3.1/howto/deployment/wsgi/modwsgi/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}