如何解决在 Windows 服务器上为两个 django 网站设置 apache 虚拟主机
我正在尝试使用 Apache 在 Windows 服务器平台上设置两个 django 网站。 我能够通过 apache 成功地单独运行这两个站点。 但是现在通过虚拟主机将它们一起运行似乎很棘手。
这是我对 httpd 文件和 wsgi 文件的配置尝试-
Apache httpd 配置 -
LoadFile "c:/python/python39.dll"
LoadModule wsgi_module "c:/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp39-win_amd64.pyd"
WSGIPythonHome "c:/python"
#Virtual host for first site
<VirtualHost *:80>
WSGIScriptAlias / "C:/doctormainfolder/doctorwebsite/doctorwebsite/wsgi.py"
ServerName doctor.com
<Directory "C:/doctormainfolder/doctorwebsite/doctorwebsite/">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static "C:/doctormainfolder/doctorwebsite/static/"
<Directory "C:/doctormainfolder/doctorwebsite/static/">
Require all granted
</Directory>
ScriptInterpreterSource Registry
</VirtualHost>
#Virtual host for second site
<VirtualHost *:80>
WSGIScriptAlias / “C:/betamainfolder/betawebsite/betawebsite/wsgi.py"
ServerName beta.com
<Directory "C:/betamainfolder/betawebsite/betawebsite/">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static “C:/betamainfolder/betawebsite/static/"
<Directory “C:/betamainfolder/betawebsite/static/">
Require all granted
</Directory>
ScriptInterpreterSource Registry
</VirtualHost>
这是第一个网站的 wsgi 文件详细信息
import os
import os
import sys
path = 'C:/doctormainfolder/doctorwebsite'
if path not in sys.path:
sys.path.append(path)
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE','doctorwebsite.settings')
application = get_wsgi_application()
这里是第二个网站的 wsgi 文件详细信息 -
import os
import sys
path = 'C:/betamainfolder/betawebsite'
if path not in sys.path:
sys.path.append(path)
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE','betawebsite.settings')
application = get_wsgi_application()
更新
我阅读了链接,这里是配置的更新。我观察到的是,无论哪个虚拟主机首先列出,都会正常加载站点。第二个虚拟主机不加载。从 apache 错误日志我可以看到,在这种情况下,doctorwebsite 无法加载错误 -
“ModuleNotFoundError: No module named 'betawebsite'\r”,这有点令人困惑,为什么doctorwebsite会在betawebsite中搜索模块。
虚拟主机设置
<VirtualHost *:80>
ServerName beta.com
WSGIScriptAlias / "C:/betamainfolder/betawebsite/betawebsite/wsgi.py" application-group=site2
<Directory "C:/betamainfolder/betawebsite/betawebsite/">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static "C:/betamainfolder/betawebsite/static/"
<Directory "C:/betamainfolder/betawebsite/static/">
Require all granted
</Directory>
ScriptInterpreterSource Registry
</VirtualHost>
<VirtualHost *:80>
ServerName doctor.com
WSGIScriptAlias / "C:/doctormainfolder/doctorwebsite/doctorwebsite/wsgi.py" application-group=site1
<Directory "C:/doctormainfolder/doctorwebsite/doctorwebsite/">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static "C:/doctormainfolder/doctorwebsite/static/"
<Directory "C:/doctormainfolder/doctorwebsite/static/">
Require all granted
</Directory>
ScriptInterpreterSource Registry
</VirtualHost>
这是两者的 WSGI -
import os
import sys
from django.core.wsgi import get_wsgi_application
sys.path.append('C:/betamainfolder/betawebsite')
os.environ.setdefault('DJANGO_SETTINGS_MODULE','betawebsite.settings')
application = get_wsgi_application()
import os
import sys
from django.core.wsgi import get_wsgi_application
sys.path.append('C:/doctormainfolder/doctorwebsite')
os.environ.setdefault('DJANGO_SETTINGS_MODULE','doctorwebsite.settings')
application = get_wsgi_application()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。