سؤال

أنا على وشك نشر الحجم موقع مدعوم من جانغو.لقد مخصص خادم أوبونتو.

أنا محتارة التي serversoftware للاستخدام.لذا فكرت في نفسي:لماذا لا نسأل ستاكوفيرفلوو.

ما أبحث عنه هو:

  • من السهل اقامة
  • سريعة وسهلة على الموارد
  • يمكن أن تخدم mediafiles
  • قادرة على خدمة متعددة djangosites على نفس الخادم
  • بدلا من ذلك سوف يتم تثبيت PHP أو أي شيء آخر أن تمتص الموارد التي لا حاجة.

لقد سمعت من mod_wsgi و mod_python على اباتشي ، nginx و إعلام.التي هي إيجابيات وسلبيات هذه و قد فاتني شخص ما ؟

@باري:بطريقة ما أشعر أباتشي هو المتضخمة بالنسبة لي.ماذا عن البدائل ؟

@BrianLy:طيب أنا سوف تحقق من mod_wsgi بعض أكثر.ولكن لماذا أحتاج أباتشي إذا كنت تخدم الملفات الثابتة مع إعلام?لقد تمكنت أيضا لخدمة جانغو التطبيق نفسه مع إعلام.هو أن سيئا على أية حال ؟ آسف على بيينغ غبي جدا :-)

التحديث:ماذا عن إعلام و nginx - التي هي استخدامات الحالات عندما تكون هذه هي أفضل خيار ؟

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

المحلول

منذ أن كنت تبحث عن بعض إجابات متعمقة, قررت البحث في هذه المسألة نفسي في العمق.واسمحوا لي أن أعرف إذا كنت قد يساء فهم أي شيء.

بعض التوصية العامة هي أن تستخدم منفصلة خادم التعامل مع وسائل الإعلام.منفصلة ، أعني الويب التي لا تعمل جانغو.يمكن أن يكون هذا الملقم على سبيل المثال:

  • Lighttpd (إعلام)
  • Nginx (EngineX)
  • أو بعض أخرى خفيفة الوزن الخادم

ثم, جانغو, يمكنك الذهاب إلى أسفل مسارات مختلفة.يمكنك إما:

  • تخدم جانغو عبر أباتشي و:

    • mod_python

      هذا هو مستقر وأوصى/موثقة الطريق.سلبيات:يستخدم الكثير من الذاكرة.

    • mod_wsgi

      من ما أفهم mod_wsgi هو أحدث البديلة.يبدو أن أسرع و أسهل على الموارد.

    • mod_fastcgi

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

      ما عليك فعله هو أن تبدأ الخاص بك جانغو FastCGI الخادم في عملية منفصلة ومن ثم تكوين apache عبر كتابة استدعاء هذه العملية عند الحاجة.

أو يمكنك:

  • تخدم جانغو دون استخدام Apache ولكن مع خادم آخر يدعم FastCGI أصلا:

    (الوثائق يذكر أن يمكنك القيام بذلك إذا لم يكن لديك أي أباتشي الاحتياجات الخاصة.أعتقد السبب يجب أن حفظ الذاكرة.)

    • Lighttpd

    هذا هو الملقم الذي يدير موقع "يوتيوب".يبدو سريعة وسهلة الاستخدام ، ومع ذلك لقد رأيت تقارير عن memoryleaks.

    • nginx

    رأيت المعايير مدعيا أن هذا الخادم هو أسرع من lighttpd.انها في معظمها موثق في روسيا على الرغم من.

شيء آخر ، نظرا للقيود في بيثون الخادم الخاص بك يجب أن تكون قيد التشغيل في متشعب وضع غير مترابطة.

لذلك هذا هو بحثي الحالي ، ولكن أريد المزيد من الآراء و الخبرات.

نصائح أخرى

أنا باستخدام شيروكي.

وفقا المعايير الخاصة بهم (حبة الملح معهم) ، فإنه يعالج تحميل أفضل من كل Lighttpd و nginx...ولكن هذا ليس السبب في أنني استخدامه.

