mod_wsgi python conf parser
Вопрос
Я настроен Flask, веб-микро-каркас Python в Apache с mod_wsgi.
Приложение работает нормально, кроме Python Confparser. Это не бросает ошибку:
parser = ConfigParser.ConfigParser()
parser.read('snati.con')
Но когда я добавляю:
parser.get('database', 'user')
я получил Внутренняя ошибка сервера без чего -либо в ошибке.
Я также попробовал:
file = open("sample.txt")
Тот же результат.
Должны быть некоторые проблемы с конфигурацией, но я не могу их найти.
Мой Apache Conf выглядит как:
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>
Мое приложение
#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
Что может быть неправ и почему я не могу получить ошибку в журнале Apache?
Решение
Используйте абсолютные пути к файлам в вашем коде Python, а не на относительных путях.
Текущий рабочий каталог процесса не будет там, где находится код вашего приложения и файлы.
Вы не видите никаких ошибок, поскольку колба не будет регистрировать их, если не в режиме отладки. Настройка приложения, чтобы запечатлеть их и отправить их по электронной почте, или иным образом запишите их как. Я не помню, какие варианты есть для Flask для последнего.
Другие советы
Добавьте путь к вашему файлу настройки Apache с помощью домашней переменной
WSGIDaemonProcess myapp user=me group=me threads=5 home=/path/to/your/directory
Это меняет рабочий каталог для процесса.