Вижу внутреннюю ошибку сервера 500 с mod_wsgi, apache и django, но в журнале ничего нет. Gunicorn работает без проблем

Мы выпустили новый код, который зависит от django-tree-queries, и теперь видим внутреннюю ошибку сервера с mod_wsgi. Нет ничего в логах apache и ничего в логах django. Обычно при ошибках django мы видим трассировку стека в логах и получаем письмо.

Вот наша конфигурация apache:

<VirtualHost IP_ADDR:443>
    ServerName our.url
    ErrorLog ${APACHE_LOG_DIR}/dev-ssl-error.log
    CustomLog ${APACHE_LOG_DIR}/dev-ssl-access.log combined
    LogLevel debug
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    SSLEngine on
<Directory /var/www/django/app/config>
 <Files wsgi.py>
 Require all granted
 </Files>
</Directory>
    WSGIDaemonProcess apps-dev processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup apps-dev
    WSGIApplicationGroup %{GLOBAL}
    WSGIScriptAlias / /var/www/django/app/config/wsgi.py
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(OPTIONS|TRACE)
RewriteRule .* - [F]
</VirtualHost>

Вот наш файл wsgi.py:

activate_file = "/var/www/django/app/venv/bin/activate_this.py"
exec(open(activate_file).read(), {"__file__": activate_file})

import os  # noqa: E402
import sys  # noqa: E402
from pathlib import Path  # noqa: E402

from django.core.wsgi import get_wsgi_application  # noqa: E402

ROOT_DIR = Path(__file__).resolve(strict=True).parent.parent

# This allows easy placement of apps within the interior
# our_app directory.

sys.path.append(str(ROOT_DIR / "our_app"))
sys.path.append(str(ROOT_DIR))

# Explicitly set the settings module for this wsgi app
os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.apps_dev"

# Enable dot env file reading by default for this environment
os.environ["DJANGO_READ_DOT_ENV_FILE"] = "True"

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.

application = get_wsgi_application()

Я подтвердил, что если у меня есть ошибка импорта, то ничего не регистрируется, поэтому я предполагаю, что проблема в этом. Я пробовал увеличить журналы apache до отладочных, обновить sys.stdout до sys.stderr в моем wsgi файле. Я пробовал установить пасту и обернуть мое приложение в ErrorMiddleware.

Когда я запускаю тот же самый wsgi файл с помощью gunicorn или manage.py runserver, проблем не возникает, так что это что-то уникальное для mod_wsgi. У меня нет прав на установку mod_wsgi-express. У меня нет прав на присоединение к процессу wsgi.

Благодарю за помощь, сообщите мне, если я могу предоставить какую-либо другую информацию

Существует несколько возможных причин этой ошибки:

1-Возможно, проблема в конфигурации Apache. Убедитесь, что 'WSGIDaemonProcess', 'WSGIProcessGroup', и 'WSGIScriptAlias' директивы являются правильно настроены и указывают на правильные места для вашего Django приложения.

2-Возможно, проблема в самом приложении Django. Убедитесь, что что ваше приложение Django правильно настроено и что все зависимости установлены. Вы можете попробовать запустить Django сервер разработки, чтобы проверить, работает ли приложение правильно при запускать напрямую.

3-Возможна проблема с самим модулем 'mod_wsgi'. Убедитесь, что что 'mod_wsgi' правильно установлен и настроен. Вы можете попробовать включить логирование 'mod_wsgi', чтобы проверить, есть ли какие-либо проблемы с этим модулем. модулем.

Если вы все еще не можете решить проблему, вы можете проверить журнал ошибок Apache (указанный в директиве 'ErrorLog' в конфигурации Apache) для получения дополнительной информации о причине ошибки. Также может быть полезно проверить журнал ошибок Django на наличие ошибок, возникающих в приложении Django.

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