Por que o Apache2 não encontra meu aplicativo WSGI?

Por que o Apache2 não encontra meu aplicativo WSGI?

Na minha pergunta anterior, perguntei como fazer o mod_wsgi usar uma versão específica do Python. Seguindo a resposta dessa pergunta, criei um ambiente virtual Python 3.9 e fiz o WSGI usá-lo. No entanto, agora meu aplicativo Flask não está funcionando - acabei de configurar a página 404 para o resto do meu site. Não recebo erros ao reiniciar o Apache2 e o log de erros do Apache está vazio quando visito o site. Acho que o erro deve ser devido ao meu ambiente virtual, já que criei aplicativos Flask de teste anteriores antes de usar o mesmo estilo de configuração.

Meu ambiente virtual está localizado em 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

Parte de /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"

SO: Ubuntu 18.04.5 LTS

Responder1

Ok, encontrei o problema. Foi realmente estúpido. Basicamente, eu estava escrevendo /var/www/my_appem vez de /var/www/my-appem /etc/apache2/sites-available/000-default-le-ssl.conf. Corrigi os caminhos, desabilitei o site, habilitei o site, recarreguei o Apache e agora funciona. Estou curioso para saber por que o Apache não avisa pelo menos se não consegue acessar o arquivo WSGI.

Responder2

  • Qual usuário está executando o Apache?

  • Esse usuário pode realmente acessar seu aplicativo WSGI? Verifique isso executando ls -lano caminho e todos os seus componentes ou usando namei( namei /path/....)

  • O SELinux está no modo de aplicação? Se sim, verifique os logs de auditoria. audit2whypode ser útil (talvez seja necessário instalar alguns pacotes).

informação relacionada