Я попытался выполнить несколько обучающих руководств по настройке mod_python, но каждый раз сработал. У вас есть хороший, шаг за шагом, рок-твердый howto?
Мой блок dev - OS X, производство - Centos.
Я попытался выполнить несколько обучающих руководств по настройке mod_python, но каждый раз сработал. У вас есть хороший, шаг за шагом, рок-твердый howto?
Мой блок dev - OS X, производство - Centos.
Существует два основных способа запуска 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, но столкнулся с проблемами с общими библиотеками как частью сборки. Доступны хорошие установочные документы.
Проблема для меня не в настройке Apache, а в понимании того, как mod_apache использует файлы .py. Операторы на уровне модуля (в том числе в разделе if __name__=='__main__'
) не выполняются - я предположил, что stdout из запуска script в командной строке будет выводиться сервером, но это не так, как это работает.
Вместо этого я написал функцию уровня модуля, называемую index()
, и возвратил ее как строку HTML страницы. Также возможно иметь другие функции уровня модуля (например, otherFunction()
), к которым можно получить доступ в качестве дополнительных сегментов в URI (например, testScript/otherFunction
для файла testScript.py
.)
Очевидно, это имеет больше смысла, чем моя оригинальная концепция stdout. Лучшая возможность использования Python в качестве языка сценариев, а не языка с большим количеством разметки.