日期:2014-05-16  浏览次数:21079 次

Django项目部署在Apache遇到的问题及解决思路
   最近学习Django框架,照着资料作了一个小web程序。做完了就该部署,怎么说都应该把流程走一遍。我选择在windowsXp+Apache的环境,也是按照网上的资料,我的python是2.5的,Apache是2.2的,所以下载mod_python-3.3.1.win32-py2.5-Apache2.2.exe。安装一定要正确,我开始用wamp提供的apache套件,结果mod_python就装不上。我也没有心情去磨这个问题了,就干脆下了个纯的Apache安装包。才把mod_python+apache环境搞定。接下来就是放python写的web程序。

   网上很多资料都用了一个mptest.py来开场,我觉得挺好,由简入繁,我一开始就把我的程序放上去,结果出的问题都不知道找谁去。一步步来,一点点成功会支持你继续下去。

   用mptest.py的时候,在httpd.conf中要加个Directory的节点,内部的配置是这样的。
        AddHandler mod_python .py
        PythonHandler mptest
        PythonDebug On

这里面 AddHandler mod_python .py表示后缀为py的文件都用mod_python来处理。
PythonHandler mptest中的mptest就是指mptest.py。
我的项目文件夹叫mysite,放在D:/wamp/apps下面。
部署Django项目的时候,用下面的配置
LoadModule python_module modules/mod_python.so
DocumentRoot "D:/wamp/apps"
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>

<Location "/mysite/">
        SetEnv DJANGO_SETTINGS_MODULE settings
        SetHandler mod_python
        AddHandler mod_python .py
        PythonHandler django.core.handlers.modpython
        PythonOption django.root /mysite
        PythonDebug On
        PythonPath "['C:/Python25','D:/wamp/apps/', 'D:/wamp/apps/mysite', '/django','C:/Python25/Lib/site-packages'] + sys.path"
</Location>

如果不顺利,通常会出现的问题如下。

请求的URL不存在;或者只是把目录结构罗列下来,就像文档服务器一样,点击*.py文件就把内容展现了;或者请求的资源总是Forbidden;或者出现调试项目时出现的黄页;还有500这个错误。

很难说哪种错误对应哪种解决方法,基本上都是配置文件惹的祸,而且大部分是路径配置错误,注意看apache的error.log,注意看页面提示。有几个地方要注意。

Location而不是Directory,我改成了Directory就不工作了。


下面附带django开发所需组件,仅windows上使用,所需的python25、Django-1.2.3
和mysql请自己下吧。