[Django 1.5] Windows + Apache + wsgi配置

  1. 基本步骤

    1. 添加配置文件路径到文件里

      LoadModule wsgi_module modules/mod_wsgi-win32-ap22py27-3.3.so

      配置wsgi 文件:

      WSGIScriptAlias / "C:/Aptana Studio 3 Workspace/MyProjet/mysite/src/mysite/wsgi.py" wsgi文件路径,即需要Apache加载的Django项目的wsgi文件路径)

      WSGIPythonPath "C:/Aptana Studio 3 Workspace/MyProjet/mysite/src"wsgi文件夹路径)

      文件夹权限:

      <Directory />

      Options None

      AllowOverride None

      Order allow,deny

      Allow from all

      </Directory>

         

      <Directory "C:/Aptana Studio 3 Workspace/MyProjet/mysite/src">

          <Files wsgi.py>

          Order deny,allow

          Allow from all

          </Files>

      </Directory>

      Admin 静态文件加载:

      Alias "/static" "C:/Python27/Lib/site-packages/django/contrib/admin/static/"

      <Location "C:/Python27/Lib/site-packages/django/contrib/admin/static">

          Options None

      AllowOverride None

      Order allow,deny

      Allow from all

      </Location>

  2. 问题分析与调试:

    由于Django在配置到apache服务器上的时候,官方网站并不建议把静态文件的加载工作拿给Django去做,而是交给服务器去完成。所以直接配置Django到服务器上之后会遇到css样式无法加载的问题。

    在配置Django Apache 服务器上的时候,由于只是从网上生搬硬套,没有去认真分析Apache的语法和配置原理,导致一直出错。所有静态文件(cssjs库,img)都参照此配置方法配置。

下面以加载adminCSS样式为例:

Alias 语法

参考:http://apache.jz123.cn/mod/mod_alias.html#alias

   

Alisa 第一个参数是访问网站的URL路径 ,比如如下配置:

Alias "/static" "C:/Python27/Lib/site-packages/django/contrib/admin/static/"

<Location "C:/Python27/Lib/site-packages/django/contrib/admin/static">

Options Indexes

AllowOverride None

Order allow,deny

Allow from all

</Location>

   

此处URL的根目录不是访问网站的根目录(例如127.0.0.1),而是访问页面的相对目录

比如:访问127.0.0.1/admin加载页面

    <link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" />

    <link rel="stylesheet" type="text/css" href="/static/admin/css/login.css" />

    此处URL根目录是映射当前页面相对路径根目录,所以"/static"映射的是 "C:/Python27/Lib/site-packages/django/contrib/admin/static/"

   

配置到此处之后访问仍然会有"403 Forbidden"的错误,原来是对RUL根目录权限设置问题:

<Directory />

Order allow,deny

Deny from All

</Directory>

改成:

<Directory />

Order allow,deny

Allow from All

</Directory>

OK

   

Django - syncdb causes error: "DatabaseError: no such table: django_site"

solution:

http://stackoverflow.com/questions/3631556/django-no-such-table-django-session

总结这次调试:解决问题不能急于求成,简单粗暴的方法可能只会欲速则不达。

posted @ 2013-07-19 16:44  浪潮之巅123  阅读(744)  评论(0编辑  收藏  举报