首页 > 解决方案 > 502 Bad Gateway,我弄乱了用于 django 部署的 digitalocean ubuntu 上的用户和组权限

问题描述

  1. 我在 digitalocen 上成功创建了一个 droplet,一个 ubuntu 18.04 服务器。
  2. 按照安装 digitalocean 的指南运行 gunicorn、nginx、django 等,并使用我的 ip 地址(即防火墙、gunicorn 和 nginx)在浏览器上成功运行网站,并且一切都配置正确。
  3. 在将图像上传到媒体文件夹的测试期间,我收到错误“权限被拒绝”(POST 错误)。
  4. 在谷歌上找到以下代码并认为它​​解决了权限相关问题:https ://www.semicolonworld.com/question/55551/django-errno-13-permission-denied-39-var-www-media-animals-用户上传-39
sudo groupadd varwwwusers
sudo adduser www-data varwwwusers
sudo chgrp -R varwwwusers /var/www/
sudo chmod -R 760 /var/www/

但是上面的代码搞砸了一切并遇到了“502 Bad Gateway”。

我对 Linux 部署不是很熟悉。有人可以帮我调查和解决这个问题。我想我搞砸了用户,组权限。

我怎样才能解决这个问题,或者我怎样才能恢复我所做的事情,或者是否有任何我可以查看和调查的活动日志。

我检查了error.log并能够看到'connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connection to upstream'

我在这里先向您的帮助表示感谢。

标签: djangoubuntunginxgunicorndigital-ocean

解决方案


我想问题在于,通过运行,sudo chmod -R 760 /var/www/您已经禁止该文件夹的非所有者从该目录读取、写入和执行文件。然后,由于 uwsgi 进程不属于 www-data 组(通常),uwsgi 连接被拒绝。

解决此问题的最简单方法是运行sudo chmod -R 766 /var/www/- 这将授予任何人写入和读取权限(chmod -R 764也应该工作并且更安全 - 它只允许为非所有者读取文件)。或者,您可以找出运行 uwsgi 的用户的名称,并授予他从目录中读取文件的权限。请参阅chmod手册(或谷歌它)以供参考。


推荐阅读