当使用Django Rest Framework + nginx时,遇到“connect() to /hoge.sock failed (13: Permission denied)”错误的解决方法是什么?

发生的事件

在Amazon EC2上的Ubuntu上进行Django Rest Framework的部署工作时,访问时发生了以下错误。

image-100.png

确认nginx和gunicorn是否已启动

$ systemctl status nginx
# 以下のような記述があれば問題なし
Active: active (running) since Sat 2022-07-02 10:13:05 UTC; 21min ago

$ systemctl status gunicorn
# 確認点は同上

查看nginx日志

$ tail /var/log/nginx/error.log (查看 /var/log/nginx/error.log 文件的尾部内容)

2022/07/02 06:20:03 [crit] 6037#6037: 
*368 connect() to unix:/home/ubuntu/hoge/hoge.sock failed (13: Permission denied) while connecting to upstream, 
client: xxx.xxx.xxx.xxx, server: xxx.xxx.xxx.xxx, request: "GET / HTTP/1.1", 
upstream: "http://unix:/home/ubuntu/hoge/hoge.sock:/", host: "35.79.89.205:80"

由于权限被拒绝,需要在 `/etc/nginx/nginx.conf` 中将 nginx 执行用户更改为 root(或者 DRF 的所有者)。

user www-data;

请以中文本地方式改写以下内容,只需要提供一种选项:

user root;

修正后,使用命令”$ sudo systemctl restart nginx”重新启动nginx,页面正确显示。

广告
将在 10 秒后关闭
bannerAds