मैं निम्नलिखित अपाचे विन्यास के साथ एक छोटे से Django परियोजना सेवा करने के लिए कोशिश कर रहा हूँ:अपाचे कोई मॉड्यूल 'Django' नाम
अपाचे वर्चुअलहोस्ट विन्यास:
<VirtualHost *>
ServerName servername
[...]
<Directory "/path/to/project/project">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess project python-path=/path/to/project:/path/to/Envs/venv/lib/python3.5/site-packages
WSGIScriptAlias//path/to/project/project/wsgi.py
</VirtualHost>
मेरे पास निम्नलिखित wsgi.py:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings")
application = get_wsgi_application()
मुझे स्टेटिक फ़ाइलों और मीडिया फ़ाइलों को प्रस्तुत करने में कोई समस्या नहीं है।
मैंने अनुमतियों की भी जांच की और 755 का उपयोग करने की कोशिश की, फिर 777 मेरी वर्चुअलनेव की साइट-पैकेज निर्देशिका में। यह काम नहीं किया।
लेकिन जब मेरी साइट के रूट मैं निम्नलिखित मिल तक पहुँचने की कोशिश:
from django.core.wsgi import get_wsgi_application
ImportError: No module named 'django'
मैं अनुमान लगाया है कि यह एक पायथन पथ संबंधित समस्या थी के बाद से Django मेरी virtualenv में स्थापित किया गया है। लेकिन मैंने WSGIDaemonProcess
के python-path
विशेषता के लिए प्रासंगिक पायथन पथ जोड़े, इसलिए मुझे नहीं पता कि यह क्यों काम नहीं करता है।
मुझे यह भी लगता है कि मैं add the relevant directory to my Python path in my wsgi.py by using the site
module कर सकता हूं, लेकिन मुझे समझना है कि अपाचे कॉन्फ़िगरेशन मैंने क्यों प्रयास किया है पर्याप्त नहीं है। क्या मैं कुछ भुल गया?
यदि पायथन 3.4 या 2.7 का उपयोग करना है, तो आपको अभी भी 'पायथन-होम'' का उपयोग करना चाहिए। मुझे 'पायथन-पथ 'सेट करने के गैर-पसंदीदा तरीके का उपयोग करने के साथ कोई समस्या नहीं है, लेकिन यह केवल इतना नहीं है कि आपको क्या करना चाहिए। 'पायथन-होम' विकल्प लंबे समय तक वर्चुअल वातावरण के स्थान को स्थापित करने का सबसे अच्छा तरीका रहा है। इतने लंबे समय तक कि प्राचीन mod_wsgi संस्करणों के साथ लिनक्स distros भी काम करना चाहिए। यह मामला तब भी है जब दस्तावेज अभी भी अद्यतन नहीं हो सकता है। :-) –
@ ग्राहम-डम्प्लटन आपकी सलाह के लिए धन्यवाद। लेकिन मेरे मामले में, मैं अजगर 3.4 का उपयोग कर रहा हूं, और सेटिंग का उल्लेख "पायथन-घर" तरीका था जैसा आपने उल्लेख किया था। हालांकि, मेरी साइट का दौरा नहीं किया जा सकता है, क्योंकि अपाचे त्रुटि भेजता रहता है "आयात त्रुटि: कोई मॉड्यूल नाम नहीं 'साइट'"। जब तक मैं इसे "गैर पसंदीदा तरीके से" कॉन्फ़िगर करता हूं, तो पूछने वाले की तरह ":" का उपयोग करके, यह समस्या हल हो गई थी। और हां, पायथन 3.5 के लिए, आपको "पायथन-होम" तरीके का उपयोग करना चाहिए, या [आयात त्रुटि: 'django' नामक कोई मॉड्यूल नहीं होगा] समस्या बढ़ेगी। – Valorad
इसका मतलब है कि आपका mod_wsgi वास्तव में पायथन के उस संस्करण के लिए संकलित नहीं है। आप mod_wsgi को इसके लिए संकलित किए गए एक अलग पायथन संस्करण का उपयोग करने के लिए मजबूर नहीं कर सकते हैं। 'पायथन-पथ' का उपयोग करने में समस्याओं में से एक यह है कि जब आप गलत काम कर रहे हैं और mod_wsgi को संकलित करने के लिए mod_wsgi को एक अलग पायथन संस्करण के लिए वर्चुअल वातावरण का उपयोग करने के लिए मजबूर करने की कोशिश नहीं कर रहा है, तो mod_wsgi के लिए संकलित किया गया है। 'पायथन-होम' का उपयोग करते समय यह ठीक से विफल हो जाएगा जिससे आपको यह बताए कि आप कुछ गलत कर रहे हैं। –