Windows 서버용 VirtualHost에 WSGIPython 경로를 어떻게 추가해야합니까?
나는 추가하려고 WSGIPythonPath
에 VirtualHost
있지만, 그것은 나에게 오류를 던지고 :
/etc/httpd/conf/httpd.conf의 549 행에 구문 오류가 있습니다.
WSGIPythonPath는 섹션 내에서 발생할 수 없습니다.
다음과 같이 해결하려고 했습니다. 내 virtualenv에서 WSGIPythonPath가 어디를 가리켜 야합니까?
그러나, 더 연구에, 그 발견 WSGIDaemonProcess
과 WSGIProcessGroup
에 따라 Windows에서 지원되지 않는 이유는 WSGIDaemonProcess 것은 Windows에서 사용할 수 없습니다? .
따라서 WSGIPythonPath
Apache24 서버에서 여러 Django 사이트를 호스팅 할 수 있도록 어떻게 추가해야 하며 어디에 추가해야 합니다.
어떤 도움이라도 도움이 될 것입니다.
내 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>
답변
나는 두 가지 미덕을 세우는 데 어려움을 겪었습니다. Windows에서 Apache mod_wsgi를 사용하는 호스트. 따라서 여기의 솔루션은 Apache / mod_wsgi 및 Windows 용입니다.
일반적으로 Windows와 Unix에 대해 Apache / mod_wsgi를 분리하는 것은 매우 어렵습니다. 많은 기사에서 두 가지가 혼합되어 있거나 어떤 항목이 언급되고 있는지 명확하게 언급되지 않았기 때문입니다.
- Windows 용 Apache / mod_wsgi에서는 WSGIDaemonProcess / WSGIProcessGroup을 사용할 수 없기 때문에 httpd-vhosts.conf에있는 virt 호스트 정의의 중요한 부분이 있습니다.
<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의 표준 동작으로 자신의 "스레드"를 가져야하기 때문에 다소 심각한 버그입니다. Btw Site1과 Site2는 달라야하는 이름 일뿐입니다.
- WSGIPythonPath는 virt 내에서 할당 할 수 없습니다. 호스트 섹션. 각 앱의 wsgi.py 파일에 동등한 경로 할당을 넣어야합니다.
sys.path.append('D:/........../xxxxx_project/xxxxx')
os.environ['DJANGO_SETTINGS_MODULE'] = 'xxxxx.settings'
application = get_wsgi_application()