Come devo aggiungere il percorso WSGIPython in VirtualHost per il server Windows?
Sto cercando di aggiungere WSGIPythonPathin VirtualHost, ma mi sta gettando un errore:
Errore di sintassi sulla riga 549 di /etc/httpd/conf/httpd.conf:
WSGIPythonPath non può verificarsi nella sezione
Ho provato a risolverlo seguendo: Dove dovrebbe puntare WSGIPythonPath nel mio virtualenv?
Ma, cercando di più, ho scoperto che WSGIDaemonProcesse WSGIProcessGroupnon sono supportati su Windows secondo Perché WSGIDaemonProcess non è disponibile su Windows? .
Quindi, come devo aggiungere WSGIPythonPathe dove in modo da poter ospitare più siti Django sul mio server Apache24.
Qualsiasi aiuto sarebbe utile.
Ecco il mio httpd.conffile:
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>
Risposte
Ho avuto un viaggio difficile mettendo in piedi due virtù. host con Apache mod_wsgi sotto Windows. Quindi la soluzione qui è per Apache / mod_wsgi e Windows.
In generale trovo abbastanza difficile separare Apache / mod_wsgi per windows e unix poiché in molti articoli i due sono mescolati o non è affatto chiaramente menzionato di quale si sta parlando.
- Ecco la parte importante della definizione dell'host virt in httpd-vhosts.conf perché in Apache / mod_wsgi per Windows non hai WSGIDaemonProcess / WSGIProcessGroup disponibile.
<VirtualHost *:80>
ServerName name1
WSGIScriptAlias / "D:/....../wsgi.py" application-group=site1
......
</VirtualHost>
<VirtualHost *:80>
ServerName name2
WSGIScriptAlias / "D:/....../wsgi.py" application-group=site2
......
</VirtualHost>
Se non aggiungi "application-group ..." solo l'host virtuale che viene chiamato per primo dopo il riavvio di Apache verrà inizializzato con wsgi.py e settings.py e successivamente riceverà tutte le richieste a virt. host che hanno un WSGIScriptAlias o in altre parole che sono gestiti da mod_wsgi !! A quanto mi risulta, questo è un bug piuttosto serio perché un virt host dovrebbe sempre avere il proprio "thread" come comportamento standard di Apache / mod_wsgi. Btw Site1 e Site2 sono solo nomi che devono essere diversi.
- Il WSGIPythonPath non può essere assegnato all'interno di virt. Sezione host. Devi inserire l'assegnazione del percorso equivalente nel file wsgi.py di ciascuna delle tue app:
sys.path.append('D:/........../xxxxx_project/xxxxx')
os.environ['DJANGO_SETTINGS_MODULE'] = 'xxxxx.settings'
application = get_wsgi_application()