2009-04-08 17 views
9

के साथ स्थैतिक फ़ाइलों की सेवा करना मेरे पास mod_python का उपयोग करके एक django एप्लिकेशन है, काफी सामान्य कॉन्फ़िगरेशन सिवाय इसके कि मीडिया फ़ाइलों को दस्तावेज़ रूट में 'मीडिया' निर्देशिका द्वारा (मुझे पता है, अनुशंसित नहीं) द्वारा सेवा दी जा रही है। मैं परीक्षण करना चाहूंगा और शायद mod_wsgi के साथ तैनात करूँगा लेकिन मैं यह नहीं समझ सकता कि स्थैतिक फाइलों को पूरा करने के लिए कुछ सरल कैसे बनाया जाए। ऊपर सही तरीका mod_wsgi के लिए एक समान अपवाद बनाने के लिए के रूप मेंmod_wsgi और Django

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

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

Django डॉक्स दूसरे खंड को इंगित करने लगते हैं, लेकिन मेरे परीक्षण में जड़ नीचे सब कुछ अभी भी भेजा जा रहा है: mod_python तरह अपाचे निर्देशों के उपयोग की अनुमति देता wsgi ऐप के लिए। क्या mod_wsgi के साथ एक स्थिर मीडिया निर्देशिका सेट करने का कोई अच्छा तरीका है, या क्या मैं तकनीकी कारणों को समझने के लिए जानबूझकर असमर्थित करने की कोशिश कर रहा हूं? जवाब जो पूरी तरह से अलग दृष्टिकोण को इंगित करते हैं, स्वागत है।

उत्तर

13

mod_wsgi प्रलेखन बताता है कि डब्लूएसजीआई एप्लिकेशन पर किस यूआरएल पर दिखाई देने वाली स्थिर फाइलें सेट अप करें। देखें:

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

ध्यान दें कि 'विकल्प + ExecCGI' जब WSGIScriptAlias ​​निर्देशों का उपयोग WSGI आवेदन माउंट करने की जरूरत नहीं है। संसाधनों के रूप में अनुप्रयोगों को माउंट करने के लिए AddHandler का उपयोग करते समय 'ExecCGI' विकल्प केवल तभी आवश्यक होता है।

+0

ग्राहम Dumpleton! Mod_wsgi के लिए धन्यवाद! असल में मुझे लगता है कि ऑर्डर मूल रूप से समस्या थी, मैंने सीजीआई निर्देश का उपयोग नहीं किया था। आपके मॉड्यूल ने मुझे कुछ टन करने में सक्षम बनाया है, इस प्रश्न पूछने के बाद से मैंने वास्तव में एक mod_wsgi आदत विकसित की है। – unmounted

+1

प्रलेखन के लिए डबल धन्यवाद। सर्वोत्तम दस्तावेज़ जो मैंने लंबे समय में देखा है। इच्छा है कि लोग उन्हें पढ़ेंगे !!!! – htmldrum

17

मैं एक ही सर्वर पर एक दर्जन या तो Django साइट चलाता हूं और यहां मैं मीडिया यूआरएल को कैसे कॉन्फ़िगर करता हूं।

प्रत्येक VirtualHost निम्नलिखित विन्यास है:

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

इस तरह से मैं मीडिया एक फ़ाइल में से निपटने के लिए किसी भी परिवर्तन कर सकते हैं।

फिर, मेरी media.include फ़ाइल इस तरह दिखता है:

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 देखें) हो जाता है।

यह भी ध्यान रखें, जड़ dir मैं निम्नलिखित विन्यास का उपयोग के लिए:

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

... जो अपने विन्यास फाइल में उर्फ ​​/ मीडिया (के बाद होना चाहिए क्योंकि अपाचे क्रम में उपनाम पर लग रहा है)

+0

आपकी रूट डीआईआर के लिए: यह सुपर बेल्ट-एंड-ब्रेसिज़ है, लेकिन एक सुरक्षा पीओवी से, मैं आपके के अंदर एक <फ़ाइलें wsgi.py> अनुभाग डालूंगा और अपने "सभी से अनुमति दें" को वहां ले जाउंगा। – Cheekysoft

संबंधित मुद्दे