Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Getting chown():从ini文件运行uwsgi时不允许执行操作_Python_Django_Nginx_Uwsgi - Fatal编程技术网

Python Getting chown():从ini文件运行uwsgi时不允许执行操作

Python Getting chown():从ini文件运行uwsgi时不允许执行操作,python,django,nginx,uwsgi,Python,Django,Nginx,Uwsgi,我正在尝试运行nginx和uwsgi。 当我尝试在proj虚拟环境中与proj用户一起使用以下命令运行uwsgi时,我得到一个错误。当我运行uwsgi时,我看到在/run/uwsgi/proj.sock 我将/run/uwsgi权限更改为drwxrwx,以查看问题是否与权限相关。但问题仍然存在。我还检查了/etc/passwd,没有uwsgi用户 /run/uwsgi的目录信息为: drwxrwxrwx 2 root root 60 Jul 16

我正在尝试运行nginx和uwsgi。 当我尝试在proj虚拟环境中与proj用户一起使用以下命令运行uwsgi时,我得到一个错误。当我运行uwsgi时,我看到在
/run/uwsgi/proj.sock
我将
/run/uwsgi
权限更改为
drwxrwx
,以查看问题是否与权限相关。但问题仍然存在。我还检查了
/etc/passwd
,没有uwsgi用户

/run/uwsgi
的目录信息为:

drwxrwxrwx   2 root           root             60 Jul 16 10:53 uwsgi
在proj虚拟环境中,当我尝试使用proj user将sock文件的所有权更改为proj:nginx时,我得到以下错误

chown: changing ownership of ‘/run/uwsgi/proj.sock’: Operation not permitted
当我检查
/run/uwsgi/proj.sock
文件时,它是
proj:proj
,但应该更改为
proj:nginx
。此操作可以使用root手动完成。但这不能用proj用户来完成

运行以下命令:

uwsgi --ini /etc/uwsgi/sites/proj.ini
错误:

[uWSGI] getting INI configuration from /etc/uwsgi/sites/proj.ini<br>
*** Starting uWSGI 2.0.15 (64bit) on [Mon Jul 16 10:53:02 2018] ***<br>
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-28) on 13 July 2018 17:12:50<br>
os: Linux-3.10.0-862.6.3.el7.x86_64 #1 SMP Tue Jun 26 16:32:21 UTC 2018<br>
nodename: localhost.localdomain<br>
machine: x86_64<br>
clock source: unix<br>
detected number of CPU cores: 2<br>
current working directory: /home/proj<br>
detected binary path: /home/proj/Env/proj/bin/uwsgi<br>
!!! no internal routing support, rebuild with pcre support !!!<br>
chdir() to /home/proj/work/proj<br>
your processes number limit is 4096<br>
your memory page size is 4096 bytes<br>
detected max file descriptor number: 1024<br>
lock engine: pthread robust mutexes<br>
thunder lock: disabled (you can enable it with --thunder-lock)<br>
chown(): Operation not permitted [core/utils.c line 2623]<br>
VACUUM WARNING: unix socket /run/uwsgi/proj.sock changed inode. Skip removal

用户只能将文件组设置为其所在的组。在这种情况下,您的用户
proj
不在
nginx
组中,因此不允许进行该更改。如果您将用户添加到
nginx
组(并重新登录),那么它应该可以工作

此外,将目录权限设置为
777
允许任何用户在该目录中创建和删除文件,套接字的
666
允许任何用户访问该目录。你可能不想那样。更合理的做法是将
/run/uwsgi
归root:nginx所有,模式为
770
,并且
chmod socket=660
在您的项目ini中。

我解决了这个问题。 套接字文件位于
/run/uwsgi
目录中

我授予相关项目用户在此文件夹上执行写-读-执行的权限

setfacl-mu:projuser:rwx/run/uwsgi/
根据“ivbtar”的建议,我刚刚从uwsgi.ini文件中删除了以下行,它开始工作

chown-socket = %(username):nginx
chmod-socket = 666
当我删除“chown socket=%(username):nginx”时,uwsgi启动。所以我认为这条线会引起问题。
chown-socket = %(username):nginx
chmod-socket = 666