سؤال

أريد أن تخدم ما يصل المتخصصة آر إس إس على مختلف فرعي من بقية الموقع.

هل يمكنني استخدام مواقع إطار استخدام مختلفة urls.py و settings.py الملف في واحد جانغو سبيل المثال.أو هل أنا بحاجة إلى إعداد اثنين أباتشي المواقع مجرد مجموعة مختلفة settings.py الملفات في أباتشي conf.

السبب في أنني بحاجة إلى إعداد اثنين urls.py الملفات هو تجنب تكرار المحتوى.أنا لا أريد الموقع الرئيسي أن تكون متاحة في rss.example.com وأنا لا أريد المتخصصة يغذي أن يكون موجودا على example.com

خدمة لهم من واحد جانغو سبيل المثال سيكون مثاليا لأننا على استضافة مشتركة مع ذاكرة محدودة ، ويبدو أن مثل هذه النفايات إلى مثيل فتح هذا فقط يخدم حتى rss.

تحرير:وخلصت إلى أن مثيلات متعددة مع منفصلة urls.py الملفات سيكون أسهل بالنسبة لي...ولكن وجدت هذه المقالة التي تصف كيفية القيام بذلك باستخدام نسخة واحدة:

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

الحل: جانغو تثبرور

لقد انتهى من كتابة إطارا تشغيل نسخ متعددة من موقع واحد جانغو سبيل المثال.

والفكرة الأساسية هي أن تغير من SITE_ID وضع على الطاير لكل طلب و تحميل بديل الإعدادات من قاعدة البيانات.لا يفعل ذلك على أساس المجال ويستخدم SITE_ID = 1 بشكل افتراضي (عندما لا يمكن العثور على أي شيء)

جميع الإعدادات في settings.py الملف بمثابة التخلف التي يتم تجاوزها من خلال الإعدادات المخزنة في قاعدة البيانات للموقع الحالي.

أنه يعمل بشكل جيد جدا :) و انها تعمل في الإنتاج في http://rootbuzz.com

هل كانت مفيدة؟

المحلول

مع الأسهم جانغو يجب أن يكون لديك فريدة من نوعها settings.py لكل موقع...لأن SITE_ID هو محدد في settings.py و هو مفتاح الموقع الذي يتم التعامل مع هذا الطلب.

وبعبارة أخرى ، SITE_ID عالمي الخاص سبيل المثال وبالتالي تحتاج مثيل لكل موقع.

هل يمكن أن يكون مشترك urls.py إذا كنت ترغب في ذلك لأنه لا يوجد شيء يمنعك من استخدام نفس ROOT_URLCONF في كل موقع الويب الخاص بك settings.py الملفات...أو هل يمكن أن يكون diffent واحد لكل موقع.في هذه الحالة سوف تحتاج إلى تضمين عناوين فرعية لمنع تكرار نفسك لأي مشترك عناوين url.

هناك اثنين على الأقل من الأساليب التي يمكنك محاولة لخدمة من نسخة واحدة:

  1. استخدام apache + mod_wsgi واستخدام WSGIApplicationGroup و/أو WSGIProcessGroup التوجيهات.لم اللازمة قبل لذلك لا يمكنك أن تكون متأكدا تماما هذه سوف تعمل بالطريقة التي تريدها, ولكن بغض النظر يمكنك بالتأكيد استخدام mod_wsgi في الوضع الخفي إلى حد كبير في تحسين الذاكرة.

  2. يمكنك أن تلعب مع جانغو الوسيطة أن ننكر/السماح عناوين المواقع بناء على طلب المضيف (انظر HttpRequest.get_host() في جانغو مستندات).لهذه المسألة, على الرغم من أنه سيكون طفيف الأداء ضرب ، يمكنك وضع الديكور على كل ما تبذلونه من وجهات النظر التي الشيكات الواردة المضيف.

نصائح أخرى

لمعلوماتك - لقد صدر جانغو-dynamicsites التي يمكن أن تكون مفيدة مع هذه المسألة - https://bitbucket.org/uysrc/django-dynamicsites/src

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top