Windows Server के लिए VirtualHost में WSGIPython पाथ को कैसे जोड़ना चाहिए?

Nov 19 2020

मैं जोड़ने की कोशिश कर रहा हूँ WSGIPythonPath, VirtualHostलेकिन यह मुझे एक त्रुटि दे रहा है:

/Etc/httpd/conf/httpd.conf की पंक्ति 549 पर सिंटैक्स त्रुटि:

WSGIPythonPath अनुभाग में नहीं हो सकता

मैंने इसका अनुसरण करके इसे हल करने की कोशिश की: WSGIPythonPath को मेरे virtualenv में कहाँ इंगित करना चाहिए?

लेकिन, अधिक शोध पर, मुझे लगता है कि पाया WSGIDaemonProcessऔर WSGIProcessGroupविंडोज पर समर्थित नहीं हैं के अनुसार क्यों WSGIDaemonProcess विंडोज पर उपलब्ध नहीं है? ।

तो, मुझे कैसे जोड़ना चाहिए WSGIPythonPathऔर कहाँ है ताकि मैं अपने Apache24 सर्वर पर कई Django साइट होस्ट कर सकूं।

कोई मदद फायदेमंद होगी।

यहाँ मेरी httpd.confफ़ाइल है:

LoadFile "c:/python37/python37.dll"
LoadModule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/python37"
WSGIPythonPath "E:/edukon/"
Listen 7020

<VirtualHost *:7020>
ServerName 000.000.000.000

# Django Project

WSGIScriptAlias / "E:/edukon/edukon/wsgi.py"


<Directory "E:/edukon/edukon">
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

Alias /static "E:/edukon/static/"
<Directory "E:/edukon/static/">
    Require all granted
</Directory>

Alias /media "E:/edukon/media/"
<Directory "E:/edukon/media/">
    Require all granted
</Directory>
</VirtualHost>

जवाब

1 Razenstein Nov 21 2020 at 23:21

मेरे लिए दो पुण्य स्थापित करने की कठिन यात्रा थी। विंडोज के तहत अपाचे mod_wsgi के साथ होस्ट करता है। तो यहाँ समाधान Apache / mod_wsgi और Windows के लिए है।

सामान्य तौर पर मुझे विंडोज़ और यूनिक्स के लिए Apache / mod_wsgi को अलग करना काफी मुश्किल लगता है क्योंकि कई लेखों में दोनों को मिलाया गया है या यह स्पष्ट रूप से उल्लेखित नहीं है जिसके बारे में बात की जा रही है।

  1. यहाँ httpd-vhosts.conf में पुण्य होस्ट परिभाषा का महत्वपूर्ण हिस्सा है क्योंकि विंडोज के लिए Apache / mod_wsgi में आपके पास कोई WSGIDaemonProcess / WSGIProcessGroup उपलब्ध नहीं है।
   <VirtualHost *:80>
            ServerName name1
            WSGIScriptAlias / "D:/....../wsgi.py" application-group=site1
            ......                                                                            
     </VirtualHost>
 
    <VirtualHost *:80>
            ServerName name2
            WSGIScriptAlias / "D:/....../wsgi.py" application-group=site2
            ......                                                                            
     </VirtualHost>

यदि आप "एप्लिकेशन-ग्रुप ..." नहीं जोड़ते हैं, तो केवल अपाचे पुनरारंभ के बाद पहली बार कहा जाने वाला वर्चुअल होस्ट wsgi.py और settings.py के साथ आरंभ करेगा और बाद में सभी अनुरोधों को प्राप्त करेगा। होस्ट जिनके पास WSGIScriptAlias ​​या दूसरे शब्दों में mod_wsgi द्वारा नियंत्रित किया जाता है !! मेरी समझ में यह एक गंभीर समस्या है, क्योंकि एक गुणी मेजबान को हमेशा अपाचे / mod_wsgi के मानक व्यवहार के रूप में अपना खुद का "धागा" प्राप्त करना चाहिए। Btw साइट 1 और साइट 2 ऐसे नाम हैं जो अलग-अलग होने चाहिए।

  1. WSGIPythonPath को गुण के अंदर असाइन नहीं किया जा सकता है। मेजबान अनुभाग। आपको अपने प्रत्येक ऐप के wsgi.py फ़ाइल में समान पथ असाइनमेंट डालने की आवश्यकता है:
    sys.path.append('D:/........../xxxxx_project/xxxxx')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'xxxxx.settings'
    application = get_wsgi_application()