ubuntu里配置nginx访问uwsgi,请求的时候502,查看日志 tail -f /var/log/nginx/error.log
报错connect() to unix:/home/ubuntu/myproject/myproject.sock failed (13: Permission denied) while connecting to upstream,。。。,困扰我半天,我决定要记录下
报错内容为:
connect() to unix:/home/ubuntu/myproject/myproject.sock failed (13: Permission denied) while connecting to upstream, client: 122.XX.XX.X, server: 175.XX.XX.XX, request: “GET / HTTP/1.1”, upstream: “uwsgi://unix:/home/ubuntu/myproject/myproject.sock:”, host: "175.XX.XX.XX:5000"
我做了如下操作,直到最后一步才搞定:
可以直接先试最后一步(从7开始)
1.使用id命令查看用户的私有组、默认组、基本,我当前用户名是ubuntu:
id www-data
输出:
uid=33(www-data) gid=33(www-data) groups=33(www-data),500(ubuntu)
2. 使用usemod的命令可以把ubuntu用户加入到www-data组里:
sudo usermod -a -G ubuntu www-data
3.再次查看:
id www-data
输出:
uid=33(www-data) gid=33(www-data) groups=33(www-data),500(ubuntu)
4.查看报错对应文件所属的用户和用户组
namei -nom /home/ubuntu/myproject/myproject.sock
输出:
f: /home/ubuntu/myproject/myproject.sock·
drwxr-xr-x root root /
drwxr-xr-x root root home
drwx------ ubuntu ubuntu ubuntu
drwxrwxr-x ubuntu ubuntu myproject
srw-rw---- ubuntu www-data myproject.sock
5.修改报错文件所属文件夹权限:
sudo chmod 755 /home/ubuntu/myproject/
6.一气之下,给报错文件的所有权限:
sudo chmod -R 777 /home/ubuntu/myproject/myproject.sock
7.查看nginx配置文件:
cat /etc/nginx/nginx.conf
输出:
8.修改nginx配置文件的用户为当前用户ubuntu:
sudo vim /etc/nginx/nginx.conf
9.重启nginx:
sudo systemctl restart nginx