在 Windows 服务器上为两个 django 网站设置 apache 虚拟主机

时间:2020-12-31 16:40:09

标签: python django windows apache mod-wsgi

我正在尝试使用 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()

0 个答案:

没有答案