Gunicorn告诉我套接字在以用户身份运行时无法连接,但是当以root身份运行时,它可以完美地工作。以下是命令。
cd /home/myuser/web/myproject
source /home/myuser/myvenv/bin/activate
/home/myuser/myvenv/bin/gunicorn myproject.wsgi:application --name myproject --workers 3 --user=myuser --group=www-data --bind=unix:/home/myuser/myvenv/run/gunicorn.sock
其中
Django项目路径:/home/myuser/web/myproject
(包含manage.py)
Python virtualenv路径:/home/myuser/myvenv
以root身份运行时:
[2017-12-27 23:25:43 +0000] [24336] [INFO] Starting gunicorn 19.7.1
[2017-12-27 23:25:43 +0000] [24336] [INFO] Listening at: unix:/home/myuser/myvenv/run/gunicorn.sock (24336)
[2017-12-27 23:25:43 +0000] [24336] [INFO] Using worker: sync
[2017-12-27 23:25:43 +0000] [24339] [INFO] Booting worker with pid: 24339
[2017-12-27 23:25:43 +0000] [24340] [INFO] Booting worker with pid: 24340
[2017-12-27 23:25:44 +0000] [24377] [INFO] Booting worker with pid: 24377
我杀死了这个进程,并确保它在ps -A | grep gunicorn
中不存在。然后我尝试运行与myuser
相同的命令。以下是运行命令时的错误。
[2017-12-27 23:21:30 +0000] [23965] [INFO] Starting gunicorn 19.7.1
[2017-12-27 23:21:30 +0000] [23965] [ERROR] Retrying in 1 second.
[2017-12-27 23:21:31 +0000] [23965] [ERROR] Retrying in 1 second.
[2017-12-27 23:21:32 +0000] [23965] [ERROR] Retrying in 1 second.
[2017-12-27 23:21:33 +0000] [23965] [ERROR] Retrying in 1 second.
[2017-12-27 23:21:34 +0000] [23965] [ERROR] Retrying in 1 second.
[2017-12-27 23:21:35 +0000] [23965] [ERROR] Can't connect to
/home/myuser/myvenv/run/gunicorn.sock
我做过的事情:
已安装所有依赖项。
确保所有文件夹都存在myuser
的正确权限。
chmod 777
同时使用Django项目和Python virtualenv路径。
chown myuser:www-data
同时使用Django项目和Python virtualenv路径。
使用/home/myuser/myvenv/run/gunicorn.sock
之外的其他路径,例如/home/myuser/myvenv/run/myproject.sock
或/home/myuser/myvenv/socket/gunicorn.sock
在gunicorn的绑定参数中/tmp/gunicorn.sock
。