我正在尝试运行nginx和uwsgi。 当我尝试使用proj用户在proj虚拟环境中使用以下命令运行uwsgi时,出现错误。当我运行uwsgi时,我看到它们是在/run/uwsgi/proj.sock中创建的proj.sock 我将/ run / uwsgi权限更改为drwxrwxrwx,以查看问题是否与权限相关。但是问题还在继续。我还检查了/ etc / passwd,没有uwsgi用户。
/ run / uwsgi的目录信息是:
drwxrwxrwx 2根根60 Jul 16 10:53 uwsgi
当我尝试用proj用户将袜子文件的所有权更改为proj虚拟环境中的proj:nginx时,出现以下错误。
chown:更改“ /run/uwsgi/proj.sock”的所有权:不允许进行操作
当我检查“ /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>
*从[2018年7月16日星期一10:53:02]开始uWSGI 2.0.15(64位)*
于2018年7月13日17:12:50版本编译为4.8.5 20150623(Red Hat 4.8.5-28)
操作系统:Linux-3.10.0-862.6.3.el7.x86_64#1 SMP周二6月26日16:32:21 UTC 2018
节点名称:localhost.localdomain
机器:x86_64
时钟来源:unix
检测到的CPU内核数:2
当前工作目录:/ home / proj
检测到的二进制路径:/ home / proj / Env / proj / bin / uwsgi
!!!没有内部路由支持,使用pcre支持进行重建!!!
chdir()到/ home / proj / work / proj
您的进程数限制为4096
您的内存页面大小为4096字节
检测到的最大文件描述符数:1024
锁定引擎:pthread健壮的互斥锁
雷电锁:已禁用(可以使用--thunder-lock启用)
chown():不允许进行操作[core / utils.c第2623行]
真空警告:Unix套接字/run/uwsgi/proj.sock更改了inode。跳过删除
我的uwsgi ini配置的proj.ini文件是:
[uwsgi]
py-autoreload = 2
专案= proj
用户名= proj
base = / home /%(用户名)
chdir =%(基本)/%(项目)
主页=%(基本)/ Env /%(项目)
模块=%(project).wsgi:应用程序
主人=真
进程=%k
uid =%(用户名)
套接字= /run/uwsgi/%(project).sock
chown-socket =%(用户名):nginx
chmod-socket = 666
vacuum = true
logto = /var/log/uwsgi/%(project).log
答案 0 :(得分:1)
用户只能将文件组设置为其所在的组。在这种情况下,您的用户proj
不在nginx
组中,因此不允许进行此更改。如果您将用户添加到nginx
组(然后重新登录),那么它应该可以工作。
此外,将目录权限设置为777
允许任何用户在该目录中创建和删除文件,而套接字的666
则允许任何用户访问它。您可能不想要那样。更为合理的做法是在项目ini中将/run/uwsgi
设置为root:nginx并拥有770
模式,并chmod-socket = 660
。
答案 1 :(得分:0)
我解决了这个问题。 套接字文件位于/ run / uwsgi目录中。
我授予了相关项目用户对此文件夹执行读写执行的权限。
setfacl -m u:projuser:rwx / run / uwsgi /
答案 2 :(得分:-1)
根据“ ivbtar”的建议,我刚刚从uwsgi.ini文件中删除了以下几行,它开始工作,
chown-socket = %(username):nginx
chmod-socket = 666