-
基本步骤
- 下载安装Apache http://httpd.apache.org/download.cgi。
-
配置 Apache httpd.conf 文件:
添加配置文件路径到文件里
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>
-
问题分析与调试:
由于Django在配置到apache服务器上的时候,官方网站并不建议把静态文件的加载工作拿给Django去做,而是交给服务器去完成。所以直接配置Django到服务器上之后会遇到css样式无法加载的问题。
在配置Django 到Apache 服务器上的时候,由于只是从网上生搬硬套,没有去认真分析Apache的语法和配置原理,导致一直出错。所有静态文件(css,js库,img)都参照此配置方法配置。
下面以加载admin的CSS样式为例:
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根目录权限设置问题:
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://*.com/questions/3631556/django-no-such-table-django-session
总结这次调试:解决问题不能急于求成,简单粗暴的方法可能只会欲速则不达。