通过mod_python配置运行在Apache上的Django框架
为了配置基于mod_python的Django,首先要安装有可用的mod_python模块的Apache。这通常意味着应该有一个LoadModule指令在Apache配置文件中。它看起来就像是这样:
LoadModulepython_module/usr/lib/apache2/modules/mod_python.so
Then,edityourApacheconfigurationfileandadda<Location>directivethattiesaspecificURLpathtoaspecificDjangoinstallation.例如:
<Location"/"> SetHandlerpython-program PythonHandlerdjango.core.handlers.modpython SetEnvDJANGO_SETTINGS_MODULEmysite.settings PythonDebugOff </Location>
要确保把DJANGO_SETTINGS_MODULE中的mysite.settings项目换成与你的站点相应的内容。
它告诉Apache,任何在/这个路径之后的URL都使用Django的mod_python来处理。它将DJANGO_SETTINGS_MODULE的值传递过去,使得mod_python知道这时应该使用哪个配置。
注意这里使用````指令而不是````。后者用于指向你的文件系统中的一个位置,然而````
SystemMessage:WARNING/2(<string>,line403);backlink Inlineliteralstart-stringwithoutend-string. SystemMessage:WARNING/2(<string>,line403);backlink Inlineliteralstart-stringwithoutend-string. SystemMessage:WARNING/2(<string>,line403);backlink Inlineliteralstart-stringwithoutend-string. SystemMessage:WARNING/2(<string>,line403);backlink Inlineliteralstart-stringwithoutend-string. SystemMessage:ERROR/3(<string>,line405) Unexpectedindentation.
指向一个Web站点的URL位置。````
SystemMessage:WARNING/2(<string>,line405);backlink Inlineliteralstart-stringwithoutend-string. SystemMessage:WARNING/2(<string>,line405);backlink Inlineliteralstart-stringwithoutend-string.
Apache可能不但会运行在你正常登录的环境中,也会运行在其它不同的用户环境中;也可能会有不同的文件路径或sys.path。你需要告诉mod_python如何去寻找你的项目及Django的位置。
PythonPath"['/path/to/project','/path/to/django']+sys.path"
你也可以加入一些其它指令,比如PythonAutoReloadOff以提升性能。查看mod_python文档获得详细的指令列表。
注意,你应该在成品服务器上设置PythonDebugOff。如果你使用PythonDebugOn的话,在程序产生错误时,你的用户会看到难看的(并且是暴露的)Python回溯信息。如果你把PythonDebug置On,当mod_python出现某些错误,你的用户会看到丑陋的(也会暴露某些信息)Python的对错误的追踪的信息。
重启Apache之后所有对你的站点的请求(或者是当你用了<VirtualHost>指令后则是虚拟主机)都会由Djanog来处理。