Python Getting chown():从ini文件运行uwsgi时不允许执行操作
我正在尝试运行nginx和uwsgi。 当我尝试在proj虚拟环境中与proj用户一起使用以下命令运行uwsgi时,我得到一个错误。当我运行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
/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