Djang+Wsgi+Apache Config

Djang+Wsgi+Apache Config on Windows

之前写了一篇 Django+Mod_Python+Apache的配置文章(http://blog.csdn.net/l_courser/article/details/6818606)。

毕竟,Mod_Python是即将被淘汰的玩意儿,Wsgi才是最新的“王道”,结合网上一些配置,我整理了一下,并亲测成功,发出来供大家参考。

如有其它疑问,请随时留言。欢迎转载,转载时请注明出处,谢谢!


准备以下内容:

  • Python26+,此处我用的是 Python27,Python3+版本未使用过,听说有很多不同,以后用到的时候再研究;
  • 下载合适的Wsgi版本,此处我使用的是:mod_wsgi-win32-ap22py27-3.3.so,为了使用方便将其改名为:mod_wsgi.so;
  • 该文件下载地址:http://modwsgi.googlecode.com/files/mod_wsgi-win32-ap22py27-3.3.so
  • Django使用的是此时间点最新的1.3.1
  • Apache2.2.* ;
以上内容,在我的网盘均有下载,网盘这东东没整明白,以后再把详细下载地址放上来:http://www.dbank.com/netdisk/index.html?v=2.3.5#/我的网盘

东东都准备完成了,开始各种安装,一般的不说了,说说wsgi吧。将下载的文件拷贝到 Apache安装目录的 moudles 下面。
整个安装完成了。
配置
  • Django配置
  • 安装完成后,将Django的bin目录最好放在系统的环境的PATH中,命令行进入D:/website,执行django-admin.py startproject myweb
  • Apache配置
  • 在 httpd.conf 合适的地方加上:LoadModule wsgi_module modules/mod_wsgi.so;
  • 最后加上:Include "D:/website/apache_django_wsgi.conf";("D:/website”为你的网站根目录);
  • 在 D:/website中建立以下两个文件:django.wsgi和apache_django_wsgi.conf,文件内容如下:
  • apache_django_wsgi.conf
    1. Alias /static/admin/ "D:/website/myweb/static/admin/"  
    2. <Directory "D:/website/myweb/static/admin">  
    3.     Order allow,deny  
    4.     Options Indexes  
    5.     Allow from all  
    6. </Directory>  
    7.    
    8. WSGIScriptAlias / "D:/website/django.wsgi"  
    9.    
    10. <Directory "D:/website/myweb">  
    11.     Allow from all  
    12. </Directory>  
    13.   
    14. <Directory "d:/website">   
    15.     Allow from all  
    16. </Directory>  
    17.   
    18. #for testing wsgi  
    19. #WSGIScriptAlias / "d:/Djangoweb/test.wsgi"    

    django.wsgi内容如下
    1. import os, sys  
    2. #Calculate the path based on the location of the WSGI script.  
    3. apache_configuration= os.path.dirname(__file__)  
    4. project = os.path.dirname(apache_configuration)  
    5. workspace = os.path.dirname(project)  
    6.   
    7. #  
    8. os.chdir('D:/website/myweb')     #注意这句话,之前我没有加这句话,导致无法找到项目路径  
    9. sys.stdout = sys.stderr     #将日志输出到apache下的error.log便于发现问题  
    10. sys.path.append(workspace)  
    11.   
    12. #print workspace   
    13. sys.path.append(workspace + "website")  
    14. os.environ['DJANGO_SETTINGS_MODULE'] = 'myweb.settings'  
    15. import django.core.handlers.wsgi  
    16. application = django.core.handlers.wsgi.WSGIHandler()  

    apache_django_wsgi.conf文件的内容中,最后一行注释的test.wsgi文件内容如下:
    1. def application(environ, start_response):  
    2.     status = '200 OK'  
    3.     output = 'Hello World!'  
    4.   
    5.     response_headers = [('Content-type''text/plain'),('Content-Length', str(len(output)))]  
    6.     start_response(status, response_headers)  
    7.   
    8.     return [output]  
    该文件用来测试wsgi是否配置成功用的,测试的时候,取消apache_django_wsgi.conf中以下注释:#WSGIScriptAlias / "d:/Djangoweb/test.wsgi" 并将WSGIScriptAlias / "D:/website/django.wsgi"加上注释。测试结果如果显示 Hello World!,则成功,否则失败,请挥剑自宫^_^在整个安装、配置、测试的过程中,多关注 error.log,对无法解决的问题,多google,百度就算了,基本搜不到你想要的,可以这么说,搞程序开发的,如果用百度,我可以认为你不专业,呵呵,扯远了。这方面的问题,以后多多交流。
相关文章

相关标签/搜索