2012-02-18 17 views
70

मैं हमेशा स्थानीय वातावरण में अपने ऐप का परीक्षण करने के लिए वर्चुअलएन्व का उपयोग कर रहा हूं क्योंकि मेरे पास अलग वातावरण है और सुरक्षित रूप से पैकेजों की नई रिलीज का परीक्षण कर सकता है।क्या वर्चुअलनेव django उत्पादन सर्वर के लिए अनुशंसित है?

अब ऐसा समय आता है जब मुझे अपने ऐप को उत्पादन सर्वर पर तैनात करना होगा। मैं सोच रहा हूं कि मुझे उत्पादन सर्वर के लिए वर्चुअलएन्व का उपयोग करना चाहिए या केवल सामान्य स्थापना करना चाहिए। चूंकि यह उत्पादन सर्वर है, मैं हमेशा डीवी सर्वर (वर्चुअल-एनएनवी के तहत) में उपयोग किए गए सही संस्करण का उपयोग कर सकता हूं

+3

ध्यान दें कि आधिकारिक Django दस्तावेज उत्पादन में वर्चुअलएन्व का उपयोग करने का उल्लेख करता है: https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#using-a-virtualenv –

+0

मैंने ट्यूटोरियल को @ बार्टक [एक nginx और uWSGI परिनियोजन की सुंदर सरलता] (http://bartek.im/blog/2012/07/08/simplicity-nginx-uwsgi-deployment.html) –

+0

हेरोोकू इसकी अनुशंसा करता है: https: // devcenter। heroku.com/articles/deploying-python –

उत्तर

42

यदि आप कभी सोचते हैं कि आप वेबसर्वर पर एक से अधिक प्रोजेक्ट चलाएंगे तो मैं ऐसा करूँगा। जैसे ही आपके पास दो परियोजनाएं होंगी, आप किसी अन्य पायथन पैकेज के भविष्य के अपग्रेड का जोखिम दूसरी साइट को तोड़ने का जोखिम चलाते हैं।

+1

यह सवाल पूछता है कि क्या वर्चुअलएन्व का उपयोग किया जाना चाहिए जब आप जानते हैं कि यह सर्वर पूरी तरह से एक ही अनुप्रयोग की सेवा के लिए मौजूद है। –

+4

आप गारंटी नहीं दे सकते कि DevOps कुछ रोल नहीं करेगा जिसके लिए पाइथन निर्भरता की आवश्यकता है। हर समय अलग होना चाहिए। –

2

मैं अपनी एक पूरी तरह से समर्थित उत्पादन समाधान है कि इसकी एक अच्छा संकेत लगता है कि जब uwsgi सीधे vhost फ़्लैग से समर्थन करता है: http://projects.unbit.it/uwsgi/wiki/VirtualHosting

9

हाँ, मुझे लगता है कि आप उत्पादन में यह तैनात करने के लिए virtualenv का उपयोग करना चाहिए। यह चीजों को आपके लिए बहुत आसान और साफ बनाता है, खासकर यदि आप कई सेवाओं को तैनात करने की योजना बनाते हैं, उदा। django आधारित वेबसाइटों या अन्य अजगर परियोजनाओं। आप नहीं चाहते हैं कि उनमें से प्रत्येक अपने पैकेज के साथ वैश्विक पायथन पर्यावरण को प्रदूषित करे।

मुझे लगता है कि वर्चुअलएन्व आपकी सभी निर्भरताओं को स्पष्ट रूप से प्रबंधित करने में आपकी सहायता करेगा।

अपने उत्पादन env अद्यतन करने के लिए तुम सब करने की जरूरत है के लिए है:

pip -r name_of_your_requirements_file.txt 

मैं उत्पादन में virtualenvs उपयोग करें, और आप uWSGI का उपयोग एक वेब सर्वर के रूप में चेरोकी के साथ, आवेदन सेवा करने के लिए कर सकते हैं।

उत्पादन में अपने वर्चुअलनेव का उपयोग करने के लिए, आपको अपने पाइथोनपैथ में अपना रास्ता जोड़ना होगा।

उदाहरण के लिए अपने env मार्ग होता है, तो "/ घर/www/my_project/env /", जोड़ने के लिए पथ होगा:

/home/www/env/lib/python2.7/site-packages/ 

आप कई अलग अलग तरीकों से इस सेट कर सकते हैं, लेकिन अगर आप manage.py के माध्यम से अपने FCGI या uWSGI इंटरफ़ेस जेनरेट कर रहे हैं, बस अपने manage.py के सबसे ऊपर (बाकी से पहले) में निम्नलिखित जोड़ें:

import os 
my_virtualenv_path = "/home/www/my_project/env/lib/python2.7/site-packages/" 
# Add it to your PYTHONPATH 
os.path.append(my_virtualenv_path) 

आप अपने स्थापना के लिए इस अनुकूलित कर सकते हैं, बस में यदि आप खोल में निम्नलिखित भी कर सकते हैं:

export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/ 

आपको उस निर्देशिका को भी जोड़ना होगा जिसमें आपकी सेटिंग्स.py फ़ाइल PYTHONPATH में है, इसलिए Django इसे खोजने में सक्षम होगा। ऐसा करने के लिए बस इसी तरह से आगे बढ़ें।

14

क्या वर्चुअलनेव django उत्पादन सर्वर के लिए अनुशंसित है?

हां, यह आपकी परियोजना को सिस्टम वातावरण के कुछ पहलुओं पर निर्भर नहीं करता है और यह आपको तैनाती प्रक्रिया को और अधिक स्पष्ट और कॉन्फ़िगर करने योग्य बनाता है।

मैं अपने सभी Django परियोजनाओं को तैनात करने के लिए कपड़े, पीआईपी और वर्चुअलनेव का उपयोग करता हूं।

+0

मुझे नहीं लगता कि "अविभाज्य" वह शब्द है जिसे आप चाहते थे (सिस्टम आपकी परियोजना पर निर्भर नहीं हो सकता है?)। स्पष्ट भाषा। –

3

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

0

विकास और उत्पादन परिनियोजन दोनों के लिए डॉकर कंटेनर का उपयोग करना अब बहुत लोकप्रिय है, इसलिए यदि आप इस प्रवृत्ति का पालन करने पर विचार कर रहे हैं, तो आपको वर्चुअलएव की आवश्यकता नहीं होगी।

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