يمكنني استخدام هذا النوع cherokee-admin, يبدأ خادم جديد يمكنك تسجيل الدخول (مع كلمة السر لمرة واحدة) و تكوين الملقم بأكمله من خلال جميل-يتم webmin.هذا هو ميزة القاتل.وقد سبق أن حفظها لي الكثير من الوقت.وهو توفير خدمة بلدي الكثير من الموارد!

أما بالنسبة جانغو, أنا على التوالي على أنها مترابطة SCGI العملية.يعمل بشكل جيد.شيروكي يمكن أن تبقي تشغيل أيضا.مرة أخرى ميزة جميلة جدا.

الحالي أوبونتو الريبو نسخة قديمة جدا لذا أنصحك استخدام بهم PPA.حظا سعيدا.

كما @قال باري الوثائق يستخدم mod_python.أنا لم تستخدم أوبونتو كخادم ، ولكن كان لي تجربة جيدة مع mod_wsgi على سولاريس.يمكنك العثور على وثائق mod_wsgi و جانغو على mod_wsgi الموقع.

مراجعة سريعة لمتطلبات الخاص بك:

  • سهلة الإعداد لقد وجدت اباتشي 2.2 من السهل إلى حد ما في بناء وتثبيت.
  • سريعة وسهلة على الموارد أود أن أقول أن هذا يعتمد على استخدامك و المرور.* قد لا تحتاج إلى الخادم في كل الملفات باستخدام أباتشي و استخدام LightTPD (إعلام) إلى ملقم الملفات الثابتة.
  • يمكن أن تكون ملفات الوسائط أعتقد أنك تقصد صور, ملفات فلاش?أباتشي يمكن أن تفعل هذا.
  • مواقع متعددة على نفس الخادم الملقم الظاهري استضافة على أباتشي.
  • بدلا من تثبيت ملحقات أخرى تعليق من أي شيء كنت لا تريد في اباتشي التكوين.

الموصى بها رسميا وسيلة لنشر جانغو المشروع هو استخدام mod_python مع أباتشي.هذا هو موضح في وثائق. المؤيد الرئيسي في هذا هو أن هذا هو أفضل توثيق معظم الدعم و الطريقة الأكثر شيوعا لنشر.يخدع هو أنه ربما ليس أسرع.

أفضل تكوين ليست معروفة على ما أعتقد.ولكن هنا هو:

  1. استخدام nginx لخدمة طلبات (ديناميكية التطبيق ، ثابتة المحتوى مباشرة).
  2. استخدام بيثون ملقم ويب لخدمة المحتوى الديناميكي.

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

كنت بحاجة للبحث في جوجل لتجد الحالي أفضل تكوين جانغو (لا يزال في التنمية).

أنا باستخدام nginx (0.6.32 أخذت من معاوية) مع mod_wsgi.أنه يعمل بشكل جيد جدا, على الرغم من أنني لا أستطيع أن أقول ما إذا كان من الأفضل من البدائل لأنني لم يحاكم أي.وقد Nginx أعطها دعم المدمج في التي ربما يمكن التعامل مع جانغو التخزين المؤقت الوسيطة (لا تستخدم في الواقع بدلا ملء ذاكرة التخزين المؤقت يدويا باستخدام بيثون-memcache و يبطل عند إجراء تغييرات) ، لذلك ذاكرة التخزين المؤقت يضرب تجاوز تماما جانغو (التنمية بلدي آلة يمكن أن تخدم حوالي 3000 الطلبات في الثانية).

التحذير:nginx' mod_wsgi عالية يكره اسمه مواقع (فإنه يحاول تمرير لهم في SCRIPT_NAME) ، وذلك واضح 'error_page 404 = @django'سوف يسبب العديد من يحجب الأخطاء.كان على أن التصحيح mod_wsgi المصدر لإصلاح ذلك.

أنا تكافح من أجل فهم كل الخيارات أيضا.في هذا بلوق وظيفة لقد وجدت بعض الفوائد من mod_wsgi مقارنة mod_python أوضح.

