无法启动 uwsgi 进程
Could not start uwsgi process
无法通过 ini 标志启动 uwsgi 进程
uwsgi --ini file.ini
没有任何 uwsgi pids
ps aux | grep uwsgi
root 31605 0.0 0.3 5732 768 pts/0 S+ 06:46 0:00 grep uwsgi
file.ini
[uwsgi]
chdir =/var/www/lvpp/site
wsgi-file =/var/www/lvpp/lvpp.wsgi
master = true
processes = 1
chmod-socket=664
socket = /var/www/lvpp/lvpp.sock
pidfile= /var/www/lvpp/lvpp.pid
daemonize =/var/www/lvpp/logs/lvpp.log
vacuum = true
uid = www
gid = www
env = DJANGO_SETTINGS_MODULE=settings
文件lvpp.log
*** Starting uWSGI 2.0.10 (32bit) on [Wed Apr 8 06:46:15 2015] ***
compiled with version: 4.4.7 20120313 (Red Hat 4.4.7-11) on 17 March 2015 21:29:09
os: Linux-2.6.32-431.29.2.el6.i686 #1 SMP Tue Sep 9 20:14:52 UTC 2014
machine: i686
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /var/www/lvpp
writing pidfile to /var/www/lvpp/lvpp.pid
detected binary path: /var/www/lvpp/site/env/bin/uwsgi
setgid() to 503
setuid() to 501
chdir() to /var/www/lvpp/site/
your processes number limit is 1812
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
error removing unix socket, unlink(): Permission denied [core/socket.c line 198]
bind(): Address already in use [core/socket.c line 230]
它很早就奏效了。
但是当我调用 kill -9 uwsgi.pid
时,我无法再次启动 uwsgi 进程。
为什么我不能再次启动 uwsgi 进程?
关键是:
error removing unix socket, unlink(): Permission denied [core/socket.c line 198]
您(很可能)之前运行一个 uwsgi 实例作为 root 创建具有 root 权限的 unix 套接字文件。
现在您的实例(运行ning 而不是 www)无法重新绑定()该套接字,因为它无法取消链接(无权限)
只需删除套接字文件并重试。
我 运行 遇到了一个非常相似的问题,只是即使在删除套接字文件后它仍然无法正常工作。事实证明这是因为 uWSGI 无法创建一个新的(它只存在因为我 运行 uwsgi 我自己)。令人恼火的简单解决方案是 chmod
包含套接字文件的目录,允许 www
用户在那里创建和修改文件。现在很明显,但也许这会帮助未来可怜的傻瓜用头撞墙,就像我今天已经做了太多个小时一样。
root@srv16:/var/run/uwsgi> ls -la
total 0
drwxr-xr-x 2 root root 60 Jul 16 07:11 . #<-- problem
drwxr-xr-x 25 root root 880 Jul 19 09:14 ..
srw-rw---- 1 www-app www-data 0 Jul 16 07:11 app.socket
#^-- no idea how www-app managed to create that file
root@simsrv16:/var/run/uwsgi> chmod 777 . #<-- fix
在主插座之外还有一个统计插座。 :)
错误日志实际上可以更具体地说明未提及的路径。
无法通过 ini 标志启动 uwsgi 进程
uwsgi --ini file.ini
没有任何 uwsgi pids
ps aux | grep uwsgi
root 31605 0.0 0.3 5732 768 pts/0 S+ 06:46 0:00 grep uwsgi
file.ini
[uwsgi]
chdir =/var/www/lvpp/site
wsgi-file =/var/www/lvpp/lvpp.wsgi
master = true
processes = 1
chmod-socket=664
socket = /var/www/lvpp/lvpp.sock
pidfile= /var/www/lvpp/lvpp.pid
daemonize =/var/www/lvpp/logs/lvpp.log
vacuum = true
uid = www
gid = www
env = DJANGO_SETTINGS_MODULE=settings
文件lvpp.log
*** Starting uWSGI 2.0.10 (32bit) on [Wed Apr 8 06:46:15 2015] ***
compiled with version: 4.4.7 20120313 (Red Hat 4.4.7-11) on 17 March 2015 21:29:09
os: Linux-2.6.32-431.29.2.el6.i686 #1 SMP Tue Sep 9 20:14:52 UTC 2014
machine: i686
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /var/www/lvpp
writing pidfile to /var/www/lvpp/lvpp.pid
detected binary path: /var/www/lvpp/site/env/bin/uwsgi
setgid() to 503
setuid() to 501
chdir() to /var/www/lvpp/site/
your processes number limit is 1812
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
error removing unix socket, unlink(): Permission denied [core/socket.c line 198]
bind(): Address already in use [core/socket.c line 230]
它很早就奏效了。
但是当我调用 kill -9 uwsgi.pid
时,我无法再次启动 uwsgi 进程。
为什么我不能再次启动 uwsgi 进程?
关键是:
error removing unix socket, unlink(): Permission denied [core/socket.c line 198]
您(很可能)之前运行一个 uwsgi 实例作为 root 创建具有 root 权限的 unix 套接字文件。
现在您的实例(运行ning 而不是 www)无法重新绑定()该套接字,因为它无法取消链接(无权限)
只需删除套接字文件并重试。
我 运行 遇到了一个非常相似的问题,只是即使在删除套接字文件后它仍然无法正常工作。事实证明这是因为 uWSGI 无法创建一个新的(它只存在因为我 运行 uwsgi 我自己)。令人恼火的简单解决方案是 chmod
包含套接字文件的目录,允许 www
用户在那里创建和修改文件。现在很明显,但也许这会帮助未来可怜的傻瓜用头撞墙,就像我今天已经做了太多个小时一样。
root@srv16:/var/run/uwsgi> ls -la
total 0
drwxr-xr-x 2 root root 60 Jul 16 07:11 . #<-- problem
drwxr-xr-x 25 root root 880 Jul 19 09:14 ..
srw-rw---- 1 www-app www-data 0 Jul 16 07:11 app.socket
#^-- no idea how www-app managed to create that file
root@simsrv16:/var/run/uwsgi> chmod 777 . #<-- fix
在主插座之外还有一个统计插座。 :) 错误日志实际上可以更具体地说明未提及的路径。