2014-05-23 200 views
0

settings.py403禁止:Nginx的在Django管理面板不服务静态

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
DEBUG = True 
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, 'adminstatic') 

mynginx.conf /etc/nginx/sites-enabled/mynginx.conf 你可以确信,我只有在启用了站点文件夹这个文件的conf

server { 
    listen    *:80; 
    server_name   _; 
    access_log   /var/log/myapp.access.log; 
    error_log    /var/log/myapp.error.log; 

    # Django media 

    location /static/ { 
    alias /root/proj/myapp/adminstatic/; #your Django project's static files - amend as required 
    } 

    # Finally, send all non-media requests to the Django server. 
    location/{ 
     uwsgi_pass unix:/tmp/myapp.sock; 
     include  /etc/nginx/uwsgi_params; # the uwsgi_params file you installed 
    } 

} 

此后我试着collectstatic命令 python manage.py collectstatic 它已成功收集管理静态文件夹中的所有静态。我crosscheked,有一个文件夹名为admin在adminstatic文件夹中。并且此admin文件夹有3个名为cssimgjs的文件夹。

所有这些我在做生产机器。所以当我试图通过产品的ip访问本地浏览器上的django管理页面时,管理面板打开,但加载了任何css/js。我做了F12并在网络标签中看到。所有静力学都有禁止出现的错误。 PS:我正在使用uWsgi和nginx一起使用。

和往常一样,我已经看过几个SO线程和博客。但它并没有帮助我。

回答

3

nginx web进程用户(通常为www-data)可能没有读取权限/root/proj/myapp/adminstatic/。我想如果你检查你的myapp.error.log你会看到权限被拒绝的消息。

你需要你的项目移动到文件夹nginx的过程中有权从(你真的不应该/root服务这些东西)来读取或者你可以chown/chmod/root/proj/myapp/adminstatic/适当给予www-data访问。

+0

'myapp.error.log'显示什么? – dgel

+0

即使你使用'chmod 777 -R adminstatic','/ root'的权限仍然不允许你访问这些文件 - 这就是为什么你不应该从'/ root'提供这些文件的原因。您可以通过尝试从机器上的另一个帐户读取'adminstatic'来测试。你会得到'权限被拒绝'。 – dgel

+0

将'/ root'权限修改为'drwxr-xr-x'(通常不是一个好主意),或者将项目从'/ root'移出到'www-data'可以访问的文件夹中。 – dgel

1

我将我的静态文件移动到/ data/www,它工作。