只有第一个要加载的 Django 站点有效
Only the first Django site to be loaded works
我最近向 Whosebug 提交了一个标题为 Django infinite loading after multiple requests on apache using mod_wsgi 的问题。无论如何,我最近更改了很多代码,现在我遇到了一个新问题。我请求的第一个 Django 网站有效,但是,第二个指向我加载的第一个网站并给出响应 DisallowedHost 因为显然它正在尝试访问具有不同域名的 Django 应用程序。我显然希望它这样做它应该这样做,如果有人能帮助我那会很棒。这是我所有的代码。
编辑:
使用 Razenstein 的建议,我的网站现在停止运行,这意味着它们无法加载。
编辑 #2
每次我尝试连接到 neostorm.us.to(我的第一个网站)[Sun Apr 03 19:26:58.563023 2022] [ssl:info] [pid 17528:tid 2116] [client 10.0] 时都会出现此错误.0.138:59334] AH01964:连接到 child 147 已建立(服务器 astinarts.uk.to:443)
编辑#3
运气不好,我用它更新了我的 XAMPP 版本,Apache 问题仍然存在。似乎没有人知道为什么会这样。我的 python 版本(3.10.4)
虚拟主机
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:\xampp\htdocs\astinarts\.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:\xampp\apache\logs\neostorm_error.log"
CustomLog "C:\xampp\apache\logs\neostorm_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 的所有版本,以及该错误是否已修复。我在 Windows 的 2020/2021 年观察到了它。版本记不清了。它从未出现在 Ubuntu 环境中。
如果您在 Windows Apache 中使用 virt 主机和 mod_wsgi 并定义 App..Group %{GLOBAL} 总是第一个(!!)virt 中的 WSGIApplication。 host 将被称为任何 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,你可以这样做。
在你的 settings.py 中找到 DATABASES 并把它变成这样。
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 网站在请求后加载失败
我最近向 Whosebug 提交了一个标题为 Django infinite loading after multiple requests on apache using mod_wsgi 的问题。无论如何,我最近更改了很多代码,现在我遇到了一个新问题。我请求的第一个 Django 网站有效,但是,第二个指向我加载的第一个网站并给出响应 DisallowedHost 因为显然它正在尝试访问具有不同域名的 Django 应用程序。我显然希望它这样做它应该这样做,如果有人能帮助我那会很棒。这是我所有的代码。
编辑: 使用 Razenstein 的建议,我的网站现在停止运行,这意味着它们无法加载。
编辑 #2 每次我尝试连接到 neostorm.us.to(我的第一个网站)[Sun Apr 03 19:26:58.563023 2022] [ssl:info] [pid 17528:tid 2116] [client 10.0] 时都会出现此错误.0.138:59334] AH01964:连接到 child 147 已建立(服务器 astinarts.uk.to:443)
编辑#3 运气不好,我用它更新了我的 XAMPP 版本,Apache 问题仍然存在。似乎没有人知道为什么会这样。我的 python 版本(3.10.4)
虚拟主机
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:\xampp\htdocs\astinarts\.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:\xampp\apache\logs\neostorm_error.log"
CustomLog "C:\xampp\apache\logs\neostorm_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 的所有版本,以及该错误是否已修复。我在 Windows 的 2020/2021 年观察到了它。版本记不清了。它从未出现在 Ubuntu 环境中。
如果您在 Windows Apache 中使用 virt 主机和 mod_wsgi 并定义 App..Group %{GLOBAL} 总是第一个(!!)virt 中的 WSGIApplication。 host 将被称为任何 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,你可以这样做。
在你的 settings.py 中找到 DATABASES 并把它变成这样。
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 网站在请求后加载失败