متعددة منخفضة مواقع حركة المرور على VPS جعل استهلاك الرام الشاغل ، mod_python يبدو خيارا سيئا هناك.باستخدام lighttpd و FastCGI ، لقد تمكنت من الحصول على الحد الأدنى من الذاكرة استخدام بسيط جانغو الموقع أسفل إلى 58MiB الظاهري و 6.5 MiB المقيم (بعد إعادة تشغيل خدمة واحدة غير رام الثقيلة الطلب).

لقد لاحظت أن الترقية من بيثون 2.4 إلى 2.5 على دبيان حفر زيادة الحد الأدنى من الذاكرة الثعبان العمليات قبل قليل في المئة.من ناحية أخرى, 2.5 أفضل إدارة الذاكرة قد يكون لها أكبر تأثير معاكس على العمليات قيد التشغيل.

يبقيه بسيط: جانغو توصي أباتشي و mod_wsgi (أو mod_python).إذا كان يخدم ملفات الوسائط هو جزء كبير جدا من الخدمة ، النظر في الأمازون S3 أو راك سبيس CloudFiles.

في رأيي أفضل/أسرع كومة الورنيش-nginx-uwsgi-جانغو.وأنا بنجاح استخدامه.

إذا كنت تستخدم lighthttpd ، يمكنك أيضا استخدام FastCGI لخدمة جانغو.لست متأكدا من مدى سرعة يقارن mod_wsgi ، ولكن إذا أسعفتني الذاكرة بشكل صحيح, يمكنك الحصول على بعض الفوائد التي قد تحصل عليها مع mod_wsgi أنك لن تحصل مع mod_python.أهمها أن كنت يمكن أن تعطي كل التطبيقات العملية الخاصة به (والتي هي حقا مفيدة لحفظ الذاكرة من التطبيقات المختلفة فصل فضلا عن الاستفادة من متعدد أجهزة الكمبيوتر الأساسية.

تحرير:فقط لإضافة في ما يخص التحديث عن nginix ، إذا أسعفتني الذاكرة بشكل صحيح مرة أخرى ، nginix يستخدم "greenlets" التعامل مع التزامن.هذا يعني أنك قد تحتاج إلى أن يكون قليلا أكثر حذرا للتأكد من أن التطبيق واحد لا تلتهم كل خادم الوقت.

نحن نستخدم nginx و FastCGI من جانغو النشر.هذا هو الغالب لأننا عادة ما نشر في Slicehost, و لا أريد أن يتبرع كل من ذاكرتنا أباتشي.أعتقد أن هذا سيكون لدينا "حالة استخدام".

أما عن الملاحظات حول الوثائق التي يجري معظمها في روسيا -- لقد وجدت معظم المعلومات على ويكي الإنجليزية أن تكون مفيدة جدا ودقيقة.هذا الموقع يحتوي على عينة تكوينات جانغو جدا, يمكنك من خلاله قرص الخاص بك التكوين إنجن إكس.

هناك العديد من الطرق ، نهج للقيام بذلك.ولهذا أنا أنصح أن تقرأ بعناية هذه المادة تتعلق عملية النشر على DjangoAdvent.com:إريك Florenzano - نشر جانغو مع FastCGI: http://djangoadvent.com/1.2/deploying-django-site-using-fastcgi/ اقرأ أيضا:مايك مالون - زيادة جانغو Stochastictechnologies بلوق:مثالية جانغو الإعداد ميكيل هوغ الناقل ، الذي تملكه بلوق:35 % استجابة-الوقت-تحسين-التبديل-uwsgi-nginx

تحياتي

يجب تحذير باستخدام شيروكي.عند إجراء تغييرات على جانغو شيروكي يحافظ عملية القديمة, بدلا من قتله وبدء واحدة جديدة.

على أباتشي وإنني أوصي بشدة هذه المادة.

http://www.djangofoo.com/17/django-mod_wsgi-deploy-exampl

من السهل أن الإعداد السهل أن تقتل أو إعادة تعيين بعد إجراء التغييرات.

فقط اكتب في الطرفية

sudo /etc/init.d/apache2 restart

والتغيرات ينظر إليها على الفور.

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