Почему Apache2 не находит мое приложение WSGI?

Почему Apache2 не находит мое приложение WSGI?

В предыдущем вопросе я спрашивал, как заставить mod_wsgi использовать определенную версию Python. Следуя ответу на этот вопрос, я создал виртуальную среду Python 3.9 и заставил WSGI использовать ее. Однако теперь мое приложение Flask вообще не работает — я просто получаю страницу 404, настроенную для остальной части моего сайта. Я не получаю никаких ошибок при перезапуске Apache2, а журнал ошибок Apache пуст, когда я посещаю сайт. Я думаю, что ошибка должна быть связана с моей виртуальной средой, так как я создал предыдущие тестовые приложения Flask до того, как использовал тот же стиль конфигурации.

Моя виртуальная среда расположена в path/to/my/app/venv/.

path/to/my/app/runner.wsgi:

import sys

# Make something appear in error log if the WSGI is run at all
raise ValueError()

PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, PROJECT_DIR)

from my_app import app as application

Часть /etc/apache2/sites-available/000-default-le-ssl.conf:

WSGIDaemonProcess myapp user=www-data group=www-data threads=4 python-home=/path/to/my/app/venv/
WSGIScriptAlias /my-app/ path/to/my/app/runner.wsgi

/etc/apache2/mods-available/wsgi.load

LoadModule wsgi_module "/path/to/my/app/venv/lib/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so"
WSGIPythonHome "path/to/my/app/venv"

ОС: Ubuntu 18.04.5 LTS

решение1

Ладно, я нашел проблему. Это было действительно глупо. По сути, я писал /var/www/my_appвместо /var/www/my-app. /etc/apache2/sites-available/000-default-le-ssl.confЯ исправил пути, отключил сайт, включил сайт, перезагрузил Apache, и теперь он работает. Мне интересно, почему Apache хотя бы не выдает предупреждение, если не может получить доступ к файлу WSGI.

решение2

  • Какой пользователь запускает Apache?

  • Может ли этот пользователь получить доступ к вашему приложению WSGI? Проверьте это, запустив ls -lapath и все его компоненты или используя namei( namei /path/....)

  • SELinux находится в принудительном режиме? Если да, проверьте журналы аудита. audit2whyможет быть полезно (возможно, вам придется установить некоторые пакеты).

Связанный контент