wsgi配置

我的环境XP, site目录d:\WWW 1) 安装Python2.6 2) 安装Django1.1.1 检测: #在site目录d:\www下,创建mytest测试 python django-admin.py startprotject mytest cd mytest #启动mytest的server manage.py runserver open http://127.0.0.1:8000/ 你将会看到 welcome to django,django 安装成功 3) 安装Apache2.2, 并下载mod_wsgi.so, 拷贝到Apache的modules目录,在httpd.conf配置文件中添加以下 LoadModule wsgi_module modules/mod_wsgi.so (#注意wsgi_module而非mod_wsgi; modules/mod_wsgi.so中 mod_wsgi.so应为实际mod_wsgi.so文件的名称) Include "D:\WWW\apache_django_wsgi.conf " (#注意D:\WWW是整个site目录所在,根据自己情况改变,apache_django_wsgi.conf 为site添加的配置,为了保持httpd.conf的独立性) 4) 在site的目录(我的目录是D:\WWW)添加两个文件apache_django_wsgi.conf(site的配置文件)和django.wsgi(wsgi脚本) apache_django_wsgi.conf AliasMatch /js/.*\.(js) d:/WWW/media/js/$1 <Directory "d:/WWW/media/js "> Order allow,deny Options Indexes Allow from all #IndexOptions FancyIndexing Alias /static/.*\.(css|gif|png|jpg|jpeg) d:/WWW/media/static/$1 <Directory "d:/WWW/media/static "> Order allow,deny Options Indexes Allow from all #IndexOptions FancyIndexing #for testing wsgi #WSGIScriptAlias / "d:/WWW/test.wsgi " WSGIScriptAlias / "d:/WWW/django.wsgi " <Directory "d:/WWW "> Allow from all django.wsgi import os, sys #Calculate the path based on the location of the WSGI script. apache_configuration= os.path.dirname(__file__) project = os.path.dirname(apache_configuration) workspace = os.path.dirname(project) # sys.stdout = sys.stderr sys.path.append(workspace) #print workspace sys.path.append(workspace + "WWW ") os.environ['DJANGO_SETTINGS_MODULE'] = 'mytest.settings ' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() 这里需要解释一下, 'mytest.settings' 中 mytest是我的Django项目名, sys.path.append(workspace + "WWW") 中 "WWW"是我的site目录,sys.stdout = sys.stderr 是将标准输出到Apache的error.log中便于调试wsgi脚本 apache_django_wsgi.conf中的 #WSGIScriptAlias / "d:/WWW/test.wsgi" test.wsgi文件是为了测试mod_wsgi是否工作的脚本(后面将会提到) 5) 这个时候就可以启动Apache来检测mod_wsgi是否完成(这里mod_wsgi必须跟Apache和python的版本匹配,如果不 同,mod_wsgi启动会提示mod_wsgi.so找不到,我也遇到比较奇怪的问题,版本也匹配了,可就是Apache启动不成功,最后还是重启了机 器才搞定,在这个过程中可以用test apache来测试是否有什么问题) 6) Apache能启动之后,可以用下面的test.wsgi脚本来测试mod_wsgi是否work,(注意必须更改apache_django_wsgi.conf中 WSGIScriptAlias 的wsgi脚本到test.wsgi,测试完成后改回django.wsgi,每次改动都需要重启Apache) test.wsgi def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output] 如果输出Hello World! 就表明wsgi配置ok啦 Tips: 整个过程中,多看logs/error.log,查找其中错误的原因 python2.6的bin目录和Django的bin目录最好放在系统的环境的PATH中 先预告一下,下面将要做一个Django集成Mako模板的网站,会做一些Django和Mako模板相关的总结。

原文地址:https://www.cnblogs.com/lddhbu/p/2510570.html