只有第一个被加载的Django站点可以工作



我最近向stackoverflow提交了一个题为Django无限加载的问题,该问题是在apache上使用mod_wsgi发出多个请求后进行的。无论如何,我最近修改了很多代码,现在我有了一个新问题。然而,我请求的第一个Django网站是有效的,第二个指向我加载的第一个网站,并给出了DisallowedHost响应,因为它显然试图用不同的域名访问Django应用程序。我显然希望它能做到这一点,如果有人能帮助我,那就太好了。这是我所有的代码。


编辑:使用Razenstein的建议,我的网站现在会失速,这意味着它们不会加载。

编辑#2每次尝试连接到neostorm.us.to(我的第一个网站(时,我都会收到这个错误[Ssun Apr 03 19:26:58.63023][ssl:info][pid 17528:tid 2116][client 10.0.0.138:59334]AH01964:已建立到子147的连接(server astinarts.uk.to:443(

EDIT#3运气不好,我已经用它更新了我的XAMPP版本,Apache,问题仍然存在。似乎没有人知道为什么会发生这种情况。我的python版本如果好(3.10.4(

Vhosts

LoadFile "C:/Users/taber/AppData/Local/Programs/Python/Python310/python310.dll"
LoadModule wsgi_module "C:/Users/taber/AppData/Local/Programs/Python/Python310/lib/site-packages/mod_wsgi/server/mod_wsgi.cp310-win_amd64.pyd"
WSGIPythonHome "C:/Users/taber/AppData/Local/Programs/Python/Python310"
##################################################################################################
#                                       ASTINARTS.UK.TO VIRTUAL HOST                             #
##################################################################################################
<VirtualHost *:443>
ServerName astinarts.uk.to
SSLEngine on
SSLCertificateFile "conf/astinarts/astinarts.uk.to-chain.pem"
SSLCertificateKeyFile "conf/astinarts/astinarts.uk.to-key.pem"

Alias /static "C:/xampp/htdocs/astinarts/static"
<Directory "C:/xampp/htdocs/astinarts/static">
Require all granted
</Directory>
Alias /media "C:/xampp/htdocs/astinarts/media"
<Directory "C:/xampp/htdocs/astinarts/media">
Require all granted
</Directory>
Alias /.well-known "C:/xampp/htdocs/astinarts/.well-known"
<Directory "C:xampphtdocsastinarts.well-known">
Require all granted
</Directory>
Alias /sitemap.xml "C:/xampp/htdocs/astinarts/sitemap.xml"
Alias /robots.txt "C:/xampp/htdocs/astinarts/robots.txt"
<Directory "C:/xampp/htdocs/astinarts/astinarts">
Require all granted
</Directory>
WSGIScriptAlias / "C:/xampp/htdocs/astinarts/astinarts/wsgi.py"
<Directory "C:/xampp/htdocs/astinarts/astinarts">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
##################################################################################################
#                                       NEOSTORM.US.TO VIRTUAL HOST                              #
##################################################################################################
<VirtualHost *:443>
ServerName neostorm.us.to
SSLEngine on
SSLCertificateFile "conf/ssl.crt/neostorm.us.to-chain.pem"
SSLCertificateKeyFile "conf/ssl.key/neostorm.us.to-key.pem"
Alias /static "C:/xampp/htdocs/neostorm/static"
<Directory "C:/xampp/htdocs/neostorm/static">
Require all granted
</Directory>
Alias /media "C:/xampp/htdocs/neostorm/media"
<Directory "C:/xampp/htdocs/neostorm/media">
Require all granted
</Directory>
Alias /sitemap.xml "C:/xampp/htdocs/neostorm/sitemap.xml"
Alias /robots.txt "C:/xampp/htdocs/neostorm/robots.txt"
WSGIScriptAlias / "C:/xampp/htdocs/neostorm/neostorm/wsgi_windows.py"
<Directory "C:/xampp/htdocs/neostorm/neostorm">
<Files wsgi_windows.py>
Require all granted
</Files>
</Directory>
ErrorLog "C:xamppapachelogsneostorm_error.log"
CustomLog "C:xamppapachelogsneostorm_custom.log" common
</VirtualHost>
##################################################################################################
#                                   MAIL.NEOSTORM.US.TO VIRTUAL HOST                             #
##################################################################################################
<VirtualHost *:443>
ServerName mail.neostorm.us.to
SSLEngine on
SSLCertificateFile "conf/ssl.crt/neostorm.us.to-chain.pem"
SSLCertificateKeyFile "conf/ssl.key/neostorm.us.to-key.pem"
DocumentRoot "C:/xampp/htdocs/webmail"
<Directory "C:/xampp/htdocs/webmail">
Require all granted
</Directory>
</VirtualHost>

站点1 WSGI文件

import os
import sys
from django.core.wsgi import get_wsgi_application
from pathlib import Path

# Add project directory to the sys.path
path_home = str(Path(__file__).parents[1])
if path_home not in sys.path:
sys.path.append(path_home)

os.environ['DJANGO_SETTINGS_MODULE'] = 'astinarts.settings'

application = get_wsgi_application()

站点2 WSGI文件


import os
import sys
from django.core.wsgi import get_wsgi_application
from pathlib import Path

# Add project directory to the sys.path
path_home = str(Path(__file__).parents[1])
if path_home not in sys.path:
sys.path.append(path_home)

os.environ['DJANGO_SETTINGS_MODULE'] = 'neostorm.settings'

application = get_wsgi_application()

注意:我不知道下面的行为是否适用于所有版本的mod_wsgi,也不知道错误是否已经修复。我在2020/2021年的Windows中观察到了这一点。版本我记不清了。它从未出现在Ubuntu环境中。

如果您在Windows Apache中使用带有mod_wsgi的virt主机,并定义应用程序。。组%{GLOBAL}始终是第一个(!!(virt中的WSGIApplication。主机将被称为ServerName等适合的名称。这一定是mod_wsgi或Apache中的一个错误。

<VirtualHost *:443>
ServerName my_server_one.com
....
WSGIApplicationGroup %{GLOBAL}
....
</VirtualHost>

<VirtualHost *:443>
ServerName my_server_two.com
....
WSGIApplicationGroup %{GLOBAL}
....
</VirtualHost>

解决方案:使用单独的显式组名:


<VirtualHost *:443>
ServerName my_server_one.com
....
WSGIApplicationGroup my_app_one
....
</VirtualHost>

<VirtualHost *:443>
ServerName my_server_two.com
....
WSGIApplicationGroup my_app_two
....
</VirtualHost>

问题不是有多个网站,使用mod wsgi,甚至使用Windows。实际的问题是数据库。由于某些原因(不知道为什么(,默认数据库已损坏。

解决方案是让我从默认数据库切换到MySQL。我不完全确定为什么默认数据库会损坏。

如果你想切换到MySQL,这就是你可以做的。

在你的设置中。找到数据库并制作它。

DATABASES = {
'default': {
'ENGINE'  : 'django.db.backends.mysql', # <-- UPDATED line 
'NAME'    : 'DATABASE_NAME',                 # <-- UPDATED line 
'USER'    : 'USER',                     # <-- UPDATED line
'PASSWORD': 'PASSWORD',              # <-- UPDATED line
'HOST'    : 'localhost',                # <-- UPDATED line
'PORT'    : '3306',
}
}

更多信息请参阅:Django网站在请求后无法加载

最新更新