apache2+django配置
关键字: djangowinxp环境,采用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方式。







评论排行榜