Назад | Перейти на главную страницу

mod_wsgi беда на x64 windows 7 под управлением Apache 2.2

64-битная Win7 Apache 2.2.19, mod_wsgi / 3.4-BRANCH Python / 2.7.3

В журналах ошибок не видно:

[Wed Aug 01 17:44:48 2012] [notice] Apache/2.2.19 (Win64) mod_wsgi/3.4-BRANCH Python/2.7.3 configured -- resuming normal operations
[Wed Aug 01 17:44:48 2012] [notice] Server built: May 28 2011 15:18:56
[Wed Aug 01 17:44:48 2012] [notice] Parent: Created child process 8528
[Wed Aug 01 17:44:48 2012] [debug] mpm_winnt.c(477): Parent: Sent the scoreboard to the child
[Wed Aug 01 17:44:48 2012] [notice] Child 8528: Child process is running
[Wed Aug 01 17:44:48 2012] [debug] mpm_winnt.c(398): Child 8528: Retrieved our scoreboard from the parent.
[Wed Aug 01 17:44:48 2012] [info] Parent: Duplicating socket 556 and sending it to child process 8528
[Wed Aug 01 17:44:48 2012] [debug] mpm_winnt.c(595): Parent: Sent 1 listeners to child 8528
[Wed Aug 01 17:44:48 2012] [debug] mpm_winnt.c(554): Child 8528: retrieved 1 listeners from parent
[Wed Aug 01 17:44:48 2012] [info] mod_wsgi (pid=8528): Initializing Python.
[Wed Aug 01 17:44:48 2012] [info] mod_wsgi (pid=8528): Attach interpreter ''.
[Wed Aug 01 17:44:48 2012] [notice] Child 8528: Acquired the start mutex.
[Wed Aug 01 17:44:48 2012] [notice] Child 8528: Starting 64 worker threads.
[Wed Aug 01 17:44:48 2012] [notice] Child 8528: Starting thread to listen on port 80.

Конфиг прямо из гайдов:

WSGIScriptAlias /wsgi "C:/Program Files/Apache Software Foundation/Apache2.2/wsgi/wsgi_test.py"

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/wsgi/">
    Order allow,deny
    Allow from all
</Directory>

Приложение WSGI:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World from wsgi!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Получите 403 и запишите сообщение:

Options ExecCGI is off in this directory: C:/Program Files/Apache Software Foundation/Apache2.2/wsgi/wsgi_test.py

Добавьте Options + ExecCGI в каталог (и вставьте "#! C: \ Python27 \ python.exe" вверху файла приложения) Получите 500 и запишите сообщение:

Premature end of script headers: wsgi_test.py

Прямой python как язык сценариев через ExecCGI отлично работает, с #! ... в верхней части сценария и конфигурацией ExecCGI для другого каталога и т. Д.

Следствием этого является то, что WSGIScriptAlias ​​во многом похож на псевдоним, а не устанавливает ExecCGI и не вызывает должным образом для вызова функции application ().

Как мне отлаживать? Или чего-то явно не хватает?

Ваша конфигурация даже не используется, поскольку она получает конфигурацию CGI из другого места в конфигурации Apache.

Переименуйте файл в wsgi_test.wsgi и соответствующим образом измените директиву WSGIScriptAlias, и может стать более очевидным, в чем проблема. Технически определение CGI для .py не должно переопределять WSGIScriptAlias.