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:权限被拒绝)
要解决此问题,请查看问题2nginx以哪个用户的身份运行?做一个ps aux | grep nginx
并分享pls@rtindru添加了您的建议并得到了回复;如果此项工作正常,请确定nginx作为哪个用户运行?做一个ps aux | grep nginx
并分享pls@rtindru添加了您的建议并得到了回复;如果有用,请联系我