Django 2.1 - Deploying static files

स्थैतिक फ़ाइलों की तैनाती




django

स्थैतिक फ़ाइलों की तैनाती

उत्पादन में स्थिर फ़ाइलों की सेवा

स्थैतिक फ़ाइलों को उत्पादन में डालने की मूल रूपरेखा सरल है: STATIC_ROOT कमांड को तब चलाएँ जब स्थैतिक फ़ाइलें बदल जाती हैं, फिर एकत्रित स्थिर फ़ाइलों निर्देशिका ( STATIC_ROOT ) को स्थिर फ़ाइल सर्वर पर ले जाने और सेवा करने की व्यवस्था करें। STATICFILES_STORAGE आधार पर, फ़ाइलों को मैन्युअल रूप से एक नए स्थान पर ले जाने की आवश्यकता हो सकती है या Storage वर्ग की post_process विधि ध्यान रख सकती है।

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

एक ही सर्वर से साइट और आपकी स्थिर फ़ाइलों की सेवा

यदि आप अपनी स्थिर फ़ाइलों को उसी सर्वर से सेवा देना चाहते हैं जो पहले से ही आपकी साइट की सेवा कर रहा है, तो प्रक्रिया कुछ इस तरह दिख सकती है:

आप शायद इस प्रक्रिया को स्वचालित करना चाहते हैं, खासकर अगर आपको कई वेब सर्वर मिल गए हैं।

एक समर्पित सर्वर से स्थिर फ़ाइलों की सेवा

सबसे बड़ी Django साइटें एक अलग वेब सर्वर का उपयोग करती हैं - यानी, वह भी जो Django नहीं चला रही है - स्थिर फ़ाइलों की सेवा के लिए। यह सर्वर अक्सर एक अलग प्रकार का वेब सर्वर चलाता है - तेज लेकिन कम पूर्ण विशेषताओं वाला। कुछ सामान्य विकल्प हैं:

  • Nginx
  • Apache का एक स्ट्रिप-डाउन संस्करण

इन सर्वरों को कॉन्फ़िगर करना इस दस्तावेज़ के दायरे से बाहर है; निर्देशों के लिए प्रत्येक सर्वर के संबंधित दस्तावेज की जांच करें।

चूंकि आपका स्थिर फ़ाइल सर्वर Django नहीं चल रहा है, इसलिए आपको कुछ देखने के लिए परिनियोजन रणनीति को संशोधित करना होगा:

  • जब आपकी स्थिर फाइलें बदल जाती हैं, तो स्थानीय रूप से collectstatic चलाएं।
  • अपने स्थानीय STATIC_ROOT को उस निर्देशिका में स्थिर फ़ाइल सर्वर तक पुश करें जो सेवा की जा रही है। rsync इस चरण के लिए एक आम विकल्प है क्योंकि इसे केवल स्थिर फ़ाइलों के बिट्स को स्थानांतरित करने की आवश्यकता है जो बदल गए हैं।

क्लाउड सेवा या CDN से स्थिर फ़ाइलों की सेवा

एक अन्य आम रणनीति क्लाउड स्टोरेज प्रदाता जैसे अमेज़ॅन के एस 3 और / या सीडीएन (सामग्री वितरण नेटवर्क) से स्थिर फ़ाइलों की सेवा करना है। यह आपको स्थैतिक फ़ाइलों की सेवा करने की समस्याओं की अनदेखी करने देता है और अक्सर तेजी से लोड होने वाले वेब पेजों के लिए बना सकता है (विशेषकर सीडीएन का उपयोग करते समय)।

इन सेवाओं का उपयोग करते समय, मूल वर्कफ़्लो ऊपर की तरह थोड़ा सा दिखाई देगा, सिवाय इसके कि rsync का उपयोग सर्वर पर आपकी स्थिर फ़ाइलों को स्थानांतरित करने के बजाय आपको स्टैटिक फ़ाइलों को संग्रहण प्रदाता या CDN में स्थानांतरित करने की आवश्यकता होगी।

आपके द्वारा ऐसा करने के कई तरीके हो सकते हैं, लेकिन यदि प्रदाता के पास API है तो एक कस्टम फ़ाइल स्टोरेज बैकेंड प्रक्रिया को अविश्वसनीय रूप से सरल बना देगा। यदि आपने एक 3 पार्टी कस्टम स्टोरेज बैकेंड लिखा है या उपयोग कर रहे हैं, तो आप संग्रहण इंजन को STATICFILES_STORAGE सेट करके इसका उपयोग करने के लिए STATICFILES_STORAGE बता सकते हैं।

उदाहरण के लिए, यदि आपने myproject.storage.S3Storage में S3 स्टोरेज बैकेंड लिखा है, तो आप इसके साथ इसका उपयोग कर सकते हैं:

STATICFILES_STORAGE = 'myproject.storage.S3Storage'

एक बार ऐसा करने के बाद, आपको केवल collectstatic से चलना होगा और आपकी स्थिर फ़ाइलों को S3 तक आपके स्टोरेज पैकेज के माध्यम से धकेल दिया जाएगा। यदि आपको बाद में किसी भिन्न संग्रहण प्रदाता में स्विच करने की आवश्यकता होती है, तो यह आपके STATICFILES_STORAGE सेटिंग को बदलने के समान सरल हो सकता है।

आप इनमें से एक बैकेंड कैसे लिखेंगे, इसके विवरण के लिए, कस्टम स्टोरेज सिस्टम लिखना देखें। 3 पार्टी ऐप उपलब्ध हैं जो कई सामान्य फ़ाइल स्टोरेज एपीआई के लिए स्टोरेज बैकएंड प्रदान करते हैं। एक अच्छी शुरुआत बिंदु djangopackages.org पर अवलोकन है

और अधिक जानें

django.contrib.staticfiles में शामिल सभी सेटिंग्स, कमांड, टेम्प्लेट टैग और अन्य टुकड़ों पर पूर्ण विवरण के लिए, staticfiles संदर्भ देखें