Я попробовал много подходов, чтобы Python работал с Apache должным образом, и, наконец, решил использовать Apache + mod_WSGI + web.py . Это звучит как много, но это намного проще, чем использовать сложные фреймворки, такие как Django.
(Вы правы, не беспокойтесь о mod_python)
Обратите внимание, я использую Apache2, но mod_wsgi работает и на 1.3, основываясь на странице modwsgi .
Если вы работаете в Redhat, я думаю, что у вас есть yum, поэтому убедитесь, что вы получили модуль apache wsgi и другие пакеты python:
$ yum update
$ yum install gcc gcc-c++ python-setuptools python-devel
$ yum install httpd mod_wsgi
И получите web.py для вашей версии python. Например, используя easy_install. У меня v2.6.
$ easy_install-2.6 web.py
Создайте каталог для ваших скриптов на python: /opt/local/apache2/wsgi-scripts/
В вашем httpd.conf:
LoadModule wsgi_module modules/mod_wsgi.so
# note foo.py is the python file to get executed
# and /opt/local/apache2/wsgi-scripts/ is the dedicated directory for wsgi scripts
WSGIScriptAlias /myapp /opt/local/apache2/wsgi-scripts/foo.py/
AddType text/html .py
<Directory /opt/local/apache2/wsgi-scripts/>
Order allow,deny
Allow from all
</Directory>
Обратите внимание, что web.py использует "каталог шаблонов". Поместите это в каталог wsgi, /opt/local/apache2/wsgi-scripts/templates/
.
Создать файл /opt/local/apache2/wsgi-scripts/templates/mytemplate.html
:
$def with (text)
<html>
<body>
Hello $text.
</body>
</html>
Добавьте соответствующие разрешения.
$ chown -R root:httpd /opt/local/apache2/wsgi-scripts/
$ chmod -R 770 /opt/local/apache2/wsgi-scripts/
В вашем файле Python, foo.py:
import web
urls = ( '/', 'broker',)
render = web.template.render('/opt/local/apache2/wsgi-scripts/templates/')
application = web.application(urls, globals()).wsgifunc()
class broker:
def GET(self):
return render.mytemplate("World")
Приведенное выше заменит специальную текстовую переменную web.py $ в mytemplate словом "World" перед возвратом результата.
http://ivory.idyll.org/articles/wsgi-intro/what-is-wsgi.html