django与gunicorn和nginx

时间:2013-04-01 11:14:47

标签: django deployment nginx gunicorn supervisord

我开发了django应用程序,现在使用gunicron和nginx在freebsd服务器上部署它。我在installedapps下的项目设置文件中添加了guncorn。并将gunicorn.conf.py放在root中:

import os

def numCPUs():
    if not hasattr(os, "sysconf"):
        raise RuntimeError("No sysconf detected.")
    return os.sysconf("SC_NPROCESSORS_ONLN")

user = root
workers = numCPUs() * 2 + 1
bind = "127.0.0.1:8000"
pidfile = "/tmp/gunicorn-srv.pid"
backlog = 2048
logfile = "/data/logs/gunicorn_srv.log"
loglevel = "info"

然后在nginx.conf中更新了服务器标签:

    listen       80;
    server_name localhost;

    access_log   /var/log/nginx/nginx-access.log;
    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass   http://127.0.0.1:8000;
        #root   /usr/local/www/nginx;
        #index  index.html index.htm;
    }

    location  /media/ {
        root /data/webs/uni_rate;
    }
    location  /static/ {
        root /data/webs/uni_rate;
    }

现在我已经开始使用nginx和guncorn了。如果我浏览我的公共IP页面,但不提供静态文件。如果我直接点击

http://myip/static/folder/file.css

然后返回403错误。任何想法可能是什么原因或应该提供什么其他信息来诊断它。

我的媒体和静态目录分别是:

/data/webs/uni_rate/media
/data/webs/uni_rate/static

这是nginx-access.log

的输出
182.178.6.248 - - [01/Apr/2013:11:14:54 -0500] "GET /static/bootstrap_toolkit_extras/css/bootstrap.css HTTP/1.1" 403 168 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv
:16.0) Gecko/20100101 Firefox/16.0"
182.178.6.248 - - [01/Apr/2013:11:15:00 -0500] "-" 400 0 "-" "-"

2 个答案:

答案 0 :(得分:1)

您是否检查了/ data / webs / uni_rate /的所有父文件夹的读取权限? Nginx用户必须具有对所有这些的读取权限。例如,/ data,/ data / webs,/ data / webs / uni_rate。

答案 1 :(得分:1)

尝试使用以下内容替换静态媒体位置

location /static {
    alias /var/www/domain1/media/;
    autoindex on;
    access_log off;
} 

诀窍在于'别名'而不是'root'。