mod_WSGI Python Conf Parser
Pregunta
Estoy configurado Flask, un micro-marco de Python Web bajo Apache con mod_wsgi.
La aplicación funciona bien excepto Python Confparser. Esto no arroja ningún error:
parser = ConfigParser.ConfigParser()
parser.read('snati.con')
Pero cuando agrego:
parser.get('database', 'user')
Obtuve error de servidor interno sin nada en el error.log de Apache
Lo intenté también:
file = open("sample.txt")
Mismo resultado.
Debe haber algunos problemas de configuración, pero no puedo encontrarlo.
Mi conf conf se parece:
WSGIRestrictStdout Off
<VirtualHost *:80>
ServerName my.com
WSGIDaemonProcess myapp user=me group=me threads=5
WSGIScriptAlias / /home/me/www/myapp.wsgi
<Directory /home/me/www/myapp >
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
Mi app.wsgi
#active the python virtualenv for this application
activate_this = '/home/gilles/www/snati/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
import sys
sys.path.insert(0, '/home/gilles/www/snati/src')
sys.stdout = sys.stderr
from app import app as application
¿Qué puede estar mal y por qué no puedo obtener el error en el registro de Apache?
Solución
Use rutas absolutas a archivos en su código Python, no rutas relativas.
El directorio de trabajo actual del proceso no será donde está su código de aplicación y archivos.
No está viendo ningún error, ya que Flask no los registra si no en modo de depuración. Configurar la aplicación para capturarlos y enviarlos por correo electrónico o registrarlos de otra manera cómo. No recuerdo qué opciones tiene Flask para este último.
Otros consejos
Agregue la ruta a su archivo de configuración de apache con una variable de inicio
WSGIDaemonProcess myapp user=me group=me threads=5 home=/path/to/your/directory
Esto cambia el directorio de trabajo para el proceso.