
En mi pregunta anterior, pregunté cómo hacer que mod_wsgi use una versión específica de Python. Siguiendo la respuesta a esa pregunta, creé un entorno virtual Python 3.9 e hice que WSGI lo usara. Sin embargo, ahora mi aplicación Flask no se está ejecutando en absoluto; simplemente configuré la página 404 para el resto de mi sitio. No obtengo errores al reiniciar Apache2 y el registro de errores de Apache está vacío cuando visito el sitio. Creo que el error debe deberse a mi entorno virtual, ya que creé aplicaciones Flask de prueba anteriores antes de usar el mismo estilo de configuración.
Mi entorno virtual se encuentra en 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"
Sistema operativo: Ubuntu 18.04.5 LTS
Respuesta1
Bien, encontré el problema. Fue realmente estúpido. Básicamente, estaba escribiendo /var/www/my_app
en lugar de /var/www/my-app
en /etc/apache2/sites-available/000-default-le-ssl.conf
. Arreglé las rutas, deshabilité el sitio, habilité el sitio, recargué Apache y ahora funciona. Tengo curiosidad por saber por qué Apache no da al menos una advertencia si no puede acceder al archivo WSGI.
Respuesta2
¿Qué usuario ejecuta Apache?
¿Ese usuario realmente puede acceder a su aplicación WSGI? Verifique esto ejecutando
ls -la
la ruta y todos sus componentes, o usandonamei
(namei /path/....
)¿Está SELinux en modo de cumplimiento? Si es así, consulte los registros de auditoría.
audit2why
puede ser útil (es posible que tengas que instalar algunos paquetes).