Как настроить скрипты Python для работы в Apache 2.0?

Я пытался выполнить пару руководств по настройке mod_python, но каждый раз терпел неудачу. У вас есть хорошее, пошаговое, надежное руководство?

Моя версия для разработчиков - OS X, производство - Centos.

Ответов (4)

Проблема для меня была не в настройке Apache, а в понимании того, как mod_apache на самом деле использует файлы .py. Операторы уровня модуля (включая те, что находятся в if __name__=='__main__' разделе) не выполняются - я предполагал, что стандартный вывод от запуска скрипта в командной строке будет тем, что сервер будет выводить, но это не так, как это работает.

Вместо этого я написал вызываемую функцию уровня модуля index(), и она вернула в виде строки HTML-код страницы. Также возможно иметь другие функции уровня модуля (например, otherFunction() ), к которым можно получить доступ как дополнительные сегменты в URI (например, testScript/otherFunction для файла testScript.py ).

Очевидно, это имеет больше смысла, чем моя первоначальная концепция stdout. Лучшая возможность использования Python в качестве языка сценариев, а не огромного языка разметки.

Есть два основных способа запустить Python на Apache. Самым простым было бы использовать CGI и писать обычные сценарии Python, а во втором - использовать веб-фреймворк, такой как Django или Pylons.

Использовать CGI просто. Убедитесь, что в вашем конфигурационном файле Apache настроен cgi-bin. Если нет, следуйте их документации ( http://httpd.apache.org/docs/2.0/howto/cgi.html ). На этом этапе все, что вам нужно сделать, это поместить ваши сценарии Python в каталог cgi-bin, и стандартный вывод станет HTTP-ответом. Обратитесь к документации Python для получения дополнительной информации ( https://docs.python.org/library/cgi.html ).

Если вы хотите использовать веб-фреймворк, вам необходимо настроить mod_python или FastCGI. Эти шаги зависят от того, какую платформу вы хотите использовать. Django предоставляет четкие инструкции по настройке mod_python и Django с Apache ( http://www.djangoproject.com/documentation/modpython/ )

Да, настроить mod_python довольно сложно. Вот как я это сделал.

В httpd.conf:

LoadModule python_module modules/mod_python.so

<Directory "/serverbase/htdocs/myapp">
  AddHandler mod_python .py
  PythonHandler myapp
  PythonDebug On

и в каталоге вашего приложения:

$ /serverbase/htdocs/myapp$ ls -l
total 16
-r-xr-xr-x 1 root sys        6484 May 21 15:54 myapp.py

Повторите настройку для каждой программы Python, которую вы хотите запустить под mod_python.

Вы используете Python в UNIX или Windows?

Альтернативой mod_python и FastCGI является mod_wsgi. Вы можете узнать больше на modwsgi

Я без проблем собрал и установил это на Solaris. Раньше я пробовал mod_python, но столкнулся с проблемами с разделяемыми библиотеками как часть сборки. Доступны хорошие документы по установке .