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

Apache не обрабатывает скрипты Python (* .py) через браузер

Изменить: ОС - CentOS 5

Я установил Python 2.5.5 и пытаюсь запустить несколько скриптов Python через браузер.

Честно говоря, я раньше с Python не работал. Я попытался загрузить модуль python в Apache, но он уже загружен и был пропущен. Я также подтвердил, что могу запускать скрипты Python из командной строки, если сделаю их исполняемыми.

Однако когда я поставил "http://www.example.com/test.py"в моем браузере он возвращает неанализируемый HTML-код следующим образом:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator,
 root@localhost and inform them of the time the error occurred,
and anything you might have done that may have
caused the error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at www.example.com Port 80</address>
</body></html>

В моем файле httpd.conf также есть следующее.

AddHandler cgi-script .py

Я в тупике, потому что не знаю, куда смотреть. Это звонит кому-нибудь? Надеюсь, ничего слишком очевидного, что я здесь упускаю ...

Заранее спасибо.

Изменить: обнаружил следующее в Apache error_log.

[Fri Feb 26 19:58:38 2010] [error] [client xxx.xxx.xxx.xxx] (13)Permission denied: exec of 'test.py' failed
[Fri Feb 26 19:58:38 2010] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: test.py
[Fri Feb 26 20:04:56 2010] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads.

Я когда-либо использовал mod_python для установки Trac, и они достаточно четкие инструкции для их применения.

Однако, пока мы тестировали mod_python, я обнаружил Эта статья полезно - вы тоже можете.

Ошибка 13 от apache указывает на проблему с разрешениями файловой системы.
SElinux включен? (что выводит "ls -laZ test.py")

Я сомневаюсь, что это проблема со ScriptAlias ​​или AddHandler / ExecCGI (любой из которых получит apache для выполнения скриптов) - поскольку вы получаете ошибку 500, а не исходный apache python, явно пытаясь для выполнения файла.

Apache будет выполнять только файлы, которые находятся в определенных каталогах cgi-bin. Все остальное считается контентом, который передается зрителю. Ваш корневой каталог не отмечен и не должен быть отмечен как таковой.

Использовать ScriptAlias <url-path> <directory> директива для установки каталогов cgi-bin. например: ScriptAlias /cgi-bin/ /webroot/cgi-bin/. Скопируйте туда свои скрипты, затем позвоните http://www.example.com/cgi-bin/test.py. Это должно сработать для вас.