Comment dois-je ajouter le chemin WSGIPython dans VirtualHost pour le serveur Windows?
Je suis en train d'ajouter WSGIPythonPath
en VirtualHost
mais ça me jeter une erreur:
Erreur de syntaxe à la ligne 549 de /etc/httpd/conf/httpd.conf:
WSGIPythonPath ne peut pas apparaître dans la section
J'ai essayé de le résoudre en suivant: Où doit pointer WSGIPythonPath dans mon virtualenv?
Mais, en recherchant davantage, j'ai trouvé cela WSGIDaemonProcess
et je ne suis WSGIProcessGroup
pas pris en charge sur Windows selon Pourquoi WSGIDaemonProcess n'est pas disponible sur Windows? .
Alors, comment dois-je ajouter WSGIPythonPath
et où pour que je puisse héberger plusieurs sites Django sur mon serveur Apache24.
Toute aide serait bénéfique.
Voici mon httpd.conf
dossier:
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>
Réponses
J'ai eu un parcours difficile à mettre en place deux virt. hôtes avec Apache mod_wsgi sous Windows. La solution ici est donc pour Apache / mod_wsgi et Windows.
En général, je trouve assez difficile de séparer Apache / mod_wsgi pour Windows et Unix car dans de nombreux articles, les deux sont mélangés ou il n'est pas du tout mentionné clairement de quoi il est question.
- Voici la partie importante de la définition d'hôte virt dans httpd-vhosts.conf car dans Apache / mod_wsgi pour Windows, vous n'avez pas de WSGIDaemonProcess / WSGIProcessGroup disponible.
<VirtualHost *:80>
ServerName name1
WSGIScriptAlias / "D:/....../wsgi.py" application-group=site1
......
</VirtualHost>
<VirtualHost *:80>
ServerName name2
WSGIScriptAlias / "D:/....../wsgi.py" application-group=site2
......
</VirtualHost>
Si vous n'ajoutez pas "application-group ...", seul l'hôte virtuel qui est appelé pour la première fois après le redémarrage d'Apache s'initialise avec wsgi.py et settings.py et reçoit ensuite toutes les requêtes vers virt. les hôtes qui ont un WSGIScriptAlias ou en d'autres termes qui sont gérés par mod_wsgi !! À ma connaissance, c'est un bogue assez sérieux car un hôte virt devrait toujours avoir son propre "thread" comme comportement standard d'Apache / mod_wsgi. Btw Site1 et Site2 ne sont que des noms qui doivent être différents.
- Le WSGIPythonPath ne peut pas être attribué à l'intérieur de virt. Section hôtes. Vous devez mettre l'attribution de chemin équivalent dans le fichier wsgi.py de chacune de vos applications:
sys.path.append('D:/........../xxxxx_project/xxxxx')
os.environ['DJANGO_SETTINGS_MODULE'] = 'xxxxx.settings'
application = get_wsgi_application()