2013-11-05 4 views
5

के रूप में कहा गया है: https://docs.djangoproject.com/en/dev/howto/static-files/डीजेंगो का विकास स्वचालित स्थिर फ़ाइल सर्वर उत्पादन के लिए उपयुक्त क्यों नहीं है?

डीबग सही पर सेट किया जाता है, सर्वर स्वचालित रूप से स्थिर फ़ाइल में कार्य करता है, लेकिन यह कहा गया है:

This method is grossly inefficient and probably insecure, so it is unsuitable for production. 

लेकिन क्या वास्तव में अक्षम है और इसके बारे में असुरक्षित है? मेरे पास हेरोोकू पर एक छोटी-आईश परियोजना है कि मैंने अभी तक "उत्पादन" मोड पर सेट नहीं किया है और मैं सोच रहा हूं कि सटीक डाउनसाइड्स क्या हैं।

उत्तर

6

केनेथ (requests के लेखक, Heroku द्वारा नियोजित) एक अलग राय (source) है:

हकीकत में, पायथन/Django के माध्यम से स्थिर फ़ाइलों की सेवा उत्पादन के लिए ठीक है - उन अनुरोधों अलग नहीं कर रहे हैं गतिशील लोगों की तुलना में।

प्रदर्शन शानदार होगा, लेकिन nginx के रूप में अच्छा नहीं होगा।

यदि आप कि भारी क्षमता है तो आप अपने सर्वर पर उन फ़ाइलों को नहीं होस्टिंग किया जाना चाहिए वैसे भी के बारे में चिंतित हैं, आप उन्हें को धक्का होगी S3 + CloudFront और तरह तरह एक CDN।

इस दृष्टिकोण का एक अन्य लाभ विकास है: उत्पादन समानता।

और Heroku पर, आप सर्वर स्थिर फ़ाइलों को Nginx उपयोग कर सकते हैं नहीं है, वास्तव में तुम भी अधिकांश अन्य PaaS पर यह नहीं कर सकते, मैं पिछले साल बादल फाउंड्री पर एक ही समस्या मिला है। लेकिन वहाँ एक समाधान नहीं है:

Heroku पर, आपके आवेदन सीधे बजाय अपाचे या Nginx तरह एक अतिरिक्त वेब सर्वर के माध्यम से जा के अनुरोध करने के लिए http, प्रतिक्रिया करता है।

हम अनुशंसा करते हैं कि अधिकांश एप्लिकेशन Django या सीडीएन से अपनी संपत्ति की सुरक्षा प्रदान करें।

Djangoकी स्थिर फ़ाइल हैंडलर के डिज़ाइन के कारण उत्पादन में स्थैतिक फ़ाइलों की सेवा करने की अनुशंसा नहीं करता है।

सौभाग्य से, डीजे-स्टेटिक नामक एक लाइब्रेरी है जो उत्पादन-तैयार डब्लूएसजीआई संपत्ति सर्वर का उपयोग करती है। https://devcenter.heroku.com/articles/django-assets

अधिक जानकारी के लिए निम्न में चर्चाएं पढ़ें:

Serving static files for a Django app

serving static files via gunicorn

7

प्रदर्शन संबंधित

मैं यहाँ Django और स्टेटिक आस्तियों के लिए एक गाइड ऊपर लिखा है कारण:

  • वेब सर्वर स्थैतिक फ़ाइलों की सेवा करने के लिए परिमाण के आदेश बेहतर हैं।
  • AFAIK विकास सर्वर मोनो-थ्रेडेड है और समय पर केवल एक ही अनुरोध का जवाब दे सकता है, समवर्ती अनुरोध अवरुद्ध हो जाएंगे (अधिकांश ब्राउज़र समानांतर में संपत्ति डाउनलोड करने का प्रयास करने वाले 4 समवर्ती अनुरोध करते हैं)।

सुरक्षा संबंधी कारणों:

  • एप्लिकेशन का उपयोग करके स्थिर सामग्री की सेवा के लिए overkill है
  • डेवलपर्स सुरक्षित पक्ष पर होना चाहते (सरलीकरण सुरक्षा के लिए अच्छा है), तो यह एक तरह से है एक अस्वीकरण
  • डिबग मोड सर्वर के बारे में जानकारी का एक बहुत कुछ को उजागर करता है

Django खबर प्रकाशन उद्योग जहां में शुरू आम तौर पर समर्पित वेब सर्वर से स्थैतिक सामग्री की सेवा करने के लिए पर्याप्त ट्रैफ़िक होता है, शायद मूल डेवलपर्स के पास इस व्यवस्था के लिए पूर्वाग्रह है।

यह कहा गया है कि ऐसी परियोजनाएं हैं जो डिफ़ॉल्ट विकास सर्वर को बंदूक या टर्ननाडो के आधार पर अधिक मजबूत कार्यान्वयन द्वारा प्रतिस्थापित करती हैं।

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