403 Forbidden:Nginx在Django Admin面板中没有提供静态功能

时间:2014-05-23 16:36:13

标签: python css django nginx django-admin

settings.py

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 它已经成功收集了adminstatic文件夹中的所有静态信息。我在crossstked中,adminstatic文件夹中有一个名为admin的文件夹。此admin文件夹有3个名为cssimgjs的文件夹。

我在生产机器上做的所有这些。因此,当我尝试通过生产的IP访问本地浏览器上的django管理页面时,管理面板正在打开,但加载了任何css / js。我做了F12并在网络标签中看到。所有静力学都有禁止的错误。

PS:我正在使用uWsgi和nginx。

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

3 个答案:

答案 0 :(得分:3)

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

您需要将项目移动到nginx进程有权阅读的文件夹中(您真的不应该从/root提供这些内容),或者您可以chown / chmod /root/proj/myapp/adminstatic/适当地提供对www-data的访问权限。

答案 1 :(得分:1)

我将静态文件移动到/ data / www并且有效。

答案 2 :(得分:0)

将您的项目移至/var/www/html/,然后运行sudo chown -R www-data:www-data project-directory/。请记住在/etc/systemd/system/gunicorn.service/etc/nginx/sites-available/your-project.conf上编辑您的配置以固定到新位置。

然后运行

sudo systemctl daemon-reload, 
sudo systemctl restart gunicorn, 
sudo systemctl restart nginx