2008-06-12

apache2+django配置

关键字: django

winxp环境,采用apache2.0.63

 

1、mod_python

 

   a.拷贝mod_python.so 到 apache/modules下

 

   b.修改 apache 配置文件 httpd.conf ,增加以下内容

   LoadModule python_module modules/mod_python.so

   并且在文件尾部增加

   Include "d:/workspace/python/django_app/apache/apache_django_mod_python.conf"

 

   django_app为你的django程序目录,apache_django_mod_python.conf内容:

 

<VirtualHost *:80>

   <Location "/">

        #采用django用户认证时会用到
        AuthType Basic

        SetHandler python-program
         PythonPath "['D:/workspace/python','D:/workspace/python/django_app','D:/workspace/python/django_app/apps',..'c:/python25/Lib/site-packages/django'] + sys.path"
         PythonHandler django_app.my_handler
         PythonAuthenHandler django.contrib.auth.handlers.modpython

    </Location>

    Alias /media D:/workspace/python/divo3/htdocs/media
    <Location "/media">
        SetHandler None
    </Location>

    ErrorLog "logs/django_errors_log"
    CustomLog logs/django-access_log common
</VirtualHost>

 

   django_app.my_handler.py 内容:

 

#coding=utf-8
from django.core.handlers import modpython

def handler(req):
        import os, os.path, sys
        # 将当前路径插入到模块搜索路径中
        sys.path.append(os.path.dirname(__file__))
        # 加载其它路径
        # 设置站点的配置文件路径
        os.environ["DJANGO_SETTINGS_MODULE"] = 'django_app.settings'

        # 将请求原封不动交给 Django 处理, 并返回处理结果给浏览器
        return(modpython.handler(req))
# def

 

2、fastcgi

 

   a.拷贝mod_fastcgi-2.4.2-AP20.dll 到 apache/modules下

 

   b.修改 apache 配置文件 httpd.conf ,增加以下内容

  LoadModule fastcgi_module modules/mod_fastcgi-2.4.2-AP20.dll

   并且在文件尾部增加

   Include "d:/workspace/python/django_app/apache/apache_fastcgi.conf"

 

   django_app为你的django程序目录,apache_fastcgi.conf内容:

 

# python manage.py runfcgi method=threaded host=127.0.0.1 port=3033
FastCGIExternalServer "D:/workspace/python/django_app/dispatch.fcgi" -host 127.0.0.1:3033

<VirtualHost *:80>
  ServerName development
  DocumentRoot D:/workspace/python/django_app/

  Alias /media D:/workspace/python/django_app/htdocs/media

  RewriteEngine On
  #RewriteLogLevel 0
  RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ /dispatch.fcgi/$1 [QSA,L]

  ErrorLog logs/dummy-host.example.com-error_log
  CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

 

   dispatch.fcgi可以不存在。该方式运行django程序最方便,只要在cmd 状态下运行:

      python manage.py runfcgi method=threaded host=127.0.0.1 port=3033

 

   当程序有修改时,只要中断该命令再运行一下就可以,不需要重启apache。但现在在实际工作中,碰到一个问题,程序采用用户认证时,该方式就不能正常运行了,只好采用mod_python方式。

 

评论
发表评论

您还没有登录,请登录后发表评论

freecode
搜索本博客
最近加入圈子
存档
最新评论