现在的位置: 首页 > 综合 > 正文

Django部署在nginx上(FastCgi)的一些常见问题

2013年09月13日 ⁄ 综合 ⁄ 共 1790字 ⁄ 字号 评论关闭

1.http://localhost/admin被定向到http://localhost/,导致Page not Found(404)错误。

 

nginx.conf没有配置好,默认的nginx的fastcgi_param中的如下项需要修改

 

#              fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
                fastcgi_param  PATH_INFO          $fastcgi_script_name;

 

Django使用的是PATH_INFO,而不是SCRIPT_NAME

 

 

2.media下的css,js,image等无法显示的问题


1)把django,admin下的media拷贝出来

cp -r /usr/lib/python2.5/site-packages/django/contrib/admin/media/ /home/my/project/media/

media在Django的安装目录下也有就在/Django-1.0.2-final/django/contrib/admin/media/下

 

2)修改nginx的配置文件

location ~/media/ {
    root    /home/my/project/;
    break;
}

就可以了,另外,其他静态的文件,都可以通过这个方式来指定路径,因为Django是不处理静态文件的。

 

3)Django的URL错误

 

如果还是没有,则需要看nginx的访问日志和错误日志,在logs/access.log和logs/error.log

如下,Access.log中的,证明get的链接不对,应该是/media/css/login.css

127.0.0.1 - - [11/Mar/2009:21:57:08 +0800] "GET /admin/css/login.css HTTP/1.1" 302 5 "http://localhost:8080/admin/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)"

 

修改setting.py文件,设置如下

ADMIN_MEDIA_PREFIX = '/media/'

 

如果设为空则请求的URL为:/admin/css/login.css,看http:/的源码如下

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

 

如果设为/media/则URL为:/media/css/login.css,源码如下

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

 

4)nginx的映射错误,导致找不到css等文件

另外一个错误是找不到文件,可以查看error.log文件

2009/03/10 23:01:25 [error] 2368#0: *13 open() "/cygdrive/c/nginx/c:/django/project/media/media/css/dashboard.css" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /media/css/dashboard.css HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/admin/"

 

则需要看看你的nginx的如下配置是否正确

location ~/media/ {
    root    /home/my/project/;
    break;
}

这个配置,假如你访问的URL是:http://localhost/media/css/login.css,则映射到/home/my/project/media/css/login.css上。

 

在windows下路径应该是设置为root /cygdrive/c/path;而不是root c:/path;

 

我在window xp和ubuntu8.04上都成功配置了,nginx和django的组合还是比较方便的。

 

 

抱歉!评论已关闭.