Вопрос

Я настроен 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

Это меняет рабочий каталог для процесса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top