Работает только первый загружаемый сайт Django

Недавно я отправил проблему на stackoverflow под названием Django infinite loading after multiple requests on apache using mod_wsgi. Так или иначе, я недавно изменил много кода и теперь у меня новая проблема. Первый сайт Django, который я запрашиваю, работает, однако второй указывает на первый, который я загрузил, и выдает ответ DisallowedHost, потому что, очевидно, он пытается получить доступ к приложению Django с другим доменным именем. Я, очевидно, хочу, чтобы оно делало то, что должно делать, так что если кто-нибудь может мне помочь, это было бы здорово. Вот весь мой код

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 ВИРТУАЛЬНЫЙ ХОСТ # ################################################################################################## <VirtualHost *:443> ServerName astinarts.uk.to SSLEngine on SSLCertificateFile "conf/astinarts/astinarts.uk.to-chain.pem" SSLCertificateKeyFile "conf/astinarts/astinarts.uk.to-key.pem" WSGIApplicationGroup %{GLOBAL}

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"
    WSGIApplicationGroup %{GLOBAL}
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 одинаковым и была ли исправлена ошибка. Я наблюдал это в 2020/2021 годах в Windows. Версии я не помню. В среде Ubuntu это никогда не проявлялось.

Если вы используете virt hosts в Windows Apache с mod_wsgi и определяете App..Group %{GLOBAL} всегда WSGIApplication в первом(!!!) virt. 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 не загружается после запроса

Вернуться на верх