ivb*_*tar 2 python django nginx uwsgi
我正在尝试运行 nginx 和 uwsgi。当我尝试使用 proj 用户在我的 proj 虚拟环境中使用以下命令运行 uwsgi 时,出现错误。当我运行 uwsgi 时,我看到proj.sock在/run/uwsgi/proj.sock
我更改了/run/uwsgi权限drwxrwxrwx 以查看问题是否与权限相关。但是问题还是出现了。我还检查了/etc/passwd没有 uwsgi 用户。
的目录信息/run/uwsgi是:
drwxrwxrwx 2 root root 60 Jul 16 10:53 uwsgi
Run Code Online (Sandbox Code Playgroud)
当我尝试将 proj 用户的 sock 文件的所有权更改为 proj 虚拟环境中的 proj:nginx 时,出现以下错误。
chown: changing ownership of ‘/run/uwsgi/proj.sock’: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
当我检查/run/uwsgi/proj.sock 文件时,它是proj:proj但它应该更改为proj:nginx. 这个操作可以用root手动完成。但不能用 proj 用户完成。
运行以下命令:
uwsgi --ini /etc/uwsgi/sites/proj.ini
Run Code Online (Sandbox Code Playgroud)
错误 :
[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
Run Code Online (Sandbox Code Playgroud)
我proj.ini的 uwsgi ini 配置文件是:
[uwsgi]
py-autoreload = 2
project = proj
username = proj
base = /home/%(username)
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = %k
uid = %(username)
socket = /run/uwsgi/%(project).sock
chown-socket = %(username):nginx
chmod-socket = 666
vacuum = true
#logto = /var/log/uwsgi/%(project).log
Run Code Online (Sandbox Code Playgroud)
用户只能将文件的组设置为他所在的组。在这种情况下,您的用户proj不在该nginx组中,因此不允许进行更改。如果您将用户添加到nginx组(并重新登录),那么它应该可以工作。
此外,将目录权限设置为777允许任何用户在该目录中创建和删除文件,并且666套接字允许任何用户访问它。你可能不想那样。更合理的是/run/uwsgi由 root:nginx 拥有 mode 770,并chmod-socket = 660在您的项目中。