Wie soll ich den WSGIPython-Pfad in VirtualHost für Windows Server hinzufügen?
Ich versuche hinzuzufügen WSGIPythonPath
in VirtualHost
aber es wirft mir eine Fehlermeldung:
Syntaxfehler in Zeile 549 von /etc/httpd/conf/httpd.conf:
WSGIPythonPath kann nicht innerhalb eines Abschnitts auftreten
Ich habe versucht, das Problem folgendermaßen zu beheben: Wo sollte WSGIPythonPath in meiner virtuellen Umgebung verweisen?
Aber auf mehr Forschung, fand ich , dass WSGIDaemonProcess
und WSGIProcessGroup
nicht unter Windows unterstützt nach Warum WSGIDaemonProcess ist unter Windows nicht verfügbar? .
Also, wie soll ich hinzufügen WSGIPythonPath
und wo, damit ich mehrere Django-Sites auf meinem Apache24-Server hosten kann.
Jede Hilfe wäre von Vorteil.
Hier ist meine httpd.conf
Datei:
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>
Antworten
Ich hatte eine schwierige Reise, um zwei Tugenden aufzubauen. Hosts mit Apache mod_wsgi unter Windows. Die Lösung hier ist also für Apache / mod_wsgi und Windows.
Im Allgemeinen finde ich es ziemlich schwierig, Apache / mod_wsgi für Windows und Unix zu trennen, da in vielen Artikeln die beiden gemischt sind oder überhaupt nicht klar erwähnt wird, über welche gesprochen wird.
- Hier ist der wichtige Teil der Definition des virtuellen Hosts in httpd-vhosts.conf, da in Apache / mod_wsgi für Windows keine WSGIDaemonProcess / WSGIProcessGroup verfügbar ist.
<VirtualHost *:80>
ServerName name1
WSGIScriptAlias / "D:/....../wsgi.py" application-group=site1
......
</VirtualHost>
<VirtualHost *:80>
ServerName name2
WSGIScriptAlias / "D:/....../wsgi.py" application-group=site2
......
</VirtualHost>
Wenn Sie nicht "Anwendungsgruppe ..." hinzufügen, wird nur der virtuelle Host, der nach dem Neustart von Apache zuerst aufgerufen wird, mit wsgi.py und settings.py initialisiert und erhält anschließend alle Anforderungen an virt. Hosts mit einem WSGIScriptAlias oder mit anderen Worten, die von mod_wsgi behandelt werden !! Nach meinem Verständnis ist dies ein ziemlich schwerwiegender Fehler, da ein virtueller Host immer seinen eigenen "Thread" als Standardverhalten von Apache / mod_wsgi erhalten sollte. Übrigens sind Site1 und Site2 nur Namen, die unterschiedlich sein müssen.
- Der WSGIPythonPath kann nicht innerhalb der virt zugewiesen werden. Hosts-Bereich. Sie müssen die entsprechende Pfadzuweisung in die Datei wsgi.py jeder Ihrer Apps einfügen:
sys.path.append('D:/........../xxxxx_project/xxxxx')
os.environ['DJANGO_SETTINGS_MODULE'] = 'xxxxx.settings'
application = get_wsgi_application()