2009-06-17 12 views
6

मैं विशेष आरएसएस अप सेवा करना चाहते पर शेष साइट से अलग उप डोमेन पर फ़ीड।"साइटों रूपरेखा" एक भी Django उदाहरण

क्या मैं एक अलग dlsango उदाहरण के भीतर एक अलग urls.py और settings.py फ़ाइल का उपयोग करने के लिए साइट ढांचे का उपयोग कर सकता हूं। या मुझे दो अपाचे स्थानों को सेट करने की आवश्यकता है और अपाचे conf में अलग-अलग सेटिंग्स.py फ़ाइलों को सेट करें।

कारण मैं दो urls.py फाइलों को निर्धारित करने की आवश्यकता डुप्लिकेट सामग्री से बचना है। मैं नहीं चाहता कि मुख्य साइट rss.example.com पर उपलब्ध हो और मैं नहीं चाहता कि विशेष फीड example.com

एक एकल डीजेंगो उदाहरण से उनकी सेवा करना आदर्श होगा क्योंकि हम ' सीमित स्मृति के साथ साझा होस्टिंग पर फिर से, और ऐसा लगता है कि इस तरह के अपशिष्ट की तरह एक उदाहरण खुला है जो केवल आरएसएस की सेवा करता है।

संपादित: मैंने निष्कर्ष निकाला कि अलग urls.py फाइलों के साथ कई उदाहरण मेरे लिए सबसे आसान होगा ... लेकिन मैं इस लेख कैसे एक उदाहरण का उपयोग करते हुए यह करने के लिए का वर्णन पाया:

http://effbot.org/zone/django-multihost.htm

समाधान: Django tupperware

मैंने एक डीजेंगो उदाहरण पर साइट की कई प्रतियों को चलाने के लिए एक ढांचा लिखना समाप्त कर दिया।

मूल विचार प्रत्येक अनुरोध के लिए मक्खी पर SITE_ID सेटिंग बाहर बदल सकते हैं और डेटाबेस से वैकल्पिक सेटिंग लोड करने में है। यह डोमेन पर आधारित होता है और डिफ़ॉल्ट रूप से SITE_ID = 1 का उपयोग करता है (जब इसे कुछ भी नहीं मिल रहा है)

सेटिंग्स.py फ़ाइल में सभी सेटिंग्स डिफ़ॉल्ट साइट के रूप में डेटाबेस में संग्रहीत सेटिंग्स द्वारा ओवरराइड किए गए डिफ़ॉल्ट के रूप में कार्य करती हैं।

यह बहुत अच्छी तरह से काम करता है :) और यह शेयर Django के साथ http://rootbuzz.com

+0

आप अभी भी tupperware का उपयोग कर रहे हैं - मैं Django-dynamicsites जो इस मुद्दे के साथ सहायक हो सकता है जारी किया गया? या क्या आपको कोई बेहतर और ताजा विकल्प मिल गया? –

+0

@MuratCorlu Tupperware अभी भी उस प्रोजेक्ट पर उत्पादन के उपयोग में है :) – Jiaaro

+0

मैंने इसे Django 1.7 के साथ उपयोग करने का प्रयास किया लेकिन यह अपेक्षा के अनुसार काम नहीं किया। बिटबकेट पर परियोजना भी मृत लगती है। क्या आप एक उदाहरण कॉन्फ़िगरेशन साझा कर सकते हैं कि आपने टुपपरवेयर का उपयोग कैसे किया? –

उत्तर

10

पर उत्पादन में चल रहा है आप प्रत्येक साइट के लिए एक अनूठा settings.py होना चाहिए ... क्योंकि SITE_ID settings.py में परिभाषित किया गया है और जो साइट के लिए महत्वपूर्ण है है इस अनुरोध को संभाला जा रहा है।

दूसरे शब्दों में, SITE_ID अपने उदाहरण के लिए वैश्विक है और इसलिए आप प्रत्येक साइट के लिए एक उदाहरण की जरूरत है।

आप एक ही ROOT_URLCONF अपने सभी साइट settings.py फ़ाइलों में उपयोग करने से रोकने कुछ भी नहीं है क्योंकि वहाँ यदि आप चाहें तो एक आम urls.py हो सकता है ... या आप प्रत्येक साइट के लिए diffent एक हो सकता है। इस मामले में आप किसी भी सामान्य यूआरएल के लिए खुद को दोहराने से रोकने के लिए उप यूआरएल शामिल करना चाहते हैं।

कम से कम दो तरीकों आप एक उदाहरण से सेवा करने के लिए कोशिश कर सकते हैं कर रहे हैं:

  1. उपयोग अपाचे + mod_wsgi और WSGIApplicationGroup और/या WSGIProcessGroup निर्देशों का उपयोग करें। मुझे इससे पहले कभी इसकी आवश्यकता नहीं है, इसलिए पूरी तरह से यह सुनिश्चित नहीं किया जा सकता है कि यह आपके इच्छित तरीके से काम करेगा, लेकिन भले ही आप निश्चित रूप से अपनी स्मृति पदचिह्न को बेहतर बनाने के लिए डिमन मोड में mod_wsgi का उपयोग कर सकें।

  2. आप अनुरोध होस्टनाम के आधार पर URL को अस्वीकार/अनुमति देने के लिए Django मिडलवेयर के साथ खेल सकते हैं (Django दस्तावेज़ों में HttpRequest.get_host() देखें)। उस मामले के लिए, भले ही यह मामूली प्रदर्शन हिट हो, फिर भी आप अपने सभी विचारों पर एक सजावटी डाल सकते हैं जो आने वाले मेजबान की जांच करता है।

+0

धन्यवाद! यह वही है जो मुझे – Jiaaro

+0

जानने की आवश्यकता है क्योंकि यह सबडोमेन केवल विशेष आरएसएस फ़ीड प्रदान करता है, मैं रैम को बचाने के लिए maxRequestsPerChild को 1 पर सेट करने जा रहा हूं। मुझे किसी भी डाउनसाइड्स के बारे में पता होना चाहिए (स्पीड पेनल्टी के अलावा) – Jiaaro

+0

पीएस - जैसा कि आप देख सकते हैं कि मैंने अभी एक नया उदाहरण बनाने का फैसला किया है ... मेरे पास प्रत्येक एक – Jiaaro

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