正在获取chown():从ini文件运行

时间:2018-07-16 08:26:13

标签: python django nginx uwsgi

我正在尝试运行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

3 个答案:

答案 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