【问题标题】:django with gunicron and nginx带有 gunicorn 和 nginx 的 django
【发布时间】:2013-03-22 11:09:21
【问题描述】:

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

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 "-" "-"

【问题讨论】:

  • 您有/media/static 指向同一个目录/data/webs/uni_rate。首先,这实际上是媒体路径还是静态路径,其次,如果是,为什么它们是同一个目录?

标签: django deployment nginx gunicorn supervisord


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    尝试将 staticmedialocation 替换为以下内容:

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

    诀窍在于“别名”而不是“根”。

    【讨论】:

    • 它到底是做什么的?自动索引安全吗?赞成但@Chuan Ma:回答解决了我的问题所以接受了。
    • autoindex 不是必须的,我现在在开发过程中使用它,不过不管怎样,只是列出静态目录,所以我认为它不安全。
    猜你喜欢
    • 2019-03-22
    • 2012-11-20
    • 2021-09-23
    • 2021-05-19
    • 2016-11-19
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多