我相信我的设置中的其他一切都是正确的 . 文件/var/log/nginx/error.log有许多以下错误:
2015/12/19 18:41:58 [暴击] 10850#0:* 23连接()到unix:/home/root/myproject/myproject.sock失败 (13: Permission denied) 连接上游时,客户端:[[my ip]] ,server:[[server ip]],request:"GET / HTTP/1.1",upstream:“_ http://unix:/home/root/myproject/myproject.sock:/ ", host: " [[server ip]]”
命令:
/home/root/myproject ls -l /home/root/classNote/classNote.sock
输出:
srwxrwxrwx 1 root www-data 0 Dec 19 18:17 /home/root/myproject/myproject.sock
编辑:Andrei的评论回复:
命令:
ps ax | grep gunicorn
输出:
847 ? Ss 0:00 /home/root/myproject/myprojectEnv/bin/python myprojectEnv/bin/gunicorn --workers 3 --bind unix:/home/root/myproject/myproject.sock myproject.wsgi:application
921 ? S 0:00 /home/root/myproject/myprojectEnv/bin/python myprojectEnv/bin/gunicorn --workers 3 --bind unix:/home/root/myproject/myproject.sock myproject.wsgi:application
923 ? S 0:00 /home/root/myproject/myprojectEnv/bin/python myprojectEnv/bin/gunicorn --workers 3 --bind unix:/home/root/myproject/myproject.sock myproject.wsgi:application
928 ? S 0:00 /home/root/myproject/myprojectEnv/bin/python myprojectEnv/bin/gunicorn --workers 3 --bind unix:/home/root/myproject/myproject.sock myproject.wsgi:application
1136 pts/0 S+ 0:00 grep gunicorn
2 回答
似乎存在权限问题以root身份启动nginx服务,因为root有权访问我的project.sock
然后
但是以root身份启动nginx并不是一个好主意 . 您可以尝试更改当前用户的权限
我可以建议你一个工作正常的替代方案 . 让shell脚本处理所有这些 . 像这样创建一个shell脚本(*表示注释中需要)
我之前有一个非常类似的问题(也是根据digitalocean.com上提到的教程进行的),我的意思是套接字无法工作,而且我得到了502错误 .
我的解决方案是从套接字绑定转移到绑定普通IP地址 .
在virtualenv(在“manage.py”旁边)里面我有一个gunicorn.py文件:(注意:我使用3.4版本)
该脚本运行Gunicorn而不激活virtualenv(命令“bin / gunicorn”)和后台(“&”) .
注意:如果您不使用virtualenv而不是从上面的脚本中删除“bin /” .
要在启动PC并登录后调用该脚本,请将此行添加到最后的“.profile”文件中 . (它在你的主目录中)
在nginx文件中,你应该有这部分代码:
请记住,IP地址127.0.0.1:8000是保留的 . 因此,如果您想运行Django开发服务器,您有两个选择:
通过命令"ps aux | grep gunicorn"和"kill -9 [PID]"关闭Gunicorn然后正常运行命令"python3.4 manage.py runserver"
或者在不同的IP和端口上运行Django开发服务器,例如"python3.4 manage.py runserver 0.0.0.0:8001"
这个解决方案适合我 .