Рейтинг:2

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

флаг ru

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

Моя виртуальная среда находится в путь/к/моему/приложению/venv/.

путь/к/моему/приложению/runner.wsgi:

импорт системы

# Заставить что-то появиться в журнале ошибок, если WSGI вообще запущен
поднять ValueError()

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

из my_app импортировать приложение как приложение

Часть /etc/apache2/сайты-доступны/000-по умолчанию-ле-ssl.conf:

WSGIDaemonProcess myapp user=www-data group=www-data threads=4 python-home=/path/to/my/app/venv/
WSGIScriptAlias ​​/my-app/путь/к/my/app/runner.wsgi

/etc/apache2/моды доступны/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 "путь/к/моему/приложению/venv"

ОС: Ubuntu 18.04.5 LTS

Рейтинг:1
флаг ru

Хорошо, я нашел проблему. Это было действительно глупо. В общем, я писал /var/www/my_app вместо /var/www/мое-приложение в /etc/apache2/сайты-доступны/000-по умолчанию-ле-ssl.conf. Я исправил пути, отключил сайт, включил сайт, перезагрузил Apache, и теперь он работает. Мне любопытно, почему Apache, по крайней мере, не выдает предупреждение, если он не может получить доступ к файлу WSGI.

Рейтинг:0
флаг my
  • Какой пользователь использует Apache?

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

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

ThatCoolCoder avatar
флаг ru
Apache запускается `root` (1 экземпляр) и `www-data` (несколько экземпляров). Я полагаю, что они могут получить доступ к каталогу (который находится в `var/www`), так как я пробовал некоторые тесты, которые я нашел в Интернете, и в любом случае весь каталог имеет разрешения `0777`. Я не думаю, что использую SELinux, потому что не все команды SELinux найдены.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.