Django 打开()/root/project/static/*.css“;失败(13:权限被拒绝)nginx

Django 打开()/root/project/static/*.css“;失败(13:权限被拒绝)nginx,django,ubuntu,nginx,permissions,django-staticfiles,Django,Ubuntu,Nginx,Permissions,Django Staticfiles,我必须用uwsgi、django、nginx设置我的项目,一切似乎都很好,但不知何故,我一直在获取静态文件时出错我一直在在线阅读并尝试所有可能的方法,但我一直在静态文件夹中遇到此权限被拒绝错误 有人能告诉我我在许可方面做错了什么,我应该如何改变它吗 这是我的/var/log/nginx/error.log open() 这是我的nginx站点可用配置 server { listen 80 default_server; listen [::]:80 default_server;

我必须用
uwsgi、django、nginx设置我的项目,一切似乎都很好,但不知何故,我一直在获取
静态文件时出错
我一直在在线阅读并尝试所有可能的方法,但我一直在静态文件夹中遇到此
权限被拒绝
错误

有人能告诉我我在许可方面做错了什么,我应该如何改变它吗

这是我的
/var/log/nginx/error.log

open()

这是我的
nginx站点可用配置

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # root /var/www/html;

    # Add index.php to the list if you are using PHP
    # index index.html index.htm index.nginx-debian.html;

    server_name _;

    #location = /favicon.ico { access_log off; log_not_found off; }

    #location /media  {
    #       root /root/project/mediafiles;
    #}


        location ^~ /static/ {
        allow all;  # this is from one of the posts but no luck
        auth_basic off;  # this is from one of the posts but no luck
            root /root/project;
        }


        location / {
            include         uwsgi_params;
            uwsgi_pass      unix:/tmp/uwsgi/project.sock;
        }

}
作为我的文件夹权限

对于项目文件夹,它是
drwxr-xr-x 23 www-data www-data

对于静态文件夹,它是
drwxr-x---8 www data www data 4096 May 23 14:40 static

我也从未获得过静态
755
的许可,但运气不好。 无论如何,这是使用root作为用户,而不是有一个额外的用户,root也在
www-data

提前谢谢你的帮助

编辑:

正如所建议的,这是
ps aux | grep nginx

root       810  0.0  0.0 124972  1440 ?        Ss   02:18   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   811  0.0  0.0 125688  4840 ?        S    02:18   0:00 nginx: worker process
www-data   812  0.0  0.0 125348  3196 ?        S    02:18   0:00 nginx: worker process
root      1159  0.0  0.0  14224  1004 pts/0    S+   04:25   0:00 grep --color=auto nginx

我猜测的问题是,您的项目
根目录位于
/root
/root
的默认权限为:

drwx-----14 root root 4096 May 8 12:47 root

如您所见,其他用户,如
www-data
甚至没有对
/root
目录的读取权限。在Linux FS中,如果需要读取路径
/a/b/c
中的内容,则需要对该路径中的每个文件夹具有读取权限

Nginx worker进程以用户
www-data
的身份运行,该用户试图打开一个根目录为
/root
的文件,而该用户没有读取权限,因此引发
权限被拒绝(13)

有关更多详细信息,请参阅此演示:

$ cat /root/test2/text.txt     
cat: /root/test2/text.txt: Permission denied
$ sudo cat /root/test2/test.txt  
A
$ sudo ls -la /root/ | grep test2
drwxrwxrwx   2 root     root       4096 May 24 02:04 test2
希望这是有意义的。解决方案将基于以下条件之一:

  • 以root用户身份运行nginx worker(不推荐)
  • 将项目目录移动到可供多个用户访问的位置,如
    /usr/local/share
    /var/www/
    (推荐)

我猜问题在于,您的项目
根目录位于
/root
/root
的默认权限为:

drwx-----14 root root 4096 May 8 12:47 root

如您所见,其他用户,如
www-data
甚至没有对
/root
目录的读取权限。在Linux FS中,如果需要读取路径
/a/b/c
中的内容,则需要对该路径中的每个文件夹具有读取权限

Nginx worker进程以用户
www-data
的身份运行,该用户试图打开一个根目录为
/root
的文件,而该用户没有读取权限,因此引发
权限被拒绝(13)

有关更多详细信息,请参阅此演示:

$ cat /root/test2/text.txt     
cat: /root/test2/text.txt: Permission denied
$ sudo cat /root/test2/test.txt  
A
$ sudo ls -la /root/ | grep test2
drwxrwxrwx   2 root     root       4096 May 24 02:04 test2
希望这是有意义的。解决方案将基于以下条件之一:

  • 以root用户身份运行nginx worker(不推荐)
  • 将项目目录移动到可供多个用户访问的位置,如
    /usr/local/share
    /var/www/
    (推荐)

    • 我也有同样的问题。Centos 7.6上的My nginx服务器无法访问路径
      /home/user/app/mysyte/static/
      中的静态文件夹。在
      /var/log/nginx/error.log中
      相同错误
      open()“/home/user/app/mysyte/static/*.css”失败(13:权限被拒绝)


      要解决这个问题,请看问题2。我也有同样的问题。Centos 7.6上的My nginx服务器无法访问路径
      /home/user/app/mysyte/static/
      中的静态文件夹。在
      /var/log/nginx/error.log中
      相同错误
      open()“/home/user/app/mysyte/static/*.css”失败(13:权限被拒绝)


      要解决此问题,请查看问题2

      nginx以哪个用户的身份运行?做一个
      ps aux | grep nginx
      并分享pls@rtindru添加了您的建议并得到了回复;如果此项工作正常,请确定nginx作为哪个用户运行?做一个
      ps aux | grep nginx
      并分享pls@rtindru添加了您的建议并得到了回复;如果有用,请联系我