2009-04-08 4 views
9

mod_python을 사용하는 장고 애플리케이션을 사용하고 있습니다. 문서 루트의 'media'디렉토리에서 미디어 파일을 서비스한다는 점만 제외하면 상당히 일반적인 구성입니다. 나는 mod_wsgi로 테스트하고 배포하고 싶지만 정적 파일을 제공하기 위해 간단한 것을 만드는 방법을 알아낼 수 없다. 위의 mod_wsgi에 대한 유사한 예외를 만들 수있는 올바른 방법으로mod_wsgi와 Django로 정적 파일 서비스하기

<Location '/'> 
    SetHandler MyApplication.xyz..... 
</Location> 

<Location '/media'> 
    SetHandler None 
</Location> 

문서가 두 번째 블록을 가리 키도록 것 장고,하지만 내 테스트에서 루트 아래의 모든 것이 여전히 전송되는 : mod_python을 같은 아파치 지시어의 사용을 허용 wsgi 앱에. mod_wsgi로 정적 미디어 디렉토리를 설정하는 좋은 방법이 있습니까? 아니면 기술적 인 이유에서 의도적으로 지원되지 않는 것입니까? 완전히 다른 접근 방식을 가리키는 답변을 환영합니다.

답변

13

mod_wsgi 문서는 WSGI 응용 프로그램이 마운트 된 URL 아래에 나타나는 정적 파일을 설정하는 방법을 설명합니다. 항목 : WSGI 응용 프로그램을 탑재 WSGIScriptAlias ​​지시어를 사용할 때 '옵션 + ExecCGI를'필요하지 않습니다

http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files

하는 것으로. 'ExecCGI'옵션은 AddHandler를 사용하여 응용 프로그램을 자원으로 마운트 할 때만 필요합니다.

+0

그레이엄 덤 플튼! mod_wsgi 주셔서 감사합니다! 실제로 주문이 원래 문제 였다고 생각합니다. 나는 CGI 지시문을 사용하지 않았습니다. 귀하의 모듈을 통해 나는 많은 것을 할 수있었습니다.이 질문을 한 이후로 저는 mod_wsgi 습관을 개발했습니다. – unmounted

+1

문서에 대한 두 번 감사드립니다. 오랫동안 최고의 문서를 보았습니다. 더 많은 사람들이 그것을 읽을 수 있기를 바랍니다 !!!! – htmldrum

17

동일한 서버에서 12 개 정도의 Django 사이트를 실행하며 여기에 미디어 URL을 구성하는 방법이 나와 있습니다.

각각의 가상 호스트는 다음과 같은 구성을 가지고 : 나는 하나 개의 파일에 처리 미디어를 변경할 수 있습니다

Alias /media /path/to/media/ 
<Directory /path/to/media> 
    Include /etc/apache2/vhosts.d/media.include 
</Directory> 

이 방법을. 이것은 아주 잘 날 위해 일했다

Order allow,deny 
Allow from all 
SetHandler None 
FileETag none 
Options FollowSymLinks 

<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresByType image/gif "access plus 30 days" 
    ExpiresByType image/jpg "access plus 30 days" 
    ExpiresByType image/png "access plus 30 days" 
    ExpiresByType image/jpeg "access plus 30 days" 
    ExpiresByType text/css "access plus 30 days" 
    ExpiresByType application/x-javascript "modification plus 2 years" 
</IfModule> 

<IfModule mod_headers.c> 
    Header append Vary Accept-Encoding 
</IfModule> 

AddOutputFilterByType DEFLATE text/html text/css text/plain 

YSlow에서 등급 (또한 Jeff Atwood on YSlow 참조) 가져옵니다

그런 다음 내 media.include 파일은 다음과 같습니다.

또한 나는 다음과 같은 구성을 사용하는 루트 디렉토리에 대한주의 : 구성 파일의 별칭/미디어 (후 을해야

WSGIScriptAlias//path/to/app.wsgi 
<Directory /path/to> 
    Options +ExecCGI 
    Allow from all 
</Directory> 

을 ... 아파치는 순서대로 별칭에 보이기 때문에)

+0

당신의 루트 디렉토리 : 그것은 슈퍼 벨트 앤 브레이스이지만 보안 POV에서 안에 섹션을 넣고 "Allow all from"을 거기로 옮깁니다. – Cheekysoft