Como devo adicionar o caminho WSGIPython no servidor VirtualHost para Windows?
Estou tentando adicionar WSGIPythonPath, VirtualHostmas estou gerando um erro:
Erro de sintaxe na linha 549 de /etc/httpd/conf/httpd.conf:
WSGIPythonPath não pode ocorrer dentro da seção
Tentei resolvê-lo da seguinte maneira: Onde deve WSGIPythonPath apontar em meu virtualenv?
Mas, ao pesquisar mais, descobri que WSGIDaemonProcesse WSGIProcessGroupnão são suportados no Windows de acordo com Por que WSGIDaemonProcess não está disponível no Windows? .
Então, como devo adicionar WSGIPythonPathe onde para que eu possa hospedar vários sites Django em meu servidor Apache24.
Qualquer ajuda seria benéfica.
Aqui está meu httpd.confarquivo:
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>
Respostas
Tive uma jornada difícil estabelecendo duas virtudes. hosts com Apache mod_wsgi no Windows. Portanto, a solução aqui é para Apache / mod_wsgi e Windows.
Em geral, acho muito difícil separar Apache / mod_wsgi para windows e unix, pois em muitos artigos os dois estão misturados ou não é mencionado claramente de qual deles está sendo falado.
- Aqui está a parte importante da definição do host virt em httpd-vhosts.conf porque no Apache / mod_wsgi para Windows você não tem WSGIDaemonProcess / WSGIProcessGroup disponível.
<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 você não adicionar "application-group ...", apenas o host virtual que é chamado pela primeira vez após a reinicialização do Apache será inicializado com wsgi.py e settings.py e, posteriormente, obterá todas as solicitações para virt. hosts que possuem um WSGIScriptAlias ou, em outras palavras, que são gerenciados por mod_wsgi !! No meu entendimento, este é um bug bastante sério porque um host virt deve sempre obter seu próprio "thread" como comportamento padrão do Apache / mod_wsgi. Btw Site1 e Site2 são apenas nomes que devem ser diferentes.
- O WSGIPythonPath não pode ser atribuído dentro do virt. Seção de hosts. Você precisa colocar a atribuição de caminho equivalente no arquivo wsgi.py de cada um dos seus aplicativos:
sys.path.append('D:/........../xxxxx_project/xxxxx')
os.environ['DJANGO_SETTINGS_MODULE'] = 'xxxxx.settings'
application = get_wsgi_application()