您的位置:首页 > 运维架构 > Nginx

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

2009-03-11 21:05 716 查看
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的组合还是比较方便的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: