Как мне добавить путь WSGIPython в VirtualHost для сервера Windows?
Я пытаюсь добавить WSGIPythonPathв VirtualHostно он бросает мне ошибку:
Синтаксическая ошибка в строке 549 файла /etc/httpd/conf/httpd.conf:
WSGIPythonPath не может встречаться в разделе
Я попытался решить эту проблему следующим образом: Где должен указывать WSGIPythonPath в моем virtualenv?
Но, исследуя больше, я обнаружил , что WSGIDaemonProcessи WSGIProcessGroupне поддерживаются в Windows , в соответствии с Почему WSGIDaemonProcess не доступна на Windows? .
Итак, как мне добавить WSGIPythonPathи где я могу разместить несколько сайтов Django на моем сервере Apache24.
Любая помощь будет полезна.
Вот мой 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>
Ответы
У меня был трудный путь создания двух вирт. хосты с Apache mod_wsgi под Windows. Итак, решение здесь для Apache / mod_wsgi и Windows.
В общем, мне довольно сложно разделить Apache / mod_wsgi для окон и unix, поскольку во многих статьях они смешаны или вообще не упоминается четко, о чем идет речь.
- Это важная часть определения хоста virt в httpd-vhosts.conf, потому что в Apache / mod_wsgi для Windows у вас нет доступных 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>
Если вы не добавите «application-group ...», только виртуальный хост, который сначала вызывается после перезапуска Apache, будет инициализирован с помощью wsgi.py и settings.py, а затем получит все запросы к virt. хосты, у которых есть WSGIScriptAlias или, другими словами, которые обрабатываются mod_wsgi !! Насколько я понимаю, это довольно серьезная ошибка, потому что виртуальный хост всегда должен иметь свой собственный «поток» в качестве стандартного поведения Apache / mod_wsgi. Кстати, Site1 и Site2 - это просто имена, которые должны быть разными.
- WSGIPythonPath не может быть назначен внутри virt. Раздел хостов. Вам необходимо указать эквивалентный путь в файле wsgi.py каждого из ваших приложений:
sys.path.append('D:/........../xxxxx_project/xxxxx')
os.environ['DJANGO_SETTINGS_MODULE'] = 'xxxxx.settings'
application = get_wsgi_application()