导航
导航

Nginx + uWSGI 部署 Django 出现 socket 权限不足的解决办法

按照官方文档的步骤部署 Django 应用,执行到如下步骤时,会出现 502 错误。

1
uwsgi --socket mysite.sock --wsgi-file test.py

查看 Nginx 的错误日志会看到connect() to path failed (13: Permission denied)错误。按照官方文档的解决办法进行尝试之后,还是无法解决这个问题。

经过一番折腾之后,终于找到了解决办法,特此记录。

1
2
3
4
Linux: Ubuntu 14.04 64位
Python: 2.7.6
Django: 1.7.6
Django Project path: /var/www

修改 mysite_nginx.conf 中 upstream django 模块的 server unix 路径,不要把这个 socket 文件放在项目目录下面,改成

1
server unix:///var/run/mysite.sock

放在/var/run目录下面,因为 uWSGI 需要对这个 socket 文件所在的目录具有写权限,一般情况下是放在 /var/run 或者 /tmp 下。

然后执行

1
uwsgi --socket /var/run/mysite.sock --wsgi-file test.py

之后就可以通过浏览器访问了。