Could not start uwsgi process
Solution 1
The key is:
error removing unix socket, unlink(): Permission denied [core/socket.c line 198]
You (very probably) previously run a uwsgi instance as root creating the unix socket file with root permissions.
Now your instance (running instead as www) is not able to re-bind() that socket as it is not able to unlink it (no permissions)
Just remove the socket file and retry.
Solution 2
I was running into a very similar issue, except it still wouldn't work even after deleting the socket file. Turns out it was because uWSGI couldn't create a new one (it only existed because I ran uwsgi myself). The infuriatingly simple solution was to chmod
the directory containing the socket file, allowing the www
user to create and modify files there. Obvious now, but maybe this will help a future poor sap bashing their head against a wall, as I have been for too many hours today.
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
Related videos on Youtube
Comments
-
discort almost 2 years
Could not start uwsgi process via ini flag
uwsgi --ini file.ini
Not any 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
file 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]
It worked early. But when I invoked
kill -9 uwsgi.pid
I could not start uwsgi process again.Why can't I start uwsgi process again?
-
Chris almost 6 yearsyes. Interestingly somehow it managed to start the service and create the socket under the limited user, but then failed to delete it again until I changed the containing dir to "write for others"
-
Cerin over 5 yearsNote, this can be the issue even if it's not root and the sock file is 777. I had accidentally created the file with an "ubuntu" user and permissions were
-rwxrwxrwx
, and that still caused this error. Deleting the sock file and then restarting uwsgi-emperor fixed this for me.