2014-04-03 15 views
7

मेरे पास वर्तमान में यह मेरे प्रोजेक्ट urls.py में है, आखिरी पंक्ति यह महत्वपूर्ण है।Django - मीडिया में सेवा/अपलोड की गई फाइलों की सेवा

urlpatterns = patterns('', 
    url(r'^', include('polls.urls', namespace="polls")), 
    url(r'^admin/', include(admin.site.urls)), 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

मुझे बताया गया है और मैं पढ़ा है कि यह एक उत्पादन वातावरण के लिए उपयुक्त नहीं है। यह एक केस क्यों है?

उत्तर

6

Django को "एप्लिकेशन सर्वर" के रूप में बनाया गया है, न कि "वेब सर्वर"।

दूसरे शब्दों में, Django से स्थैतिक फ़ाइलों की सेवा करने से अपाचे या Nginx का उपयोग करने से भी बदतर प्रदर्शन होगा। ये स्थैतिक सामग्री सर्वर (1) सी में लिखे गए हैं और (2) प्रदर्शन के लिए अनुकूलित हैं।

इसके विपरीत, Django शुद्ध पायथन में लिखा गया है (1) और (2) एक आवेदन के विकास के लिए अनुकूलित।

documentation देखें।


यह पूरी तरह से ठीक हो सकता है। मैंने उत्पादन में स्थिर सामग्री की सेवा करने के लिए Django का उपयोग किया है, जब मुझे पता था कि भार अधिक नहीं होगा और मैं बड़ी फाइलों की सेवा नहीं कर रहा था। यह इस बात पर निर्भर करता है कि वास्तव में किस तरह का पर्यावरण "उत्पादन" है।


FYI करें, एक common उत्पादन सेटअप Nignx, Django, Gunicorn, और पर्यवेक्षक उपयोग करने के लिए किया जाएगा। Nginx डिस्क से स्थैतिक सामग्री सर्वर और इसके बाकी हिस्सों को गनिकोर्न में रिवर्स प्रॉक्सी करता है, जो कई Django उदाहरण चलाता है। पर्यवेक्षक Gunicorn पर नज़र रखता है और यह सुनिश्चित करता है कि यह चल रहा है। यह सब इस बात पर निर्भर करता है कि आपको किस स्तर के वेब एप्लिकेशन की आवश्यकता है।

1

डीजेंगो सर्वर से स्थिर फ़ाइलों को स्वयं सेवा करने की अनुशंसा नहीं की जाती है। एक अलग सर्वर में उनकी सेवा करने का अनुशंसित तरीका है। static files deployment की जांच करें, आपको वहां केवल वही चीज़ें मिलेंगी जो आपको चाहिए।

+0

मैं वेबफैक्शन का उपयोग कर रहा हूं और अपाचे मेरी स्टेटिक फाइलों की सेवा कर रहा है लेकिन मुझे यकीन नहीं है कि मेरे मीडिया की सेवा कैसे की जा रही है। मीडिया फ़ोल्डर वर्तमान में मेरे प्रोजेक्ट फ़ोल्डर के अंदर है, जबकि मेरी 'static_files' बाहर है, इसे अपाचे द्वारा परोसा जा रहा है। क्या मुझे अपना मीडिया फ़ोल्डर static_files में रखना चाहिए और उचित कनेक्शन बनाना चाहिए? अगर मुझे अभी भी मेरे यूआरएल में 'स्थिर' (...) की आवश्यकता है तो मैं अधिक उत्सुक हूं। यदि आपके पास समय है तो हाँ/कोई जवाब पर्याप्त नहीं होगा :) – AllTheTime

+1

अरे, मैं वेबफैक्शन का भी उपयोग कर रहा हूं। मेरे पास एक अलग वेबफैक्शन ऐप में मीडिया फ़ोल्डर भी है (मुझे लगता है कि आपके पास स्थैतिक के लिए एक है।)। तो, अंत में, मेरे पास प्रत्येक वेबसाइट के लिए 3 अलग-अलग ऐप्स हैं, एक स्थिर की सेवा करने के लिए, दूसरा मीडिया के लिए और दूसरा Django के लिए। आपको urls.py में स्थिर रेखा निर्दिष्ट करने की आवश्यकता नहीं है। सही गंतव्य फ़ोल्डर और कॉन्फ़िगर किए गए यूआरएल को इंगित करने के लिए आपको बस उचित {मीडिया, स्टेटिक} _ROOT और {मीडिया, स्टेटिक} _URL (यदि आवश्यक हो तो STATICFILES_DIRS के साथ) सेट करने की आवश्यकता है (जिन्हें आपने अपनी वेबसाइट पर ऐप्स निर्दिष्ट करते समय निर्दिष्ट किया है)। – argaen

+1

बीटीडब्ल्यू, static_files के अंदर मीडिया फ़ोल्डर न रखें, वे अलग-अलग चीजें हैं इसलिए अपनी परियोजना के बेहतर रखरखाव और संरचना के लिए अलग रखें। – argaen

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